$settings __construct($this->session->getSessionDirectoryPath())]]> $cb $started $started[$k] getFuture()]]> $errors[$t] $started[$k] $app $errors[$t] $errors[$t] Logger::$default getMessage wakeup API API API API API API API API API API API API API API API API API API API serializeSession($this)]]> logger $eventHandler loop loop $started $errors[$t] $errors[$t] $errors[$t] getMessage isInited setEventHandler $data $method $namespace $params $signature reflectionClasses['MTProto']]]> $type isset($arr1['pow']) <=> isset($arr2['pow']))]]> blacklistHard['channels.getMessages']]]> blacklistHard['messages.getHistory']]]> blacklistHard['messages.getMessages']]]> blacklist[$data['method']]]]> special[$type]]]> special[$type]]]> $base $constructor $data $namespace $namespace $param $param $param blacklist]]> blacklistHard]]> string string $params getName() === 'self' ? $this->reflectionClasses['API'] : $type->getName()]]> $base $base 'string', 'bytes' => 'string', 'waveform' => 'array', 'int' => 'int', 'long' => 'int', 'strlong' => 'int', 'double' => 'float', 'float' => 'float', 'Bool' => 'bool', 'true' => 'bool', 'InputMessage' => 'array|int', 'InputMedia' => '\\danog\\MadelineProto\\EventHandler\\Media|array|string', 'InputCheckPasswordSRP' => 'string|array', 'DataJSON' => 'mixed', 'JSONValue' => 'mixed', default => $this->special[$type] ?? 'array' }]]> 'string', 'bytes' => 'string', 'waveform' => 'array', 'int' => 'int', 'long' => 'int', 'strlong' => 'int', 'double' => 'float', 'float' => 'float', 'Bool' => 'bool', 'true' => 'bool', 'InputMessage' => 'array|int', 'InputMedia' => '\\danog\\MadelineProto\\EventHandler\\Media|array|string', 'InputCheckPasswordSRP' => 'string|array', 'DataJSON' => 'mixed', 'JSONValue' => 'mixed', default => $this->special[$type] ?? 'array' }]]> APIStart self::call($a) self::call($b) self::call($callable) self::call($promise) self::call($promise) self::timeout($promise, $timeout) $callable instanceof Generator $callable ]]> $v instanceof Generator ? self::consumeGenerator($v) : $v]]> all any first some wait $lines $lines $lines $lines $res $res $failureCb $lines[\count($lines) - 1] $lines[\count($lines) - 1] $result $yielded $yielded $yielded $yielded $yielded $yielded TReturn|TReturnAlt string $lines[\count($lines) - 1] self::timeout($promise, $timeout) \is_callable($callable) $updates $id $updates $message API->methodCallAsyncRead( isset($message['media']['_']) && $message['media']['_'] !== 'messageMediaWebPage' ? 'messages.sendMedia' : 'messages.sendMessage', \array_merge($message, ['peer' => $peer]), ['FloodWaitLimit' => 2*86400] )]]> $message $id broadcasts[$id]]]> broadcasts[$id]]]> broadcasts[$id]?->cancel()]]> broadcasts[$id]?->getProgress()]]> $value filter->whitelist) && !\in_array($peer, $this->filter->whitelist, true)]]> $e getStream()]]> $API $ctx $datacenter $logger $shared $body $body $body $body $body $singleMedia complete refreshNext refreshNext $uri $auth_key $data $data $fileName $fileName $fp $new_session $options $options $session $settings $settings $settings $settings $tdesktop_base_path $tdesktop_key $tdesktop_user_base_path pyrogram tdesktop tdesktop_decrypt tdesktop_fopen tdesktop_fopen_encrypted tdesktop_md5 tdesktop_read_bytearray telethon zerobias $aes_iv $aes_key $auth_key $data $data $data $fp $fp $info $info $main $main $main $main $main $main $main $main $main $main $main $main $main $main $main $main $main $main $main $main $main $main $main $main $main $main_dc_id $new_session $res $res $salt $salt $salt $settings $settings $settings $settings self::tdesktop_md5($dataName) self::tdesktop_read_bytearray( self::tdesktop_decrypt($encryptedKey, $passKey), ) $dcs $data $data $data $dataName $dc $encryptedInfo $encryptedKey $encryptedKey $f $info $key $length $main $main $res $salt $salt $session $session $session $sessions self::$tdesktop_key $options $salt $salt $part_one_md5 $part_one_md5 $dc $main_dc_id notFalse break; \stream_get_contents \stream_get_contents \stream_get_contents \stream_get_contents \stream_get_contents \stream_get_contents \stream_get_contents \stream_get_contents \stream_get_contents \stream_get_contents \stream_get_contents \stream_get_contents \stream_get_contents $part_two_md5 $user_id $socket instanceof Connection \is_int($id) dclist[$test][$ipv6]]]> dclist[$test][$ipv6]]]> dclist[$test][$ipv6]]]> dclist[$test][$ipv6]]]> dclist[$test][$ipv6]]]> dclist[$test][$ipv6][$dc_number]]]> dclist[$test][$ipv6][$dc_number]]]> dclist[$test][$ipv6][$dc_number]['secret']]]> dclist[$test][$ipv6][$dc_number]['tcpo_only']]]> dclist[$test][$ipv6][$id]]]> $changed[$id] $changed[$id] dclist[$test][$ipv6]]]> dclist[$test][$ipv6][$id]]]> sockets[$id]]]> $address $combo[\count($combo) - 2][1] $data $data $dc $dcs $extra $id $ipv6 $only $port $port $subdomain $subdomain bool $address $address $address $port $port $port $port $port $subdomain $subdomain $subdomain $subdomain sockets]]> dclist[$test][$ipv6][$dc]['cdn'] ?? false]]> dclist[$test][$ipv6][$dc]['cdn'] ?? false]]> $default[2] $default[2] $dohWrapper $socket instanceof DataCenterConnection settings->getTransport()]]> \is_int($key) $API $connectionsPromise $ctx $datacenter $aes_iv $aes_key $exported_authorization $message_data $exported_authorization $message_data $res bind hasTempAuthKey() && $authorized_socket->hasPermAuthKey() && $authorized_socket->isAuthorized() && $this->API->authorized === \danog\MadelineProto\API::LOGGED_IN]]> permAuthKey =& $this->API->datacenter->getDataCenterConnection($dc)->permAuthKey]]> $value getCache $newValues[$key] ]]> $promises[$property] $property $result $type $result $config $config withDatabase(null)]]> getIdleTimeout()]]> getMaxConnections()]]> query("SHOW VARIABLES LIKE 'max_connections'")->fetchRow()['Value']]]> $config $config withDatabase(null)]]> getIdleTimeout()]]> getMaxConnections()]]> $previous $settings $settings $settings $instance $v $value $value $v]]> \json_decode($value, true, 256, JSON_THROW_ON_ERROR)]]> $dbSettings $dbSettings $dbSettings $dbSettings $dbSettings $dbSettings $dbSettings $dbSettings $deserializer $deserializer $deserializer $deserializer $deserializer $deserializer $deserializer $deserializer $serializer $serializer $serializer $serializer $serializer $serializer $serializer $serializer $table $table $table $table $table $table $table $table $key $value $value static $old setSettings new static() MemoryArray MemoryArray $array $flags $flags | self::STD_PROP_LIST $flags $settings dbSettings]]> $stmt $pdo $pdo $value $value $value $v $v $v $v $v $v $v $value \igbinary_unserialize(\hex2bin($v))]]> \unserialize(\hex2bin($v))]]> \json_decode(\hex2bin($value), true, 256, JSON_THROW_ON_ERROR)]]> $v $v $v $v $value dbSettings]]> $v $v $v $v $v $value $v]]> \json_decode($value, true, 256, JSON_THROW_ON_ERROR)]]> $v $value dbSettings]]> $db serializer)($value)]]> $key $key $key $key $key $key $key $value db->get($key)]]> $value $stmt $db $db $db $db $db $db $value $value fetchRow()['count']]]> $host $host $host $host $port $port $scheme $scheme $host[0] $builtUri $uri $extra $orig[1][0] === BufferedRawStream::class $any $td $types $name $otype settings['description']]]> settings['output_dir']]]> settings['output_dir']]]> settings['output_dir']]]> templates[$constructor]]]> templates[$name]]]> templates[$type]]]> templates['Type']]]> types]]> $data $data $keys $name $otype settings['template']]]> templates['types-index']]]> $tdDescriptions DocsBuilder DocsBuilder DocsBuilder $constructor $description $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] $ptype $ptype $ptype types[$php_type]['constructors']]]> $type $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] TL->getConstructors()->findByType(\str_replace('%', '', $param[$type_or_subtype]))['predicate']]]> TL->getConstructors()->findByType(\str_replace('%', '', $ptype))['predicate']]]> TL->getDescriptionsRef()['constructors'][$constructor]['description']]]> TL->getDescriptionsRef()['constructors'][$constructor]['description']]]> TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]> TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]> types[$php_type]]]> types[$php_type]['constructors']]]> $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] TL->getDescriptionsRef()['constructors'][$constructor]]]> TL->getDescriptionsRef()['constructors'][$constructor]]]> TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]> types[$php_type]]]> types[$php_type]]]> types[$php_type]['constructors']]]> $got[$id] $got[$id] TL->getConstructors()->by_id[$id]]]> TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]> TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]> TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]> TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]> TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]> $constructor $data $description $id $param $param $param[$type_or_subtype] $ptype $ptype TL->getDescriptionsRef()['constructors'][$constructor]['description']]]> TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]> $type $param[$type_or_subtype] TL->getDescriptionsRef()['constructors'][$constructor]['description']]]> TL->getDescriptionsRef()['constructors'][$constructor]['params'][$param['name']]]]> any]]> $ppptype $ppptype $predicate $pwr_params $pwr_params $pwr_params $pwr_params $bots $description $human_ptype $human_ptype $method $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] tdDescriptions['methods'][$method]['description'] ?? '']]> types[$php_type]['methods']]]> $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] tdDescriptions['methods'][$method]]]> tdDescriptions['methods'][$method]]]> tdDescriptions['methods'][$method]]]> tdDescriptions['methods'][$method]['description']]]> tdDescriptions['methods'][$method]['description']]]> tdDescriptions['methods'][$method]['description']]]> tdDescriptions['methods'][$method]['params']]]> tdDescriptions['methods'][$method]['params'][$param['name']]]]> types[$php_type]]]> types[$php_type]['methods']]]> $param[$type_or_subtype] $param[$type_or_subtype] $param[$type_or_subtype] tdDescriptions['methods'][$method]]]> tdDescriptions['methods'][$method]]]> tdDescriptions['methods'][$method]['params'][$param['name']]]]> types[$php_type]]]> types[$php_type]]]> types[$php_type]['methods']]]> $new[$method] $new[$method] tdDescriptions['methods'][$method]['params'][$param['name']]]]> tdDescriptions['methods'][$method]['params'][$param['name']]]]> tdDescriptions['methods'][$method]['params'][$param['name']]]]> $bots $code $code $data $description $error $error $errors $human_ptype $id $id $id $id $method $method $param $param $ppptype $ppptype $ptype $suberrors $suberrors $ppptype $ptype $ptype $ptype $ptype any]]> tdDescriptions['methods'][$method]['description']]]> tdDescriptions['methods'][$method]['params'][$param['name']]]]> $id $json_params $json_params $json_params $ppptype $ppptype $pwr_params $pwr_params $pwr_params $class getReportPeers())]]> getReportPeers())]]> $newHandlers $pluginsTemp self::$checkedPaths[$p] $closure $newHandlers $newMethods $pluginsTemp [] $methods[$update] $methods[$update] $methods[$update] $constructor $constructor $method $methods[$update][] $onAny $plugin $pluginsNew[$class] $r $r $r $r $update [$newMethods, $newHandlers] self::$checkedPaths[$p] $recurse($p) bool internalStart isPluginEnabled $closure($loop) ?? false $closure($loop) ?? false periodicLoops]]> ]]> wrapper->getAPI()]]> getParameters()[0]->getType()]]> self::$pluginCache \array_values require $file new $class $handler $pluginsTemp $r replyCache]]> replyCache]]> $messages[0] $messages[0] getClient()->methodCallAsyncRead( API::isSupergroup($this->chatId) ? 'channels.getMessages' : 'messages.getMessages', [ 'channel' => $this->chatId, 'id' => [['_' => 'inputMessageReplyTo', 'id' => $this->id]] ] )['messages']]]> $messages $replyTo chatId]]> date]]> id]]> mentioned]]> out]]> replyToMsgId]]> replyToMsgId]]> replyToMsgId]]> replyToScheduled]]> senderId]]> silent]]> threadId]]> threadId]]> topicId]]> topicId]]> ttlPeriod]]> $replyCache chatInstance]]> queryId]]> userId]]> bool getClient()->methodCallAsyncRead( 'messages.setBotCallbackAnswer', [ 'query_id' => $this->queryId, 'message' => $message, 'alert' => $alert, 'url' => $url, 'cache_time' => $cacheTime, ], )]]> $adminIds $peerResolved $peersResolved $peerResolved $matches $matches \preg_match $peerResolved creationDate]]> spoiler]]> ttl]]> botApiFileId]]> botApiFileUniqueId]]> $thumbs $videoThumbs duration]]> AbstractAudio AbstractAudio emoji]]> stickerset]]> AbstractSticker AbstractSticker duration]]> height]]> supportsStreaming]]> width]]> AbstractVideo AbstractVideo AnimatedSticker AnimatedSticker performer]]> title]]> Audio Audio free]]> textColor]]> CustomEmoji CustomEmoji Document Document $t height]]> width]]> $t]]]> DocumentPhoto DocumentPhoto $t $t]]]> Gif Gif $coords x]]> y]]> zoom]]> MaskSticker MaskSticker hasStickers]]> Photo Photo RoundVideo RoundVideo StaticSticker StaticSticker Sticker Sticker $t $t]]]> Video Video duration]]> VideoSticker VideoSticker waveform]]> Voice Voice entities]]> entities]]> getClient()->wrapMessage($this->getClient()->extractMessage($result))]]> $result $result $result message]]> message]]> message]]> message]]> protected]]> $result[0] message[0]]]> message[0]]]> $fwdFrom $r $result $result $result $result editDate]]> entities]]> fromScheduled]]> imported]]> message]]> protected]]> psaType]]> viaBotId]]> string reactions]]> Message getClient()->wrapMessage($this->getClient()->extractMessage($result))]]> $html $htmlTelegram Message wrapMedia($rawMessage['media'], $this->protected) : null]]> signature]]> views]]> ChannelMessage ChannelMessage ChannelMessage GroupMessage GroupMessage GroupMessage PrivateMessage PrivateMessage PrivateMessage DialogCreated DialogMemberLeft DialogMembersJoined DialogMessagePinned DialogPhotoChanged DialogTitleChanged getName()]]]> $result $result messageId]]> Message getIdInternal($rawCallback['peer'])]]> gameShortName]]> getName()]]]> severe ? 'static_analysis_severe' : 'static_analysis_minor']]]> $code $errfile $errline $errno $errstr $file $line $message $code $errstr $errstr $errstr $errstr $message $message file]]> file]]> file]]> line]]> line]]> $maps __invoke $id MADELINE_PHAR_GLOB MADELINE_PHAR_VERSION MADELINE_PHP MADELINE_PHP MADELINE_RELEASE_URL self::$map self::$map ??= new WeakMap \danog\MadelineProto\AsyncTools::after($a, $b) \danog\MadelineProto\AsyncTools::all($promises) \danog\MadelineProto\AsyncTools::any($promises) \danog\MadelineProto\AsyncTools::call($promise) \danog\MadelineProto\AsyncTools::first($promises) \danog\MadelineProto\AsyncTools::some($promises) \danog\MadelineProto\AsyncTools::timeout($promise, $timeout) \danog\MadelineProto\AsyncTools::timeoutWithDefault($promise, $timeout, $default) \danog\MadelineProto\AsyncTools::wait($promise) loop loop wrapper->getAPI()->getDownloadInfo($messageMedia)]]> wrapper->getAPI()->getEventHandler($class)]]> T|EventHandlerProxy|__PHP_Incomplete_Class|null array{ * ext: string, * name: string, * mime: string, * size: int, * InputFileLocation: array, * key_fingeprint?: string, * key?: string, * iv?: string, * thumb_size?: string * } $data MTProtoToTd MTProtoToTdcli all any completeCall completePhoneLogin confirmCall downloadToCallable downloadToDir downloadToStream end first loop phoneLogin requestCall requestSecretChat some start tdToTdcli upload uploadEncrypted uploadFromCallable uploadFromStream uploadFromTgfile uploadFromUrl wait string|false wrapper->getAPI()->downloadToFile($messageMedia, $file, $cb)]]> wrapper->getAPI()->downloadToFile($messageMedia, $file, $cb)]]> account ??= new \danog\MadelineProto\Namespace\AbstractAPI('account')]]> auth ??= new \danog\MadelineProto\Namespace\AbstractAPI('auth')]]> bots ??= new \danog\MadelineProto\Namespace\AbstractAPI('bots')]]> channels ??= new \danog\MadelineProto\Namespace\AbstractAPI('channels')]]> chatlists ??= new \danog\MadelineProto\Namespace\AbstractAPI('chatlists')]]> contacts ??= new \danog\MadelineProto\Namespace\AbstractAPI('contacts')]]> folders ??= new \danog\MadelineProto\Namespace\AbstractAPI('folders')]]> help ??= new \danog\MadelineProto\Namespace\AbstractAPI('help')]]> langpack ??= new \danog\MadelineProto\Namespace\AbstractAPI('langpack')]]> messages ??= new \danog\MadelineProto\Namespace\AbstractAPI('messages')]]> payments ??= new \danog\MadelineProto\Namespace\AbstractAPI('payments')]]> phone ??= new \danog\MadelineProto\Namespace\AbstractAPI('phone')]]> photos ??= new \danog\MadelineProto\Namespace\AbstractAPI('photos')]]> stats ??= new \danog\MadelineProto\Namespace\AbstractAPI('stats')]]> stickers ??= new \danog\MadelineProto\Namespace\AbstractAPI('stickers')]]> stories ??= new \danog\MadelineProto\Namespace\AbstractAPI('stories')]]> updates ??= new \danog\MadelineProto\Namespace\AbstractAPI('updates')]]> upload ??= new \danog\MadelineProto\Namespace\AbstractAPI('upload')]]> users ??= new \danog\MadelineProto\Namespace\AbstractAPI('users')]]> $callback MTProtoToBotAPI MTProtoToTd MTProtoToTdcli acceptCall acceptSecretChat botAPIToMTProto botLogin broadcastCustom broadcastForwardMessages broadcastMessages callStatus cancelBroadcast complete2faLogin completeCall completePhoneLogin completeSignup confirmCall discardCall discardSecretChat downloadToBrowser downloadToCallable downloadToDir downloadToFile downloadToResponse downloadToStream exportAuthorization extractMessage extractMessageId extractMessageUpdate extractUpdates fileGetContents fullChatLastUpdated fullGetSelf getAdminIds getAllMethods getAuthorization getBroadcastProgress getCachedConfig getCall getCdnConfig getConfig getDNSClient getDhConfig getDialogIds getDialogs getDownloadInfo getDownloadLink getEventHandler getFileInfo getFullDialogs getFullInfo getHTTPClient getHint getId getInfo getLogger getMethodNamespaces getMethodsNamespaced getPlugin getPropicInfo getPsrLogger getPwrChat getSecretChat getSelf getSessionName getSettings getSponsoredMessages getTL getType getUpdates getWebMessage hasAdmins hasEventHandler hasPlugin hasReportPeers hasSecretChat importAuthorization initSelfRestart isForum isIpc isIpcWorker isPremium isSelfBot isSelfUser logger loop peerIsset phoneLogin processDownloadServerPing qrLogin refreshFullPeerCache refreshPeerCache rekey report reportMemoryProfile requestCall requestSecretChat resetUpdateState restart secretChatStatus sendCustomEvent sendDocument sendMessage sendMessageToAdmins sendPhoto setNoop setReportPeers setWebhook setupLogger start stop subscribeToUpdates tdToMTProto tdToTdcli tdcliToTd unsetEventHandler update2fa updateSettings upload uploadEncrypted uploadFromCallable uploadFromStream uploadFromTgfile uploadFromUrl viewSponsoredMessage wrapMedia wrapMessage wrapUpdate setWrapper setWrapper setWrapper setWrapper setWrapper setWrapper setWrapper setWrapper setWrapper setWrapper setWrapper setWrapper setWrapper setWrapper setWrapper setWrapper setWrapper setWrapper setWrapper $class downloadToCallable downloadToDir downloadToFile loop methodCallAsyncRead uploadFromCallable uploadFromTgfile uploadFromUrl __call(...)]]> $callable $callable $dir $file $media $media $r $r $r $url Client|MTProto self::$instances[$session] ?? MTProto::giveInstanceBySession($session) self::$instances[$session] ?? MTProto::giveInstanceBySession($session) getException()]]> $id $payload requests[$id]]]> $payload [$id, $payload] logger $logger $server $promise $previous type($this->message, $this->code, $previous)]]> tlTrace]]> code]]> API]]> API ??= Client::giveInstanceBySession($this->session)]]> API ??= Client::giveInstanceBySession($this->session)]]> exception ? $this->exception->getException() : null]]> ?Throwable $value $value string \MADELINE_PHP $address (int) $port $session $session $arguments $arguments $arguments exit(1); exit(1); exit(1); include $autoloadPath $payload $payload[1] $result disconnect $callback $server $settings $payload === self::SHUTDOWN $payload === self::SHUTDOWN unwrap ServerCallback ServerCallback $args $this->__call($id, $args)]]> $data copy unwrap callbacks[$payload[0]]]]> remoteId]]> $payload $result callbacks]]> $data Wrapper Wrapper new $class($this, $ids) callbackIds[] = &$callback]]> callbackIds[] = &$callback]]> $payload bool string __call('isRequested')]]> __call('unsubscribe', [$callback])]]> bool IteratorAggregate ?string bool __call('isReadable')]]> __call('read')]]> int bool __call('isWritable')]]> getEventHandler()::class]]> $param colors[$level]]]> $optional $optional $optional $optional $optional $optional $optional $optional getResource()]]> mode === self::FILE_LOGGER ? $this->optional : Magic::$script_cwd.DIRECTORY_SEPARATOR.'MadelineProto.log']]> optional]]> optional]]> stdout->getResource()]]> $optional $optional $optional $optional $optional $optional $optional optional]]> optional]]> $optional optional, [$param, $level])]]> $colors $stdout colors]]> colors]]> colors]]> colors]]> colors]]> colors]]> colors]]> colors]]> $message_id $message_id connection->new_outgoing[$message_id]]]> connection->outgoing_messages[$message_id]]]> connection->outgoing_messages[$message_id]]]> $message_id $message_id $reply[] $reply[] $reply[] getMsgId()]]> getSent()]]> getSent()]]> API->settings]]> getRpc CheckLoop CheckLoop CheckLoop CheckLoop CheckLoop API]]> $message_id $reply CleanupLoop CleanupLoop CleanupLoop CleanupLoop CleanupLoop connection->msgIdHandler?->cleanup()]]> connection->msgIdHandler]]> HttpWaitLoop getSettings PingLoop PingLoop PingLoop PingLoop shared]]> $aes_iv $aes_key $deserialized $message_data_length $message_length $seq_no $deserialized $message_data_length $message_length $seq_no $message_data_length $message_data_length $message_data_length bufferRead($payload_length)]]> bufferRead(4)]]> bufferRead(4)]]> bufferRead(8)]]> $message_data $message_data $message_key $payload_length $payload_length getReadBuffer ReadLoop $aes_iv $aes_key $body $body $message_data connection->call_queue[$queueId]]]> connection->call_queue[$queueId]]]> connection->call_queue[$queueId]]]> connection->call_queue[$queueId][$key]]]> connection->call_queue[$queueId][$message_id]]]> connection->call_queue[$queueId][$key]]]> $body $body $message_data $message_data $seq_no $seq_no $message_data getSerializedBody()]]> getSerializedBody()]]> connection->call_queue]]> connection->call_queue]]> getSerializedBody()]]> connection->session_id]]> getWriteBuffer getWriteBuffer $messages[0] WriteLoop shared->isHttp() && empty($this->connection->pendingOutgoing)]]> $MTmessage $callable()]]> $callable()]]> $msg $messages $update feed feedSingle $channelId $channelId $message $update $update $update feedSingle($update)]]]> API->feeders[$channelId]]]> API->feeders[$channelId]]]> $channelId $channelId $channelId $computed $message $mid $pts_count state]]> $update $update $update $pts_count $state $updater FeedLoop $from $parsedUpdates $updates $update $update SecretFeedLoop $updates $seq_end $seq_start $update $options $seq_end $seq_start pendingWakeups]]> state]]> $update feeder->feed($updates['updates'])]]> checkSeq feed $options $updates API->feeders[$channelId]]]> $difference $difference $difference $difference $difference API->authorization['user']['bot']]]> API->feeders[$channelId]]]> $channelId $difference $difference $encrypted $encrypted $request_pts $result $result $result $result $result $state $timeout ?float date pts pts pts pts pts qts qts qts update update update update update update update $request_pts $result $result pts()]]> pts()]]> pts() + 1]]> feeder->feed($difference['other_updates'])]]> feeder->feed($difference['other_updates'])]]> feeder->feed($difference['other_updates'])]]> $timeout $timeout date pts pts pts pts pts qts qts qts update update update update update update update API->authorization['user']]]> API->authorization['user']['bot']]]> $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $difference $feeder UpdateLoop API->feeders[$channelId]?->resume()]]> datacenter)]]> TL)]]> settings)]]> settings)]]> dcList, $this->settings->getConnection())]]> $callbacks $callbacks getInputConstructor(...), ), \array_fill_keys( [ 'User', 'Chat', 'Peer', 'InputDialogPeer', 'InputNotifyPeer', ], $this->getInfo(...), ), \array_fill_keys( [ 'InputMedia', 'InputDocument', 'InputPhoto', ], $this->getFileInfo(...), ), [ 'InputFileLocation' => $this->getDownloadInfo(...), 'InputPeer' => $this->getInputPeer(...), 'InputCheckPasswordSRP' => function (string $password): array { return (new PasswordCalculator($this->methodCallAsyncRead('account.getPassword', [])))->getCheckPassword($password); }, ], )]]> array serializeSession $key $key $key $key $options TL]]> TL]]> datacenter->currentDatacenter]]> methodCallAsyncRead('account.getPassword', [])]]> methodCallAsyncRead('phone.getCallConfig', [])]]> settings]]> settings->getIpc()]]> settings->getSchema()]]> settings->getSerialization()->applyChanges()->getInterval()]]> $username $callbacks $callbacks $id referenceDatabase->init(...)]]> authorization['user']['bot']]]> authorization['user']['bot']]]> authorization['user']['bot']]]> authorization['user']['id']]]> secret_chats[$chat]['InputEncryptedChat']]]> $username methodCallAsyncRead('help.getCdnConfig', [], ['datacenter' => $this->authorized_dc]))['public_keys']]]> methodCallAsyncRead('users.getUsers', ['id' => [['_' => 'inputUserSelf']]]))[0]]]> $new[$test][$ipv6][$id] $callbacks [] $chat $chat $controller $curkey $data $dc $file $id $id $id $id $key $key $key $lock $method $methods[] $nearest_dc $new[$test][$ipv6][$id] $new_dc $options $selfBot callCheckerLoop]]> config]]> configLoop]]> datacenter]]> phoneConfigLoop]]> referenceDatabase]]> reportMutex]]> serializeLoop]]> $value Lang::$current_lang $username]]]> array array|false bool bool acquire applyChanges applyChanges applyChanges applyChanges discard getAppInfo getAuth getCallState getConnection getConnection getConnection getDataCenterConnection getDb getDb getDb getDb getEnableFileReferenceDb getEnableMinDb getInterval getIpc getIpc getIpc getLogger getRSAKeys getSchema getSchema getSchema getSchema getSchema getSerialization getSerialization getTestRSAKeys hasApiInfo hasChanged hasChanged hasChanged hasChanged hasChanged hasChanged hasChanged hasTempAuthKey init init merge needsUpgrade needsUpgrade needsUpgrade release resume setMadeline setMadeline setSettings start start start start start stop $id datacenter]]> datacenter]]> datacenter->currentDatacenter]]> authorization['user'] ?? false]]> authorization['user'] ?? false]]> authorization['user']['bot']]]> authorization['user']['bot']]]> config]]> config]]> getSelf()['premium']]]> cdn_rsa_keys]]> ]]> authorization['user']['bot']]]> channels_state->get()]]> channels_state->get()]]> channels_state->get()]]> channels_state->get()]]> $path getSelf()['bot']]]> getSelf()['premium']]]> $path authorization['hint']]]> authorization['user']]]> authorization['user']]]> authorization['user']]]> authorization['user']['bot']]]> authorization['user']['bot']]]> authorization['user']['bot']]]> authorization['user']['id']]]> logger start start $channelParticipants $chats $full_chats $logger $minDatabase $session $snitch $usernames $wrapper MTProto sanitizeReportPeers($userOrId)]]> chats]]> chats]]> minDatabase?->sync()]]> wrapper) && $this->isInited()]]> authorized === API::LOGGED_IN && \is_int($dc_id)]]> datacenter]]> \is_int($dc_id) datacenter)]]> minDatabase]]> settings->getAppInfo()->getLangCode()]]]> $chat $data \memprof_dump_pprof $callbacks Lang::$current_lang content['_']]]]> int string content['_']]]> content[self::RESPONSE_ID_MAP[$this->content['_']]]]]> getBody new DeferredFuture state |= self::STATE_ACKED]]> state |= self::STATE_REPLIED]]> state |= self::STATE_SENT]]> sent]]> authKey]]> authKey]]> authorized {$key} =& $bound->{$key}]]> ack_queue]]> new_outgoing]]> getSent()]]> getSent()]]> getSent()]]> MTProtoOutgoingMessage MTProtoOutgoingMessage $data $encrypted_answer $p $p_q_inner_data $p_q_inner_data $pq_bytes $q $server_nonce time_delta]]> $ResPQ $Set_client_DH_params_answer $data $encrypted_answer $encrypted_data $p $p $p_q_inner_data $pq_bytes $q $q $server_DH_inner_data $server_dh_params $server_nonce $server_time time_delta]]> encrypt $data $p $p $p $p*$q $p_q_inner_data $q $q $server_nonce $server_nonce $server_nonce $server_time fp]]> expires break; string $f->await()]]> methodCallAsyncRead API->parseMode($args)['message']]]> outgoing_messages[$message_id]]]> outgoing_messages[$message_id]]]> $message_id $methodInfo $single_args WrappedFuture outgoing_messages[$message_id] ?? $message_id]]> resume resume MTProtoOutgoingMessage MTProtoOutgoingMessage $promises getMaxId $msg_id incoming_messages[$content['answer_msg_id']]]]> incoming_messages[$content['answer_msg_id']]]]> incoming_messages[$msg_id]]]> incoming_messages[$msg_id]]]> outgoing_messages[$content['msg_id']]]]> outgoing_messages[$msg_id]]]> $key $msg_id $msg_id $msg_id $msg_id $shifted $msg_id $msg_id $e]]> getContent()['_']]]> read()['msg_ids']]]> read()['server_salt']]]> $msg_id $referencedMsgId $response $response $current_msg_id $current_msg_id $current_msg_id $expecting_msg_id API->getTL()->getConstructors()->findByPredicate($message->getContent()['_'])['type']]]> API->getTL()->getConstructors()->findByPredicate($response['_'])['type']]]> incoming_messages[$message['msg_id']]]]> incoming_messages[$referencedMsgId]]]> new_incoming[$message['msg_id']]]]> $constructor $message $msg_id $referencedMsgId $response $response_type $response_type API->authorization['user']['phone']]]> API->authorization['user']['phone']]]> $response \time() + $seconds $msgId $msgId getMsgId()]]> getMsgId()]]> getMsgId()]]> getMsgId()]]> resume API->authorized_dc == $this->datacenter && $this->API->authorized === \danog\MadelineProto\API::LOGGED_IN]]> MTProtoIncomingMessage MTProtoOutgoingMessage $contentRelated $contentRelated generateInSeqNo generateOutSeqNo $seq_no $seq_no getSeqNo()]]> $msgIdHandler getSent()]]> $dh_config dh_config]]> array methodCallAsyncRead methodCallAsyncWrite datacenter->currentDatacenter]]> datacenter->currentDatacenter]]> $channel $state states]]> syncLoading self::$checkedAutoload[$autoloadPath] self::$checkedAutoload[$autoloadPath] self::$checkedAutoload[$autoloadPath] $autoloadPath $autoloadPath $f string getSelf()['id']]]> getSelf()['id']]]> $media extractBotAPIFile($this->MTProtoToBotAPI($media))['file_id']]]> $name static function (int $part_num) use ($size, $file_id, $part_total_num, $part_size, $callable, $ige) { $data $media downloadToCallable downloadToDir genAllFile uploadFromCallable uploadFromTgfile uploadFromUrl $bytes $cur * 100 / $count $cur * 100 / $part_total_num $datacenter $datacenter $file $info $media $media $messageMedia $messageMedia $messageMedia $old_dc $resPromises $speed $speed methodCallAsyncRead('upload.getCdnFileHashes', ['file_token' => $file, 'offset' => $offset], ['datacenter' => $datacenter])]]> methodCallAsyncRead('upload.reuploadCdnFile', ['file_token' => $messageMedia['file_token'], 'request_token' => $res['request_token']], ['heavy' => true, 'datacenter' => $old_dc])]]> $time $time $url ++$datacenter downloadToCallable(...)]]> methodCallAsyncWrite(...)]]> uploadFromCallable(...)]]> TL->getConstructors()->findByPredicate($media['_'])['type']]]> $resPromises[] $info[$method] $info[$type] cdn_hashes[$file][$hash['offset']]]]> TL->getConstructors()->findByPredicate($media['_'])['type'] => $media]]]> $answer $answer $attribute $attribute $audio $audio $bytes $bytes $bytes $callable $callable $constructor $constructor $constructor $cur $cur $datacenter $datacenter $datacenter $dir $file $hash $info $media $messageMedia $messageMedia $messageMedia $messageMedia $messageMedia $method $offset $oldOffset $old_dc $r $r $readFuture $res $res $res $res $res $size $type $url array array{ * ext: string, * name: string, * mime: string, * size: int, * InputFileLocation: array, * key_fingerprint?: string, * key?: string, * iv?: string, * thumb_size?: string * } array|null string await $cur $cur $cur $cur $datacenter $dir $offset $offset $size $size $size cdn_hashes]]> cdn_hashes]]> write[$offset]->getFuture()->await()]]> read[$offset]]]> write[$offset]]]> write[$offset]]]> $messageMedia $old_dc decrypt getReference getReference getReference getReference getReference getReference getReference $res $res $res $res $res $res $res $res $res $res $res $res $res $speed $speed $time $time $size $attr $attr $attr $attr $attr $attr $attr $has_document_photo $has_document_photo $has_document_photo $has_document_photo $has_document_photo $has_video $has_video $has_video $has_video methodCallAsyncRead( 'messages.sendMedia', $params )]]> $callback $attr $has_document_photo $has_video $t Message static function (int $offset, int $size) use ($stream) { static function (int $offset, int $size) use ($stream, $seekable, $lock) { static function (string $payload, int $offset) use ($stream, $seekable, $lock) { downloadToStream upload uploadEncrypted uploadFromStream $chunk $file $file $file getServeRange()]]> getServeRange()]]> getServeRange()]]> getServeRange()]]> $size $size $stream $stream getHeaders()]]> downloadToStream(...)]]> $chunk $file $messageMedia $messageMedia $res $size $stream $stream $file $file $body $size read seek seek Lock Lock Settings populateFrom $cache $dbObject $id $id $id cache[$key][$id]]]> $peers[$user] db[$id]]]> db[$id]]]> $cache $chat $dbObject $id $id $id $origin $user populateFrom(...))]]> array $id $peers $peers $peers $peers db]]> $db API->chats]]> db]]> $true $A $client_salt $gForHash $g_x $p $pForHash $server_salt toBytes()]]> $A $client_salt $g $g $gForHash $g_x $p $p $pForHash $pForHash $server_salt current_algo]]> new_algo]]> srp_id]]> $v powMod powMod powMod toBytes toString $pForHash $BForHash $BForHash powMod getInfo($peer, \danog\MadelineProto\API::INFO_TYPE_CONSTRUCTOR)['forum']]]> $channel $channel $channel $channel $channel $filter $filter $filter $filter $filter $folder_id $gres $limit $limit $limit $offset $offset $offset $q $q $q $q $q $res $res $total_count $total_count fetchParticipants fetchParticipantsCache fwdPeerIsset getInputConstructor getInputPeer getParticipantsHash recurseAlphabetSearchParticipants $chat $chat $chat $existingChat $existingChat $filter $filter $filter $id $id $id $limit $limit $limit $offset $offset $offset $q $q $q full_chats[$partial['bot_api_id']]]]> full_chats[$partial['bot_api_id']]]]> $username await($promises) TL->getConstructors()->findByPredicate($constructor['_'])['type']]]> authorization['user']['id']]]> authorization['user']['id']]]> authorization['user']['id']]]> authorization['user']['id']]]> authorization['user']['id']]]> methodCallAsyncRead('help.getSupport', [])['user']]]> $username channelParticipants[$this->participantsKey($channel['channel_id'], $filter, $q, $offset, $limit)])['hash']]]> full_chats[$id])['last_update']]]> methodCallAsyncRead('contacts.resolveUsername', ['username' => $username]))['peer']]]> getIdInternal($participant['peer'])]]]> getIdInternal($participant['peer'])]]]> chats[$user['id']]]]> chats[-$chat['id']]]]> full_chats[$id]]]> secret_chats[$id]]]> TL->getConstructors()->findByPredicate($constructor['_'])['type'] => $constructor]]]> $bot_api_id $chat $entity $existingChat $gres $gres $hash $id $id $id $id $id $id $id $id $id $ids[] $invite $invite $invite $key $last_count $newchat[$field] $participant $participant $participant $res[$key] $res[$key] $res[$key] $res[$key] $res[$key] $res[$key] $size supportUser]]> $total_count $username]]]> ($type is \danog\MadelineProto\API::INFO_TYPE_ALL ? array{ * InputPeer: array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int}, * Peer: array{_: string, user_id?: int, chat_id?: int, channel_id?: int}, * DialogPeer: array{_: string, peer: array{_: string, user_id?: int, chat_id?: int, channel_id?: int}}, * NotifyPeer: array{_: string, peer: array{_: string, user_id?: int, chat_id?: int, channel_id?: int}}, * InputDialogPeer: array{_: string, peer: array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int}}, * InputNotifyPeer: array{_: string, peer: array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int}}, * bot_api_id: int|string, * user_id?: int, * chat_id?: int, * channel_id?: int, * InputUser?: array{_: string, user_id?: int, access_hash?: int, min?: bool}, * InputChannel?: array{_: string, channel_id: int, access_hash: int, min: bool}, * type: string * } : ($type is API::INFO_TYPE_TYPE ? string : ($type is \danog\MadelineProto\API::INFO_TYPE_ID ? int : array{_: string, user_id?: int, access_hash?: int, min?: bool, chat_id?: int, channel_id?: int}|array{_: string, user_id?: int, access_hash?: int, min?: bool}|array{_: string, channel_id: int, access_hash: int, min: bool}))) ?int ?int array bool int getOtherID $q $total_count \danog\MadelineProto\API::PEER_TYPE_* $promises getIdInternal($full)]]> getIdInternal($full)]]> getIdInternal($id)]]> getIdInternal($id)]]> authorization['user']]]> authorization['user']]]> authorization['user']]]> authorization['user']]]> authorization['user']]]> authorization['user']['id']]]> authorization['user']['id']]]> authorization['user']['id']]]> authorization['user']['id']]]> authorization['user']['id']]]> full_chats]]> full_chats]]> $size $cached $full $cache $cache $cache $cache $location $location $origin $origin $origin $origin $origin $origin $origin $originType $originType $originType $originType $photo $reference $reference $reference $reference $cache[$location] $cache[$location] $cache[$location] $cache[$location] API->authorization['user']['id']]]> API->authorization['user']['id']]]> db[$locationString]['reference']]]> db[$location]['origins']]]> db[$location]['reference']]]> db[$location]['reference']]]> cache[$key][$location]]]> cache[$key][$location]]]> cache[$key][$location]]]> cache[$key][self::serializeLocation($locationType, $location)]]]> API->full_chats[$origin['peer']]]]> API->full_chats[$origin['peer']]]]> cache[$key][$location]]]> cache[$key][$location]]]> $attribute $cache $cache $dc_id $frame $frames[] $frames[] $fullChat $location $location $location $location $locationValue $locationValue $origin $originType $originType $originType $photo $previous $previous $reference $reference $reference $reference $reference $reference $size $tlTrace $frame $tlTrace API->authorization['user']]]> API->authorization['user']]]> API->authorization['user']['id']]]> API->authorization['user']['id']]]> $db $k $length $seek_end $size $subValue $value $seek_end $seek_end $seek_end $size $size $size $extra_ranges $range_orig $seek_end $extra_ranges wrapMedia([ '_' => 'messageMediaPhoto', 'photo' => $message['action']['photo'] ])]]> nextSent]]> getUpdatesState loadUpdateState $authorization $button $result getUpdatesState()]]> $update $updates TL->getConstructors()->findByPredicate('message')['params']]]> authorization['user']['id']]]> authorization['user']['id']]]> authorization['user']['id']]]> authorization['user']['id']]]> authorization['user']['id']]]> authorization['user']['id']]]> chats[$info['bot_api_id']]['username']]]> authorization['hint']]]> feeders[FeedLoop::GENERIC]->feedSingle($update)]]]> calls[$update['phone_call']['id']]]]> calls[$update['phone_call']['id']]]]> calls[$update['phone_call']['id']]]]> calls[$update['phone_call']['id']]]]> calls[$update['phone_call']['id']]]]> calls[$update['phone_call']['id']]]]> eventHandlerMethods[$updateType]]]> feeders[$this->feeders[FeedLoop::GENERIC]->feedSingle($update)]]]> feeders[$this->feeders[FeedLoop::GENERIC]->feedSingle($updates['update'])]]]> secretFeeders[$update['message']['chat_id']]]]> secretFeeders[$update['message']['chat_id']]]]> secret_chats[$update['chat']['id']]]]> secret_chats[$update['chat']['id']]]]> secret_chats[$update['message']['chat_id']]]]> temp_rekeyed_secret_chats[$update['chat']['id']]]]> temp_rekeyed_secret_chats[$update['chat']['id']]]]> temp_requested_secret_chats[$update['chat']['id']]]]> temp_requested_secret_chats[$update['chat']['id']]]]> $authorization $authorization $bkey $button $closure $cur_state $data $from_id $from_id $key $key $message_id $param $result $row authorization]]> authorization]]> $to_id $to_id $update $update $updateType $updates $value $closure($update) Message array ]]> int discard qts qts qts qts qts qts qts qts qts()]]> qts()]]> qts()]]> qts()]]> authorization['user']]]> authorization['user']]]> authorization['user']]]> authorization['user']]]> authorization['user']]]> authorization['user']]]> authorization['user']['id']]]> authorization['user']['id']]]> authorization['user']['id']]]> authorization['user']['id']]]> authorization['user']['id']]]> authorization['user']['id']]]> msg_ids]]> addPendingWakeups waitForInternalStart $first break; Response int pts + $update['pts_count'])]]> $res RPCErrorException::$descriptions RPCErrorException::$errorMethodMap self::$emojis Tools::wait($callable()) completeLogin createApp getApp hasApp loop $callable() getHeaders('app')]]> getHeaders('origin')]]> getHeaders('origin')]]> getHeaders('refer')]]> getHeaders('refer')]]> getHeaders('refer')]]> $resulta hash]]> settings]]> $value settings]]> $aargs $args methodCallAsyncRead $wrapper $file $message $file $message $level $message self::LEVEL_MAP[$level] $previous $caller $code $message $code $message $caller $method $method self::$errorMethodMap[$code][$method] self::$errorMethodMap[$code][$method][$error] self::$errorMethodMap[$code][$method] self::$errorMethodMap[$code][$method] $description $res string $method $description $code $additional e]]> n]]> toBytes toBytes serializeObject(['type' => 'bytes'], $instance->n->toBytes(), 'key')]]> $e $fp $n $chat completeSecretChat requestSecretChat $g_a $g_a $g_b $g_b secret_chats[$chat]['rekeying'][1]]]> temp_rekeyed_secret_chats[$params['exchange_id']]]]> temp_requested_secret_chats[$params['id']]]]> secret_chats[$chat]['key']]]> secret_chats[$chat]['key']]]> secret_chats[$chat]['key']]]> secret_chats[$chat]['key']]]> secret_chats[$chat]['key']['visualization_orig']]]> secret_chats[$chat]['key']['visualization_orig']]]> secret_chats[$chat]['rekeying']]]> secret_chats[$chat]['rekeying']]]> secret_chats[$chat]['rekeying']]]> secret_chats[$chat]['rekeying']]]> secret_chats[$chat]['rekeying']]]> secret_chats[$chat]['rekeying'][0]]]> secret_chats[$chat]['rekeying'][0]]]> secret_chats[$chat]['rekeying'][0]]]> secret_chats[$chat]['rekeying'][0]]]> secret_chats[$chat]['rekeying'][1]]]> temp_rekeyed_secret_chats[$params['exchange_id']]['fingerprint']]]> secret_chats[$chat]['key']]]> secret_chats[$chat]['key']]]> secret_chats[$chat]['old_key']]]> secret_chats[$chat]['old_key']]]> secret_chats[$chat]['rekeying']]]> secret_chats[$chat]['rekeying']]]> secret_chats[$chat]['rekeying']]]> secret_chats[$chat]['rekeying']]]> secret_chats[$chat]['rekeying']]]> secret_chats[$chat]['rekeying']]]> secret_chats[$chat]['ttr']]]> secret_chats[$chat]['ttr']]]> secret_chats[$chat]['updated']]]> secret_chats[$chat]['updated']]]> secretFeeders[$params['id']]]]> secretFeeders[$params['id']]]]> secretFeeders[$params['id']]]]> secretFeeders[$params['id']]]]> secretFeeders[$params['id']]]]> secretFeeders[$params['id']]]]> secret_chats[$params['id']]]]> secret_chats[$params['id']]]]> secret_chats[\is_array($chat) ? $chat['chat_id'] : $chat]]]> secret_chats[\is_array($chat) ? $chat['chat_id'] : $chat]]]> temp_rekeyed_secret_chats[$params['exchange_id']]]]> temp_rekeyed_secret_chats[$params['exchange_id']]]]> temp_rekeyed_secret_chats[$params['exchange_id']]]]> temp_rekeyed_secret_chats[$params['exchange_id']]]]> temp_rekeyed_secret_chats[$params['exchange_id']]]]> temp_rekeyed_secret_chats[$params['exchange_id']]]]> temp_rekeyed_secret_chats[$params['exchange_id']]]]> temp_rekeyed_secret_chats[$params['exchange_id']]]]> temp_requested_secret_chats[$params['id']]]]> temp_requested_secret_chats[$params['id']]]]> temp_requested_secret_chats[$res['id']]]]> secret_chats[\is_array($chat) ? $chat['chat_id'] : $chat]]]> secret_chats[\is_array($chat) ? $chat['chat_id'] : $chat]]]> $g_a $g_a $g_b $g_b $res array powMod powMod powMod powMod $chat_id $chat_id $encrypted_data $encrypted_data $message_key $message_key $old $old $aes_iv $aes_iv $aes_iv $aes_key $aes_key $aes_key $encrypted_data $encrypted_data $message $message_data_length $message_data_length $message_key $message_key secret_chats[$chat_id][$old ? 'old_key' : 'key']['auth_key']]]> secret_chats[$chat_id][$old ? 'old_key' : 'key']['auth_key']]]> secret_chats[$chat_id][$old ? 'old_key' : 'key']['auth_key']]]> secret_chats[$chat_id]['admin']]]> secret_chats[$chat_id]['key']['auth_key']]]> secret_chats[$chat_id]['key']['auth_key']]]> secret_chats[$chat_id]['key']['auth_key']]]> secret_chats[$chat_id]['layer']]]> secret_chats[$chat_id][$old ? 'old_key' : 'key']]]> secret_chats[$chat_id][$old ? 'old_key' : 'key']]]> secret_chats[$chat_id][$old ? 'old_key' : 'key']]]> secret_chats[$chat_id][$old ? 'old_key' : 'key']['auth_key']]]> secret_chats[$chat_id][$old ? 'old_key' : 'key']['auth_key']]]> secret_chats[$chat_id][$old ? 'old_key' : 'key']['auth_key']]]> secret_chats[$chat_id]['admin']]]> secret_chats[$chat_id]['admin']]]> secret_chats[$chat_id]['admin']]]> secret_chats[$chat_id]['admin']]]> secret_chats[$chat_id]['key']]]> secret_chats[$chat_id]['key']]]> secret_chats[$chat_id]['key']]]> secret_chats[$chat_id]['key']]]> secret_chats[$chat_id]['key']['auth_key']]]> secret_chats[$chat_id]['key']['auth_key']]]> secret_chats[$chat_id]['key']['auth_key']]]> secret_chats[$chat_id]['key']['fingerprint']]]> secret_chats[$chat_id]['layer']]]> secret_chats[$chat_id]['layer']]]> secret_chats[$chat_id]['layer']]]> secret_chats[$chat_id]['layer']]]> secret_chats[$chat_id]['mtproto']]]> secret_chats[$chat_id]['out_seq_no']]]> secret_chats[$chat_id]['out_seq_no']]]> secret_chats[$chat_id]['rekeying']]]> secret_chats[$chat_id]['rekeying'][0]]]> secret_chats[$chat_id]['ttr']]]> secret_chats[$chat_id]['updated']]]> secret_chats[$message['message']['chat_id']]['in_seq_no']]]> secret_chats[$message['message']['chat_id']]['key']]]> secret_chats[$message['message']['chat_id']]['mtproto']]]> secret_chats[$message['message']['chat_id']]['old_key']]]> secret_chats[$message['message']['chat_id']]['rekeying']]]> secret_chats[$message['message']['chat_id']]['ttr']]]> secret_chats[$message['message']['chat_id']]['ttr']]]> secret_chats[$message['message']['chat_id']]['updated']]]> secret_chats[$chat_id]['out_seq_no']]]> secret_chats[$chat_id]['outgoing']]]> secret_chats[$chat_id]['outgoing'][$this->secret_chats[$chat_id]['out_seq_no']]]]> secret_chats[$chat_id]['ttr']]]> secret_chats[$message['message']['chat_id']]['incoming']]]> secret_chats[$message['message']['chat_id']]['incoming'][$this->secret_chats[$message['message']['chat_id']]['in_seq_no']]]]> secret_chats[$message['message']['chat_id']]['mtproto']]]> secret_chats[$message['message']['chat_id']]['mtproto']]]> secret_chats[$message['message']['chat_id']]['ttr']]]> secret_chats[$chat_id]]]> secret_chats[$chat_id]]]> secret_chats[$chat_id]['outgoing'][$this->secret_chats[$chat_id]['out_seq_no']]]]> secret_chats[$message['message']['chat_id']]]]> secret_chats[$message['message']['chat_id']]]]> secret_chats[$message['message']['chat_id']]]]> secret_chats[$message['message']['chat_id']]]]> secret_chats[$message['message']['chat_id']]]]> secret_chats[$message['message']['chat_id']]]]> secret_chats[$message['message']['chat_id']]]]> secret_chats[$message['message']['chat_id']]]]> secret_chats[$message['message']['chat_id']]]]> secret_chats[$message['message']['chat_id']]]]> secret_chats[$message['message']['chat_id']]]]> secret_chats[$message['message']['chat_id']]]]> secret_chats[$message['message']['chat_id']]]]> secret_chats[$message['message']['chat_id']]]]> secret_chats[$message['message']['chat_id']]['incoming'][$this->secret_chats[$message['message']['chat_id']]['in_seq_no']]]]> $deserialized $message $message_data_length $message_data_length secret_chats[$chat_id]['key']['fingerprint']]]> secret_chats[$chat_id]['out_seq_no']]]> secret_chats[$chat_id]['ttr']]]> secret_chats[$chat_id]['updated']]]> secret_chats[$message['message']['chat_id']]['ttr']]]> secret_chats[$message['message']['chat_id']]['updated']]]> $action $action $action $chatId $chatId $chatId secret_chats[$chatId]['created']]]> secret_chats[$chatId]['created']]]> secret_chats[$chatId]['in_seq_no']]]> secret_chats[$chatId]['layer']]]> secret_chats[$chatId]['out_seq_no_x']]]> secret_chats[$chatId]['out_seq_no_x']]]> secret_chats[$chatId]['outgoing']]]> secret_chats[$chatId]['in_seq_no']]]> secret_chats[$chatId]['layer']]]> secret_chats[$chatId]['layer']]]> secret_chats[$chatId]['mtproto']]]> secret_chats[$chatId]['ttl']]]> secret_chats[$chatId]]]> secret_chats[$chatId]]]> secret_chats[$chatId]]]> secret_chats[$chatId]]]> secret_chats[$chatId]]]> secret_chats[$chatId]]]> secret_chats[$chatId]]]> $action $chatId $decryptedMessage $message $seq $chatId secret_chats[$chatId]['created']]]> secret_chats[$chatId]['created']]]> secret_chats[$chatId]['in_seq_no']]]> $chat $chat $chat_id $chat_id $seqno $seqno checkSecretInSeqNo checkSecretOutSeqNo generateSecretInSeqNo generateSecretOutSeqNo $chat_id $chat_id $chat_id $chat_id secret_chats[$chat]['in_seq_no']]]> secret_chats[$chat]['in_seq_no_x']]]> secret_chats[$chat]['layer']]]> secret_chats[$chat]['layer']]]> secret_chats[$chat]['out_seq_no']]]> secret_chats[$chat]['out_seq_no_x']]]> secret_chats[$chat_id]['in_seq_no']]]> secret_chats[$chat_id]['in_seq_no_x']]]> secret_chats[$chat_id]['in_seq_no_x']]]> secret_chats[$chat_id]['incoming']]]> secret_chats[$chat_id]['incoming']]]> secret_chats[$chat_id]['out_seq_no']]]> secret_chats[$chat_id]['out_seq_no_x']]]> secret_chats[$chat_id]['out_seq_no_x']]]> secret_chats[$chat_id]['out_seq_no_x']]]> secret_chats[$chat]]]> secret_chats[$chat]]]> secret_chats[$chat]]]> secret_chats[$chat]]]> secret_chats[$chat]]]> secret_chats[$chat]]]> secret_chats[$chat_id]]]> secret_chats[$chat_id]]]> $last $message $message $seqno $seqno $temp $seqno $seqno $seqno $seqno secret_chats[$chat]['in_seq_no']]]> secret_chats[$chat]['out_seq_no']]]> secret_chats[$chat_id]['out_seq_no']]]> [$unserialized, $unlock] $class $class getFuture()]]> getFuture()]]> getFuture()]]> $class $class $copy $res $unserialized array{0: (ChannelledSocket|APIWrapper|Throwable|null|0), 1: (callable|null)} cancel getEventHandler getEventHandler $ipcSocket $ipcSocket $ipcSocket $ipcSocket getIpcPath(), $cancelIpc->getFuture())]]> getIpcPath(), $cancelIpc->getFuture())]]> getIpcPath(), $cancelIpc->getFuture(), customE: new AssertionError("Please make sure the $class class is in scope, or that the event handler is running (in a separate process or in the current process)."))]]> getIpcPath(), $cancelIpc->getFuture(), customE: new AssertionError("Please make sure the $class class is in scope, or that the event handler is running (in a separate process or in the current process)."))]]> $ipcSocket $ipcSocket $unserialized $warningId unserialize($this->ipcStatePath)]]> $unserialized ?object $unserialized ?IpcState read(null, 1)]]> read(null, 1)]]> $php[0] $php[1] $php[0] $php[1] lightState ??= $this->unserialize($this->lightStatePath)]]> $array Lang::$current_lang Lang::$current_lang Lang::$current_lang $array $protocol $proxy $transport $settings[$array] $settings[$array] $array $array $key $protocol $proxy $settings $settings $transport $proxies $settings[$array] $array $settings $settings $settings $settings $settings $settings $settings[$array] $array extra]]> extra]]> $array parent::__sleep() $settings $src $prop $prop isTerminated $message $message $stream bufferRead(4)]]> $buffer $buffer $length $length RawStreamInterface Socket \danog\MadelineProto\Stream\ReadBufferInterface \danog\MadelineProto\Stream\WriteBufferInterface bufferRead bufferRead bufferWrite bufferWrite checkReadHash checkWriteHash disconnect getReadBuffer getSocket getWriteBuffer startReadHash startWriteHash $length bufferRead(4))[1]]]> $buffer $buffer stream]]> stream->getSocket()]]> $l $append $append_after $memory_stream $stream memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> ?string RawStreamInterface Socket disconnect getSocket read write append]]> append_after]]> stream]]> stream->getSocket()]]> stream->read($cancellation)]]> $append $append_after $decrypt $encrypt $extra $read_buffer $stream $write_buffer extra['decrypt']['iv']]]> extra['decrypt']['key']]]> extra['encrypt']['iv']]]> extra['encrypt']['key']]]> extra['decrypt']]]> extra['decrypt']]]> extra['decrypt']['iv']]]> extra['decrypt']['key']]]> extra['encrypt']]]> extra['encrypt']]]> extra['encrypt']['iv']]]> extra['encrypt']['key']]]> AES AES RawStreamInterface Socket string bufferRead bufferWrite disconnect encrypt getReadBuffer getSocket getWriteBuffer append]]> append_after]]> decrypt]]> encrypt]]> stream]]> stream->getSocket()]]> decrypt->encrypt($this->read_buffer->bufferRead($length))]]> $data $append $append_after read write $hash_name $read_buffer $read_check_after $read_check_pos $read_hash $rev $stream $write_buffer $write_check_after $write_check_pos $write_hash $data $data hash_name]]> hash_name]]> read_hash]]> read_hash]]> read_hash]]> write_hash]]> write_hash]]> write_hash]]> $data $data ?string RawStreamInterface Socket bufferRead bufferRead bufferRead bufferRead bufferWrite bufferWrite bufferWrite disconnect getReadBuffer getSocket getWriteBuffer read_check_pos]]> read_check_pos]]> read_check_pos]]> write_check_pos]]> write_check_pos]]> write_check_pos]]> $data $data read_buffer->bufferRead($length)]]> stream]]> stream->getSocket()]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> memory_stream]]> RawStreamInterface stream]]> getStream($header)]]> close $append $append_after $obj $socketContext $uri $extra $extra $extra array connect new $clazz() $extra StreamInterface $stream bufferRead(1)]]> $buffer $buffer $length $length RawStreamInterface Socket \danog\MadelineProto\Stream\ReadBufferInterface \danog\MadelineProto\Stream\WriteBufferInterface bufferRead bufferRead bufferWrite disconnect getReadBuffer getSocket getWriteBuffer bufferRead(3)]]> $length $buffer $buffer stream]]> stream->getSocket()]]> $l $in_seq_no $out_seq_no $stream bufferRead(4)]]> bufferRead(4)]]> $buffer $buffer $in_seq_no $length $read_length RawStreamInterface Socket \danog\MadelineProto\Stream\ReadBufferInterface \danog\MadelineProto\Stream\WriteBufferInterface bufferRead bufferRead bufferWrite checkReadHash checkWriteHash disconnect getReadBuffer getSocket getWriteBuffer startReadHash startWriteHash $read_length $read_length in_seq_no]]> out_seq_no]]> $buffer $buffer stream]]> stream->getSocket()]]> $l $stream $stream $uri $code $ctx $header ctx]]> ctx]]> string header]]> code]]> bufferRead(1)]]> $piece uri->getPort()]]> $code $current_header[1] $description getStream($header)]]> $description $stream bufferRead(4)]]> $buffer $buffer $length RawStreamInterface Socket \danog\MadelineProto\Stream\ReadBufferInterface \danog\MadelineProto\Stream\WriteBufferInterface bufferRead bufferWrite disconnect getReadBuffer getSocket getWriteBuffer $buffer $buffer stream]]> stream->getSocket()]]> $l $stream bufferRead(4)]]> $buffer $buffer $length RawStreamInterface Socket \danog\MadelineProto\Stream\ReadBufferInterface \danog\MadelineProto\Stream\WriteBufferInterface bufferRead bufferWrite disconnect getReadBuffer getSocket getWriteBuffer $buffer $buffer stream]]> stream->getSocket()]]> $l $extra $stream extra['address']]]> extra['port']]]> extra['secret']]]> extra['secret']]]> extra['address']]]> extra['port']]]> extra['secret']]]> extra['secret']]]> ]]> $content[$offset++] $content[$offset++] $content[$offset++] $content[$offset++] emitter]]> ]]> ]]> $offset $offset $offset $offset $offset $offset $size currentDuration += $frameDuration]]> currentDuration += $totalDuration]]> $emitter $packFormat $stream $streamCount getReadBuffer($l)]]> $offset $offset $offset $offset $stereo $stream $extra $l extra['address']]]> extra['port']]]> extra['address']]]> extra['password']]]> extra['port']]]> extra['username']]]> $read bufferRead(1)]]> $piece $port $code $current_header[1] $description $l getStream()]]> $read $stream $extra extra['password']]]> extra['username']]]> extra['address']]]> extra['password']]]> extra['port']]]> extra['username']]]> $port $port extra['address']]]> extra['password']]]> extra['port']]]> extra['username']]]> bufferRead(1)]]> bufferRead(1)]]> bufferRead(1)]]> bufferRead(1)]]> bufferRead(1)]]> bufferRead(1)]]> bufferRead(1)]]> bufferRead(1)]]> bufferRead(1)]]> bufferRead(16)]]> bufferRead(2)]]> bufferRead(4)]]> $length $ip $ip getStream(\chr(5).\chr(\strlen($methods)).$methods)]]> setupTls getStream write write $connector $stream ?string $data $data $markup parseReplyMarkup $arguments[$key] $arguments[$key] $element $max_length TYPES_IDS[$type_name] TYPES_IDS[$type_name] $arguments[$mtproto] $attribute $audio $button $button $button $data $element $entity $entity $entity $key $max_length $newentity $offset $offset $photo $row $offset $offset $offset }>]]> $arguments[$key] $photo $photoSize $thumbnail $thumbnail $file $message $file $message $posClose === false $posClose === false $start MTProtoToTd MTProtoToTdcli tdToTdcli $params[$td] $value $key $key $params[$mtproto[0]][$mtproto[1]] authorization['user']['id']]]> $newparams[$key] $newparams[$mtproto[0]] $newparams[$mtproto[0]] $newparams[$td] $newparams[$td] $newparams[$td] $newparams[$td] $newparams[$td] $newparams[$td] $value $value array authorization['user']]]> authorization['user']['id']]]> $file $message $file $message $frame \is_resource($stream) \is_resource($stream) API->getInfo($arguments[$current_argument['name']]))['InputEncryptedChat']]]> $result >]]> $arg $v $v deserialize serializeMethod serializeObject serializeParams $arg $arguments $button $constructorData $constructorData $current_argument $current_argument $current_argument $elem $elem $file $file $long_len $object $object $object $object $object $object toBytes()]]> $pair $predicate $tl outgoing_messages[$x['req_msg_id']]]]> outgoing_messages[$x['req_msg_id']]->getConstructor()]]> -$long_len \is_int($object) ? (float) $object : $object $cb $id $id $k $k $scheme_type constructors->findByPredicate($arguments[$current_argument['name']]['_'])['type']]]> constructors->findByPredicate($arguments[$current_argument['name']]['_'])['type']]]> constructors->findByPredicate($object['_'])['type']]]> constructors->findByPredicate('vector')['id']]]> constructors->findByPredicate('vector')['id']]]> constructors->findByPredicate((bool) $object ? 'boolTrue' : 'boolFalse')['id']]]> outgoing_messages[$x['req_msg_id']]]]> outgoing_messages[$x['req_msg_id']]]]> outgoing_messages[$x['req_msg_id']]]]> outgoing_messages[$x['req_msg_id']]]]> afterConstructorDeserialization[$x['_']]]]> afterConstructorDeserialization[$x['_']]]]> afterMethodResponseDeserialization[$type['connection']->outgoing_messages[$x['req_msg_id']]->getConstructor()]]]> afterMethodResponseDeserialization[$type['connection']->outgoing_messages[$x['req_msg_id']]->getConstructor()]]]> beforeConstructorDeserialization[$x['_']]]]> beforeConstructorDeserialization[$x['_']]]]> beforeConstructorSerialization[$object['_']]]]> beforeConstructorSerialization[$object['_']]]]> tdDescriptions['constructors'][$name]]]> tdDescriptions['constructors'][$name]]]> tdDescriptions['constructors'][$name]]]> tdDescriptions['constructors'][$name]]]> tdDescriptions['methods'][$name]]]> tdDescriptions['methods'][$name]]]> typeMismatch[$type['type']]]]> typeMismatch[$type['type']]]]> outgoing_messages[$x['req_msg_id']]]]> outgoing_messages[$x['req_msg_id']]]]> outgoing_messages[$x['req_msg_id']]]]> outgoing_messages[$x['req_msg_id']]]]> outgoing_messages[$x['req_msg_id']]]]> outgoing_messages[$x['req_msg_id']]]]> outgoing_messages[$x['req_msg_id']]]]> afterConstructorDeserialization[$x['_']]]]> afterConstructorDeserialization[$x['_']]]]> $arg $bkey $button $concat $concat $constructorData $constructorData $constructorData $constructorData $constructorData $constructorData $constructorData $count $cur_flag $current_argument $current_object $current_object $data $data $elem $elem $file $id $id $key $key $key $long_len $name $name $object $object $object $pair $pair $predicate $result[] $row secretLayer]]> secretLayer]]> $tl $v $value $value $value $value $value getConstructor getConstructor getConstructor toBytes $concat $concat constructors->findByPredicate('vector')['id']]]> serializeObject($current_argument, $arguments[$current_argument['name']], $current_argument['name'], $layer)]]> serializeObject($current_argument, $arguments['file']['mime_type'], $current_argument['name'], $layer)]]> serializeObject($current_argument, $this->API->encryptSecretMessage($arguments['peer']['chat_id'], $arguments['message'], $arguments['queuePromise']), 'data')]]> serializeObject(['type' => $type['subtype']], $current_object, $k, $layer)]]> serializeObject(['type' => $type['subtype']], $current_object, $k, $layer)]]> serializeObject(['type' => 'bytes'], Tools::random(15 + 4 * Tools::randomInt(modulus: 3)), 'random_bytes')]]> $value $value $values[$bytePos+1] $values[$bytePos] outgoing_messages]]> outgoing_messages]]> mutexSideEffects]]> API->logger]]> botAPIToMTProto logger $elem[1] $elem[1] $elem[1] $elem[1] $afterConstructorDeserialization $afterMethodResponseDeserialization $beforeConstructorDeserialization $beforeConstructorSerialization $beforeMethodResponseDeserialization $constructors $methods $tdDescriptions $typeMismatch (string) $object (string) $object (string) $object $value $value \stream_get_contents \stream_get_contents $a findByPredicate findByType by_id[$json_dict['id']]['layer']]]> by_id[$json_dict['id']]['layer']]]> by_id[$chosenid]]]> by_id[$json_dict['id']]]]> by_id[$json_dict['id']]]]> by_id[$json_dict['id']]]]> by_id[$json_dict['id']]]]> by_id[$json_dict['id']]]]> by_id[$this->by_predicate_and_layer[$predicate]]]]> layers[$json_dict['layer']]]]> $alayer $chosenid $chosenid $constructor $constructor $constructor $constructor array|false $alayer $alayer $alayer $alayer $constructor deserialize serializeMethod serializeObject findById findByMethod by_id[$json_dict['id']]]]> by_id[$this->by_method[$method_name]]]]> by_method[$json_dict['method']]]]> $method $method by_id[$key]['params']]]> by_id[$key]['params']]]> by_id[$key]['params'][$kkey]]]> by_id[$key]['params'][$kkey]]]> $kkey $param click authorization['user']['id']]]> button[$name]]]> button[$name]]]> button[$name]]]> button[$name]]]> id]]> label]]> peer]]> peer]]> authorization['user']]]> authorization['user']['id']]]> $c->name !== null]]> $val $this->{$var}]]> end getVar $cb $hash $curPixels $hash $hash $hash $hash $long $max $max $maxPixels $parent $size $size float int int getAttribute $hash $hash $hash $hash $hash $hash > 21]]> $value $value $value $this->{$var}, $obj, $obj::class, )->__invoke()]]> {$var} =& $val; }, $obj, $obj::class, )->__invoke()]]> __invoke __invoke {$var} =& $val]]> $f $stream $TLID_DECRYPTED_AUDIO_BLOCK $TLID_REFLECTOR_PEER_INFO $TLID_REFLECTOR_SELF_INFO $TLID_SIMPLE_AUDIO_BLOCK $callID $configuration $creatorID $holdFiles $inputFiles $internalStorage $isPlaying $otherID $outputFile $protocol $received_timestamp_map $remote_ack_timestamp_map $session_in_seq_no $session_out_seq_no $signal $storage $visualization $voip_state openFile $file callID]]> callID]]> configuration['auth_key']]]> inputFiles]]> tempHoldFiles]]> callID['id']]]> configuration['auth_key']]]> configuration['endpoints']]]> internalStorage['created']]]> inputFiles[]]]> inputFiles[]]]> $endpoint $file $file $id $it $payload tempHoldFiles]]> array array int int int|bool string|int advance advance getCurrent getCurrent callID]]> internalStorage['created'] ?? false]]> internalStorage['created'] ?? false]]> otherID]]> protocol]]> signal]]> visualization]]> $authKey $cnt $cnt $cnt $ack_mask $last_ack_id $packet_seq_no $s1 $s2 received_packet seqgt received_timestamp_map[$diff]]]> received_timestamp_map[$x]]]> remote_ack_timestamp_map[$x]]]> remote_ack_timestamp_map[$x]]]> received_timestamp_map[$diff+$x]]]> received_timestamp_map[$diff]]]> received_timestamp_map[$x]]]> received_timestamp_map[0]]]> remote_ack_timestamp_map[$diff+$x]]]> remote_ack_timestamp_map[$x]]]> remote_ack_timestamp_map[$x]]]> remote_ack_timestamp_map[0]]]> received_timestamp_map[$diff+$x]]]> received_timestamp_map[$diff]]]> received_timestamp_map[$diff]]]> remote_ack_timestamp_map[$diff+$x]]]> $diff $diff $diff $remaining $remaining $ack_mask $diff $diff $diff $diff $last_ack_id $packet_seq_no session_in_seq_no]]> $controller $id completeCall confirmCall requestCall subtract(Magic::$two)]]> subtract(Magic::$two)]]> $g_a $g_b calls[$call['id']]->getOtherID()]]> calls[$params['id']]->configuration]]> calls[$params['id']]->configuration]]> calls[$params['id']]->configuration['endpoints']]]> calls[$params['id']]->configuration['endpoints']]]> calls[$params['id']]->getOtherID()]]> calls[$params['id']]->getOtherID()]]> calls[$params['id']]->storage['a']]]> calls[$params['id']]->storage['b']]]> calls[$params['id']]->storage['g_a']]]> calls[$params['id']]->configuration['endpoints']]]> calls[$params['id']]->configuration['endpoints']]]> calls[$params['id']]->storage['a']]]> calls[$params['id']]->storage['b']]]> calls[$params['id']]->storage['g_a']]]> calls[$params['id']]->storage['g_a']]]> calls[$params['id']]->storage['g_a_hash']]]> methodCallAsyncRead('phone.confirmCall', ['key_fingerprint' => \substr(\sha1($key, true), -8), 'peer' => ['id' => $params['id'], 'access_hash' => $params['access_hash'], '_' => 'inputPhoneCall'], 'g_a' => $this->calls[$params['id']]->storage['g_a'], 'protocol' => ['_' => 'phoneCallProtocol', 'udp_reflector' => true, 'min_layer' => 65, 'max_layer' => VoIP::getConnectionMaxLayer()]]))['phone_call']]]> calls[$params['id']]->configuration['endpoints']]]> calls[$params['id']]->configuration['endpoints']]]> calls[$res['phone_call']['id']]->storage['b']]]> calls[$call['id']]]]> calls[$call['id']]]]> calls[$call['id']]]]> calls[$call['id']]]]> calls[$call['id']]]]> calls[$call['id']]]]> calls[$call['id']]]]> calls[$call['id']]]]> calls[$id]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$res['phone_call']['id']]]]> calls[$res['phone_call']['id']]]]> $c $g_a $g_b $res $res $res $res $visualization[] $visualization[] ?VoIP array int discard getCallState getCallState getDebugLog getOtherID getOtherID getOtherID getPreferredRelayID parseConfig parseConfig powMod powMod setCall setVisualization setVisualization startTheMagic startTheMagic subtract subtract whenCreated calls[$call['id']]->whenCreated()]]> config['call_connect_timeout_ms']]]> config['call_connect_timeout_ms']]]> config['call_receive_timeout_ms']]]> config['call_receive_timeout_ms']]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$params['id']]]]> calls[$res['phone_call']['id']]]]> calls[$params['id']]->configuration]]> calls[$params['id']]->configuration]]> calls[$params['id']]->configuration]]> calls[$params['id']]->configuration]]> calls[$params['id']]->configuration]]> calls[$params['id']]->configuration]]> calls[$params['id']]->storage]]> calls[$params['id']]->storage]]> calls[$params['id']]->storage]]> calls[$params['id']]->storage]]> calls[$params['id']]->storage]]> calls[$params['id']]->storage]]> calls[$res['phone_call']['id']]->storage]]> $res read $aes_iv $aes_iv $aes_key $aes_key $innerLen read $payload $args $datacenter $object $stream pack_string recv_message send_message unpack_string $codec $flags $flags $flags $flags $length $length $length $long_len $object $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $payload $stream $stream $stream $stream $stream $stream session_in_seq_no]]> session_in_seq_no]]> session_in_seq_no]]> session_out_seq_no]]> session_out_seq_no]]> session_out_seq_no]]> unpack_string($payload)]]> unpack_string($payload)]]> -$long_len $args[$x] $args[$x] $args[$x] $args[$x] $args[$x] $args[$x] $args[$x] $args[$x] configuration['call_id']]]> configuration['call_id']]]> received_timestamp_map[$x]]]> $ack_mask $ack_mask $ack_mask $codec $codec $flags $flags $flags $flags $flags $flags $flags $in_seq_no $in_seq_no $in_seq_no $length $length $length $long_len $out_seq_no $out_seq_no $out_seq_no $payload $payload $payload $stream write $codec $flags $flags $flags $flags $flags $flags $flags $flags $payload $payload configuration['call_id']]]> pack_string($args['extra'])]]> pack_string($message)]]> pack_string($message)]]> $ack_mask $in_seq_no $out_seq_no \stream_get_contents \stream_get_contents \stream_get_contents \stream_get_contents $flags $result $cache[0] $cache[1] $cache $result $result ?array bool array|true ]]> $chat authorization['user']['bot']]]> authorization['user']['bot']]]> authorization['user']['bot']]]> authorization['user']['bot']]]> botDialogsUpdatesState['pts']]]> methodCallAsyncRead( 'updates.getDifference', $state, ['cancellation' => Tools::getTimeoutCancellation(15.0), 'FloodWaitLimit' => 86400] )['_']]]> $chat $dialog $dialogs[$id] $id $last_date $last_id $message $res $res[] $result $result botDialogsUpdatesState]]> botDialogsUpdatesState]]> bottomPts]]> topPts]]> ]]> authorization['user']]]> authorization['user']]]> authorization['user']]]> authorization['user']]]> authorization['user']['bot']]]> authorization['user']['bot']]]> authorization['user']['bot']]]> authorization['user']['bot']]]> $dialogs chats]]> chats]]> event_handler_instance === null || $this->event_handler_instance instanceof __PHP_Incomplete_Class]]> event_handler_instance instanceof __PHP_Incomplete_Class]]> $pluginsNew PluginEventHandler|EventHandlerProxy|null pluginInstances[$class]]]> pluginInstances[$class]]]> pluginInstances[$class]]]> pluginInstances[$class]]]> pluginInstances[$class]]]> new $class_name array completePhoneLogin phoneLogin $authorization $authorization $res methodCallAsyncRead( 'auth.importBotAuthorization', [ 'bot_auth_token' => $token, 'api_id' => $this->settings->getAppInfo()->getApiId(), 'api_hash' => $this->settings->getAppInfo()->getApiHash(), ], )]]> methodCallAsyncRead('account.getPassword', [])]]> methodCallAsyncRead('auth.signUp', ['phone_number' => $this->authorization['phone_number'], 'phone_code_hash' => $this->authorization['phone_code_hash'], 'phone_code' => $this->authorization['phone_code'], 'first_name' => $first_name, 'last_name' => $last_name])]]> authorization['hint']]]> authorization['hint']]]> authorization['phone_number']]]> $authorization $authorization $authorization $res $res authorization]]> authorization]]> authorization]]> authorization]]> authorization]]> authorization]]> authorization['phone_code']]]> authorization['phone_code_hash']]]> authorization['phone_code_hash']]]> authorization['phone_number']]]> authorization['phone_number']]]> \is_array($auth_key) loop $r $r $r logger logger getAuthorization() === \danog\MadelineProto\API::LOGGED_IN]]> start $title $firstName $lastName $title $title $title $result $result ?LoginQrCode ?LoginQrCode ?LoginQrCode $form function ($_) use ($callback) { $result $result $result $result $callback() $callback()