C++ 调用WebDriver做简单的页面可达性测试

WebDriver需要做一下简单的修改,
参考一下这篇文章。
https://www.jianshu.com/p/b1283023c1b4
修改完成之后,可以自己把Webdriver的安装文件搞到自己的include目录下面。
然后给webdriverxx弄一个CMakeLists.txt,以便到不同的平台下可以随时安装,不用再进行修改,如图所示,

CMakeLists.txt文件内容如下,
非常简单,把include目录安装上去就行了。

cmake_minimum_required(VERSION 3.5)
project(webdriverxx)

install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/
                  DESTINATION include/${PROJECT_NAME}
                  FILES_MATCHING PATTERN "*")


本例还用到了一个github上面star数为8的工程,html-parser,是用来解析HTML的。
说起来也是比较坑,解析HTML这事儿也太不靠谱了。CPP的library只有为数不多的几个star不高的。好在凑合能用。Google的gumbo比较高端,但是是一个纯C的库。API很恶心,很难用,放弃了。
html-parser这个库我也写了一个CMakeLists.txt,然后把std::cerr的log用glog输出了。这样把日志级别调高点就可以免得满屏都是日志了,太蛋疼了。
html-parser CMakeLists.txt文件如下,

cmake_minimum_required(VERSION 3.0)
project(html-parser)

set(CMAKE_CXX_FLAGS "-Wall -std=c++17")
set(CMAKE_CXX_FLAGS_DEBUG "-g")

if(APPLE)
    message(STATUS "This is Apple, set CMAKE_PREFIX_PATH.")
    set(CMAKE_MACOSX_RPATH 1)
    set(CMAKE_PREFIX_PATH  /Users/aabjfzhu/software/vcpkg/ports/cppwork/vcpkg_installed/x64-osx/share)
elseif(UNIX)
    message(STATUS "This is linux, set CMAKE_PREFIX_PATH.")
    set(CMAKE_PREFIX_PATH /vcpkg/ports/cppwork/vcpkg_installed/x64-linux/share)
endif(APPLE)


if(APPLE)
    MESSAGE(STATUS "This is APPLE, set INCLUDE_DIRS")
set(INCLUDE_DIRS ${Boost_INCLUDE_DIRS} /usr/local/include /usr/local/iODBC/include /opt/snowflake/snowflakeodbc/include/ ${CMAKE_CURRENT_SOURCE_DIR}/../../)
elseif(UNIX)
    MESSAGE(STATUS "This is linux, set INCLUDE_DIRS")
    set(INCLUDE_DIRS ${Boost_INCLUDE_DIRS} /usr/local/include ${CMAKE_CURRENT_SOURCE_DIR}/../../)
endif(APPLE)


if(APPLE)
    MESSAGE(STATUS "This is APPLE, set LINK_DIRS")
    set(LINK_DIRS /usr/local/lib /usr/local/iODBC/lib /opt/snowflake/snowflakeodbc/lib/universal /Users/aabjfzhu/software/vcpkg/ports/cppwork/vcpkg_installed/x64-osx/lib)
elseif(UNIX)
    MESSAGE(STATUS "This is linux, set LINK_DIRS")
    set(LINK_DIRS ${Boost_INCLUDE_DIRS} /usr/local/lib /vcpkg/ports/cppwork/vcpkg_installed/x64-linux/lib)
endif(APPLE)

find_package(glog REQUIRED)

set(CMAKE_CXX_STANDARD_REQUIRED ON)
file( GLOB APP_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cc ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
file( GLOB APP_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h) 

# Remove test files from app sources
list(REMOVE_ITEM APP_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cc")
message(STATUS "${APP_SOURCES}")

add_library(${PROJECT_NAME} SHARED ${APP_SOURCES})
target_link_libraries(${PROJECT_NAME} glog::glog)
add_library(${PROJECT_NAME}_static STATIC ${APP_SOURCES})
target_link_libraries(${PROJECT_NAME}_static glog::glog)

INSTALL (TARGETS ${PROJECT_NAME} ${PROJECT_NAME}_static LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
INSTALL (FILES ${APP_HEADERS} DESTINATION include/${PROJECT_NAME})

html-parser工程目录如下,


Webdriver目录是我们的主测试目录工程,用来做页面可达性测试的。因为一共有好几十个页面,一直点来点去也很蛋疼。关键是开发修改一次就让你点一次。

webdriver工程目录如下,

程序代码如下,
CMakeLists.txt
 

cmake_minimum_required(VERSION 2.6)
project(wd_test)

if(APPLE)
    message(STATUS "This is Apple, set CMAKE_PREFIX_PATH.")
    set(CMAKE_MACOSX_RPATH 1)
    set(CMAKE_PREFIX_PATH  /Users/aabjfzhu/software/vcpkg/ports/cppwork/vcpkg_installed/x64-osx/share)
elseif(UNIX)
    message(STATUS "This is linux, set CMAKE_PREFIX_PATH.")
    set(CMAKE_PREFIX_PATH /vcpkg/ports/cppwork/vcpkg_installed/x64-linux/share)
endif(APPLE)

set(CMAKE_CXX_STANDARD 17)
add_definitions(-g)

add_definitions(-w)

set(CURL_LIBRARY "-lcurl") 
find_package(CURL REQUIRED)

find_package(Boost REQUIRED COMPONENTS
    system
    filesystem
    serialization
    program_options
    thread
    )


    find_package(ZLIB)

find_package(OpenCV REQUIRED )

find_package(Boost REQUIRED COMPONENTS
    system
    filesystem
    serialization
    program_options
    thread
    )

find_package(DataFrame REQUIRED)

if(APPLE)
    MESSAGE(STATUS "This is APPLE, set INCLUDE_DIRS")
set(INCLUDE_DIRS ${Boost_INCLUDE_DIRS} /usr/local/include /usr/local/iODBC/include /opt/snowflake/snowflakeodbc/include/ ${CMAKE_CURRENT_SOURCE_DIR}/../../ ${CURL_INCLUDE_DIR})
elseif(UNIX)
    MESSAGE(STATUS "This is linux, set INCLUDE_DIRS")
    set(INCLUDE_DIRS ${Boost_INCLUDE_DIRS} /usr/local/include ${CMAKE_CURRENT_SOURCE_DIR}/../../)
endif(APPLE)


if(APPLE)
    MESSAGE(STATUS "This is APPLE, set LINK_DIRS")
    set(LINK_DIRS /usr/local/lib /usr/local/iODBC/lib /opt/snowflake/snowflakeodbc/lib/universal /Users/aabjfzhu/software/vcpkg/ports/cppwork/vcpkg_installed/x64-osx/lib)
elseif(UNIX)
    MESSAGE(STATUS "This is linux, set LINK_DIRS")
    set(LINK_DIRS ${Boost_INCLUDE_DIRS} /usr/local/lib /vcpkg/ports/cppwork/vcpkg_installed/x64-linux/lib)
endif(APPLE)

if(APPLE)
    MESSAGE(STATUS "This is APPLE, set ODBC_LIBS")
    set(ODBC_LIBS iodbc iodbcinst)
elseif(UNIX)
    MESSAGE(STATUS "This is linux, set LINK_DIRS")
    set(ODBC_LIBS odbc odbcinst ltdl)
endif(APPLE)

include_directories(${INCLUDE_DIRS})
LINK_DIRECTORIES(${LINK_DIRS})

file( GLOB test_file_list ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) 

file( GLOB APP_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../impl/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../api_accuracy/utils/io_util.cpp  ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/../../http/impl/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../yaml/impl/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../df/impl/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../death_handler/impl/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../html/impl/*.cpp)

add_library(${PROJECT_NAME}_lib SHARED ${APP_SOURCES} ${test_file})
target_link_libraries(${PROJECT_NAME}_lib ${Boost_LIBRARIES} ZLIB::ZLIB DataFrame::DataFrame ${OpenCV_LIBS} ${CURL_LIBRARIES})
target_link_libraries(${PROJECT_NAME}_lib  ssl crypto libgtest.a pystring libyaml-cpp.a libgmock.a ${ODBC_LIBS} libnanodbc.a pthread dl backtrace html-parser)

foreach( test_file ${test_file_list} )
    file(RELATIVE_PATH filename ${CMAKE_CURRENT_SOURCE_DIR} ${test_file})
    string(REPLACE ".cpp" "" file ${filename})
    add_executable(${file}  ${test_file})
    target_link_libraries(${file} ${PROJECT_NAME}_lib)
endforeach( test_file ${test_file_list})

bread_crumb_test.cpp

#include <glog/logging.h>
#include <gtest/gtest.h>
#include <webdriverxx/webdriverxx.h>

#include <fstream>
#include <chrono>
#include <thread>

#include "death_handler/death_handler.h"
#include "html/html_.h"
#include "pystring/pystring.h"
#include "webdriver/link_item.h"
#include "webdriver/test_cfg.h"

using namespace webdriverxx;

int main(int argc, char** argv) {
    FLAGS_log_dir = "./";
    FLAGS_alsologtostderr = true;
    // 日志级别 INFO, WARNING, ERROR, FATAL 的值分别为0、1、2、3
    FLAGS_minloglevel = 1;

    Debug::DeathHandler dh;

    google::InitGoogleLogging("./logs.log");
    testing::InitGoogleTest(&argc, argv);
    int ret = RUN_ALL_TESTS();
    return ret;
}

class BreadCrumbTests : public testing::Test {
   protected:
    virtual void SetUp() {
        std::ifstream ifs{test_data_path};
        auto doc = Html::get_html_doc(ifs);
        auto eles = doc.getElementsByTagName("a");
        for (auto&& ele : eles) {
            auto url = (std::string)ele.getAttribute("href");
            auto name = (std::string)ele.getTextContent();
            LinkItem item{name, url};
            auto index = pystring::find(url, test_host_name);
            if (index >= 0) {
                link_items_.emplace_back(std::move(item));
            }
        }

        for (auto&& item : link_items_) {
            LOG(WARNING) << item.name;
            LOG(WARNING) << item.url;
            LOG(WARNING) << "\n";
        }
    }

    void saveScreenshot(const WebDriver& driver, const std::string& file_name, const int& i) {
        std::stringstream ss;
        ss << screenshot_file_path << i << "_" <<file_name << ".jpg";
        driver.GetScreenshotAsFile(ss.str());
    }

    WebDriver initWebDriver() {
        auto caps = Capabilities();
        caps.SetVersion("93.0.4577.63");
        caps.SetBrowserName(browser::Chrome);
        caps.SetPlatform(platform::Any);
        WebDriver driver = Start(Chrome(caps));
        return std::move(driver);
    }

    void loginToPage(WebDriver& driver, const std::string& url) {
        driver.Navigate(url.c_str());
        std::this_thread::sleep_for(std::chrono::seconds(1));

        driver.FindElement(ByName("username")).SendKeys("[email protected]");
        driver.FindElement(ByXPath(R"(//input[@placeholder="Password"])"))
            .SendKeys("{YOUR_PASSWORD}");
        driver.FindElement(ByXPath(R"(//button[@type="submit"])")).Click();

        std::this_thread::sleep_for(std::chrono::seconds(20));
    }
    virtual void TearDown() {}

    std::vector<LinkItem> link_items_;
};

TEST_F(BreadCrumbTests, TestWebSites) {
    auto driver = initWebDriver();
    int i = 0;
    bool is_case_pass = true;
    for (auto&& item : link_items_) {
        if(i==0) {
            loginToPage(driver, item.url);
        }else {
            driver.Navigate(item.url);
            std::this_thread::sleep_for(std::chrono::seconds(10));
            auto disable_index = pystring::find(item.name, "disabled domain");
            if(disable_index >= 0) {
                auto ele = driver.FindElement(ByClass("Typography__Title-sc-h8dyzi-0 gHUdzW"));
                auto _404_text = ele.GetText();
                
                saveScreenshot(driver, item.name, i);
                if(_404_text != "Oops! 404") {
                    LOG(ERROR) << "Url disabled is not 404 status [" << item.name <<  "] [" << item.url << "]" << "\n";
                    is_case_pass = false;
                }
            }else {
                auto breadcrumb = driver.FindElement(ByXPath("//nav[@aria-label='Breadcrumb']"));

                saveScreenshot(driver, item.name, i);
                if(!breadcrumb.IsDisplayed()) {
                    is_case_pass = false;
                    LOG(ERROR) << "Url breadcrumb is not 200 status [" << item.name << "] [" << item.url << "]" << "\n";
                }
            }       
        }
        ++i;
    }

    ASSERT_TRUE(is_case_pass);
}


test_cfg.h

#ifndef _FREDIRC_TEST_CFG_H_
#define _FREDIRC_TEST_CFG_H_

#include <string>
#include <vector>

extern std::string test_data_path;

extern std::string test_host_name;

extern std::string screenshot_file_path;
#endif


impl/test_cfg.cpp

#include "webdriver/test_cfg.h"

std::string test_data_path = "../data/bookmarks_11_11_21.html";

std::string test_host_name = "tai4.appannie.com";

std::string screenshot_file_path = "../results/";


link_item.h
 

#ifndef _FREDIRC_LINK_ITEM_H_
#define _FREDIRC_LINK_ITEM_H_
#include <string>

struct LinkItem {
    std::string name;
    std::string url;
};
#endif

test/data/bookmarks_11_11_21.html

<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
     It will be read and overwritten.
     DO NOT EDIT! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
                    <DT><H3 ADD_DATE="1626233287" LAST_MODIFIED="1626233287">Breadcrumb-Prod</H3>
                    <DL><p>
                        <DT><A HREF="https://www.appannie.com/company/1000200000000111?device_code=ios-all&country_code=US&date=!(%272020-09-01%27,%272020-11-30%27)&granularity=monthly" ADD_DATE="1610770311" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Google | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/company/1000200000000122/publishers" ADD_DATE="1610770319" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Tencent | App Annie - Top App Publisher Companies by Rankings, Downloads and Revenues</A>
                        <DT><A HREF="https://www.appannie.com/company/1000200000000138/publishers?company_slug=1000200000000138" ADD_DATE="1610770323" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Apple | App Annie - Top App Publisher Companies by Rankings, Downloads and Revenues</A>
                        <DT><A HREF="https://www.appannie.com/company/1000200000000010?device_code=ios-all&country_code=US&date=!(%272020-09-01%27,%272020-11-30%27)&granularity=monthly" ADD_DATE="1610770326" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Baidu | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/apps/google-play/publisher/20200001770104?country_code=US&date=!(%272020-09-01%27,%272020-11-30%27)&granularity=monthly" ADD_DATE="1610770331" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Think Out Srl | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/company/1000200000004911/publishers?company_slug=1000200000004911" ADD_DATE="1610770334" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Spotify | App Annie - Top App Publisher Companies by Rankings, Downloads and Revenues</A>
                        <DT><A HREF="https://www.appannie.com/dashboard/199104/item/14/storeviews/?order_by=app_store_views&order_type=desc&breakdown=country&chart_type=app_store_views&devices=All%20Devices&countries=ALL&date=2016-04-30~2016-05-29&chart_style=line&stack&percent=false&series=US,FR,GB,SG,SE,RU,Others&table_selections=US,FR,GB,SG,SE,RU" ADD_DATE="1610770340" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Flying Dragon | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/apps/ios/app/14/details?date=!(%272020-09-20%27,%272020-12-12%27)&granularity=weekly&country_code=US" ADD_DATE="1610770344" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Flying Dragon | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/dashboard/283703/item/20600001773882/storeviews/?order_by=app_store_views&order_type=desc&breakdown=country&chart_type=app_store_views&countries=ALL&date=2020-09-26~2020-10-25&chart_style=line&stack&percent=false&series=UN,MX,ZW,ZA,YE,XK,Others&table_selections=UN,MX,ZW,ZA,YE,XK" ADD_DATE="1610770355" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">App Annie | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/account/apps/" ADD_DATE="1610770359" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Account Detail | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/apps/google-play/app/com.baidu.baike/details?date=!(%272020-09-27%27,%272020-12-19%27)&granularity=weekly&country_code=WW" ADD_DATE="1610770368" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">百度百科 | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/apps/ios/app/476943146/details?date=!(%272020-10-04%27,%272020-12-26%27)&granularity=weekly&country_code=US" ADD_DATE="1610770371" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Flood–It! | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/apps/ios/app/1032446395/details?date=!(%272020-09-20%27,%272020-12-12%27)&granularity=weekly&country_code=US" ADD_DATE="1610770375" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Action Movie Kit | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/apps/ios/app/698445671/details?date=!(%272020-09-20%27,%272020-12-12%27)&granularity=weekly&country_code=US" ADD_DATE="1610770378" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Saber Movie FX | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/apps/all-stores/app/1000600000652668" ADD_DATE="1610770382" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Arena of Valor | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/apps/all-stores/app/1000600000797998" ADD_DATE="1610770385" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">街霸:对决 | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/apps/all-stores/app/1000600000579812" ADD_DATE="1610770388" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Thoma Bravo Meetings | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/apps/all-stores/app/1000600000734541" ADD_DATE="1610770390" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">POKO | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/apps/amazon-appstore/publisher/30200000013823/" ADD_DATE="1610770395" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Mojang | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/domains/70010000000004/usage?chart_mobile_website_usage_chart$device=(aggr:!f,alignByLaunch:!f,percent:!f,softLaunch:!f,stack:!f,type:line)&mobile_website_usage_chart$device$chart_compare_facets=!(est_average_active_users__aggr)&breakdowns=(country_code:!n,device_code:())&device_code=all-phone&country_code=US&date=!(%272020-09-06%27,%272020-12-12%27)&granularity=weekly&chart_facets=!(est_usage_penetration__aggr)&table_facets=!(est_usage_penetration__aggr,est_average_active_users__aggr,est_average_session_per_user__aggr,est_average_session_duration__aggr,est_total_sessions__aggr,est_average_time_per_user__aggr,est_total_time__aggr)&order_by=!((name:est_usage_penetration__aggr,order:desc))" ADD_DATE="1610770398" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">youtube.com | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/apps/all-stores/app/1000600000000441" ADD_DATE="1610770401" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">YouTube | App Annie</A>
                        <DT><A HREF="https://www.appannie.com/sdks/60100000000836?device_code=(equal:all)&country_code=(equal:WW)&unified_category_id=(equal:800000)&sdk_install_status_code=(equal:installed)&product_id=(in:(breakdowns:(product_id:()),facets:!(est
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值