华为云用户手册
-
公共镜像类型 华为云提供的公共镜像覆盖华为自研的HCE OS、EulerOS镜像和第三方商业镜像,您可以根据实际需要选择。在使用过程中,如果遇到操作系统类问题,您可以联系操作系统厂商或者开源社区获得技术支持。同时,华为云也会提供相应的技术协助。 华为自研镜像的区别和联系详见华为自研镜像的区别和联系。 表1 公共镜像类型 公共镜像类型 描述 Huawei Cloud EulerOS镜像 Huawei Cloud EulerOS(简称HCE)是基于openEuler构建的云上操作系统。 HCE打造云原生、高性能、高安全、易迁移等能力,加速用户业务上云,提升用户的应用创新空间,可替代CentOS、EulerOS等公共镜像。 华为自研EulerOS镜像 EulerOS是基于开源技术的企业级Linux操作系统软件,具备高安全性、高可扩展性、高性能等技术特性,能够满足客户IT基础设施和云计算服务等多业务场景需求。 说明: EulerOS是基于开源操作系统openEuler进行开发的华为内部的操作系统。 第三方商业镜像 经华为云严格测试并制作发布,皆已正版授权,能够保证镜像安全、稳定。第三方公共镜像包括: Windows:Windows Server Linux:Ubuntu、CentOS、openSUSE、Debian、Fedora、FreeBSD、CoreOS等。 服务器规格不同,可供选择的镜像操作系统会有所不同,详情请参考: 弹性云服务器类型与支持的操作系统版本 裸金属服务器类型与支持的操作系统版本
-
操作步骤 以Administrator用户登录系统。 打开启动文件夹。 打开“运行”对话框(按 “Win + R”),输入 “shell:startup”并单击“确定”。 创建DeleteStartOverride.bat脚本。 在启动文件夹中创建DeleteStartOverride.bat脚本。 脚本内容为: @echo off reg delete "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\viostor\StartOverride" /f reg delete "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\vioscsi\StartOverride" /f 创建计划任务。 在开始菜单搜索框中输入“任务计划程序”,并点击打开。 点击“创建任务”。 在“常规”页签内,输入任务名称,例如“删除注册表项”,勾选“不管用户是否登录都要运行” 和 “使用最高权限运行”选项。 切换到“触发器”页签,单击“新建”,在“开始任务”选择框选择“启动时”选项,单击“确定”。 切换到“操作”页签,单击“新建”,单击“浏览”并选择步骤3创建的DeleteStartOverride.bat脚本。 单击”确定“,并输入密码完成任务创建。
-
创建加密镜像 创建加密镜像分为通过外部镜像文件创建加密镜像和通过加密弹性云服务器创建加密镜像。 通过外部镜像文件创建加密镜像 用户使用OBS桶中已上传的外部镜像文件创建私有镜像,可以在注册镜像时选择KMS加密及密钥完成镜像加密。具体操作步骤请参考通过外部镜像文件创建系统盘镜像。 通过加密弹性云服务器创建加密镜像 用户选择弹性云服务器创建私有镜像时,如果该云服务器的系统盘已加密,那么使用该云服务器创建的私有镜像也是加密的。加密镜像使用的密钥和系统盘的密钥保持一致。具体操作请参考通过云服务器创建系统盘镜像。
-
采用官方提供的包源安装Cloud-Init工具(优先推荐) 在不同操作系统的云服务器上安装Cloud-Init工具的方法不同,请在root用户下执行相关安装操作。 以下将介绍SUSE、CentOS、Fedora、Debian和Ubuntu操作系统安装Cloud-Init工具的具体方法。其他操作系统类型,请安装并配置对应类型的Cloud-Init工具,例如,使用CoreOS操作系统时需安装并配置coreos-cloudinit。 SUSE操作系统 SUSE操作系统的Cloud-Init网络安装地址: https://ftp5.gwdg.de/pub/opensuse/repositories/Cloud:/Tools/ http://download.opensuse.org/repositories/Cloud:/Tools/ 在上述提供的网络安装地址下选择相应操作系统版本的repo安装包进行安装。 以SUSE Enterprise Linux Server 12为例,Cloud-Init工具的安装步骤如下。 登录到创建Linux私有镜像所使用的云服务器。 执行以下命令,安装SUSE 12的网络安装源。 zypper ar https://ftp5.gwdg.de/pub/opensuse/repositories/Cloud:/Tools/SLE_12_SP3/Cloud:Tools.repo 执行以下命令,更新网络安装源。 zypper refresh 执行以下命令,安装Cloud-Init。 zypper install cloud-init 执行以下命令,设置Cloud-Init为开机自启动服务。 SUSE 11: chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on service cloud-init-local status; service cloud-init status; service cloud-config status; service cloud-final status SUSE 12以及openSUSE 12/13/42: systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 对于SUSE和openSUSE操作系统,请执行以下步骤禁止动态修改主机名称。 执行以下命令,使用vi编辑器打开“dhcp”文件。 vi etc/sysconfig/network/dhcp 将“dhcp”文件中的“DHCLIENT_SET_HOSTNAME”的值修改为“no”。 CentOS操作系统 CentOS操作系统的Cloud-Init网络安装地址如表1所示。请在提供的网络安装地址下选择相应的epel-release安装包进行安装。 表1 Cloud-Init网络安装地址 操作系统类型 版本 网络安装地址 CentOS 6系列32位 https://archives.fedoraproject.org/pub/archive/epel/6/i386/ 6系列64位 https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/ 7系列64位 https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/e/ 执行以下命令安装Cloud-Init: yum install 网络安装地址/epel-release-x-y.noarch.rpm yum install cloud-init “网络安装地址”表示Cloud-Init对应的epel-release安装包的地址,“x-y”表示当前操作系统对应的Cloud-Init epel-release版本号,执行命令时需参考表1以及实际使用的安装包版本进行替换。 以CentOS 6系列64位为例,当前版本号为6.8,则命令修改为: yum install https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm 以CentOS 7系列64位为例,当前版本号为7.14,则命令修改为: yum install https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm 执行以下命令,设置Cloud-Init为开机自启动服务。 systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service Fedora操作系统 安装Cloud-Init前,请确认操作系统已经配置好对应的网络安装源地址,请查看“/etc/yum.repo.d/fedora.repo”文件中是否已配置相关软件包安装源地址,如果没有配置相关地址源,请参考相关Fedora官网信息配置软件包安装源。 执行以下命令,安装Cloud-Init。 yum install cloud-init 执行以下命令,设置Cloud-Init为开机自启动服务。 systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service Debian和Ubuntu操作系统 安装Cloud-Init前,请确认操作系统已经配置好对应的网络安装源地址,请查看“/etc/apt/sources.list”文件中是否已配置相关软件包安装源地址,如果没有配置相关地址源,请参考Debian或者Ubuntu官网信息配置软件包安装源。 执行以下命令,安装Cloud-Init。 apt-get update apt-get install cloud-init 执行以下命令,设置Cloud-Init为开机自启动服务。 systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 以cloud-init-23.2.2版本为例,介绍Centos、Fedora、Ubuntu、Debian和SUSE操作系统安装Cloud-Init工具的具体方法,安装步骤如下。 cloud-init-23.2.2.tar.gz源码包下载地址:https://launchpad.net/cloud-init/trunk/23.2.2/+download/cloud-init-23.2.2.tar.gz Centos 7/Fedora (Fedora-Server-36)操作系统 依赖python3 环境,确认已经安装python3。 查询当前系统环境是否已安装cloud-init, 执行有结果表示已经安装。 cloud-init -v 删除cloud-init缓存目录。 rm -rf /var/lib/cloud/* 安装cloud-init依赖包。 yum install python3-pip -y yum install python3-devel 执行如下命令,下载cloud-init压缩包。 wget https://launchpad.net/cloud-init/trunk/23.2.2/+download/cloud-init-23.2.2.tar.gz 执行如下命令,解压cloud-init压缩包。 tar -zxvf cloud-init-23.2.2.tar.gz 执行如下命令进入cloud-init-23.2.2目录文件夹,并安装所有依赖库。 cd cloud-init-23.2.2 pip3 install -r requirements.txt 执行如下命令安装cloud-init。 python3 setup.py build python3 setup.py install --init-system systemd 在配置文件/etc/cloud/cloud.cfg禁用cloud-init接管网络(可选)。 vi /etc/cloud/cloud.cfg 添加如下内容: network: config: disabled 重启cloud-init, 查看cloud-init 状态。 systemctl restart cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 设置cloud-init相关服务为开机自启动。 systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 执行如下命令检查cloud-init版本以及是否正常运行。 cloud-init -v cloud-init init --local Ubuntu22.0.4/debian11操作系统 依赖python3 环境,确认已经安装python3。 检查并清理系统自带的cloud-init可能存在冗余的配置文件。 rm -rf /var/lib/cloud/* rm -f /var/log/cloud-init* 删除/etc/cloud/cloud.cfg.d/目录下除了log相关的配置文件外的所有文件。 执行如下命令更新apt,检查是否有wget,没有则安装。 sudo apt update sudo apt install wget 执行如下命令,安装依赖包。 apt-get install cloud-guest-utils -y apt-get install python3-pip -y apt-get install python3-devel 执行以下命令,下载cloud-init压缩包。 wget https://launchpad.net/cloud-init/trunk/23.2.2/+download/cloud-init-23.2.2.tar.gz 执行如下命令,解压cloud-init压缩包。 tar -zxvf cloud-init-23.2.2.tar.gz 进入cloud-init目录。 cd cloud-init-23.2.2 执行如下命令安装所有依赖库。 pip3 install -r requirements.txt 执行如下命令安装cloud-init。 python3 setup.py install 在vi /etc/cloud/cloud.cfg配置禁止cloud-init接管网络(可选)。 1.当cloud-init版本等于高于0.7.9版本,且用户需要自定义网络时,在cloud-init安装完成后,请执行如下命令,在编辑器中打开/etc/cloud/cloud.cfg。 vi /etc/cloud/cloud.cfg 2.输入i, 在/etc/cloud/cloud.cfg中将network修改为disabled, 禁用Cloud-Init接管网络配置(若没有该配置项请增加): network: config: disabled 重启cloud-init, 查看cloud-init 状态。 systemctl restart cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 设置cloud-init相关服务为开机自启动。 systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 执行如下命令检查cloud-init版本以及是否正常运行。 cloud-init -v cloud-init init --local SUSE Enterprise Linux Server 15操作系统 依赖python3 环境,确认已经安装python3。 执行如下命令查看历史已配置好的安装源。 zypper lr 执行如下命令删除历史配置的suse的cloud-init的源。 zypper rr 步骤1中执行结果显示的序号 执行如下命令配置suse源。 zypper ar https://ftp5.gwdg.de/pub/opensuse/repositories/Cloud:/Tools/SLE_15_SP4/Cloud:Tools.repo 执行如下命令刷新suse源。 zypper refresh 执行如下命令安装cloud-init。 zypper install cloud-init 安装cloud-init成功后,执行cloud-init -v,若出现类似下图报错提示,需执行如下命令安装依赖包。 pip install requests pyyaml oauthlib jsonschema jsonpatch jinja2 configobj 检查cloud-init是否安装成功,若出现下图报错提示,则需要在/etc/cloud/cloud.cfg配置datasource_list。 datasource_list: [ OpenStack ] datasource: OpenStack: metadata_urls: ['http://169.254.169.254'] max_wait: 120 timeout: 5 apply_network_config: false 修改配置文件后,重启cloud-init, 并查看cloud-init 的状态。 systemctl restart cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 设置cloud-init相关服务为开机自启动。 systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 执行如下命令检查cloud-init版本以及是否正常运行。 cloud-init -v cloud-init init --local
-
检查Cloud-Init工具相关配置是否成功 执行以下命令,无错误发生,说明Cloud-Init配置成功。 cloud-init init --local 正确安装的Cloud-Init会显示Cloud-Init的版本详细信息,并且无任何错误信息。例如,正确安装的情况下,不含有缺少文件的提示信息。 执行如下命令,可将系统用户密码有效期设置为最大。此操作可选。 chage -M 99999 $user_name 其中,user_name为系统用户,例如root账户。 密码有效期建议设置为99999。
-
采用官方源码编译安装方法 官方源码编译安装方法的Cloud-Init工具Github开源地址:https://github.com/canonical/cloud-init/ 执行以下命令,下载Cloud-Init压缩包,并将其复制至新建的“/tmp/CLOUD-INIT”文件夹。 0.7.6版本安装包下载地址:https://github.com/canonical/cloud-init/archive/refs/tags/0.7.6.zip 0.7.9版本安装包下载地址:https://github.com/canonical/cloud-init/archive/refs/tags/0.7.9.zip Cloud-Init所有版本安装包下载地址:https://github.com/canonical/cloud-init/releases wget https://github.com/canonical/cloud-init/archive/refs/tags/0.7.6.zip mkdir /tmp/CLOUD-INIT cp cloud-init-0.7.6.zip /tmp/CLOUD-INIT cd /tmp/CLOUD-INIT 执行如下命令,解压Cloud-Init压缩包。 unzip cloud-init-0.7.6.zip 执行如下命令进入cloud-init-0.7.6文件夹。 cd cloud-init-0.7.6 若cloud-init为18.3~22.3版本,则需要进行如下适配。否则跳过本步骤,继续执行下一步。 sed -i '/VALID_DMI_ASSET_TAGS =/a\VALID_DMI_ASSET_TAGS += ["HUAWEICLOUD"]' cloudinit/sources/DataSourceOpenStack.py cat cloudinit/sources/DataSourceOpenStack.py | grep VALID_DMI_ASSET_TAGS 确认执行结果如下图,表示语句添加成功。 按照操作系统类型,执行相应的命令安装Cloud-Init安装包。 CentOS6.x/SUSE11.x: python setup.py build python setup.py install --init-system sysvinit CentOS7.x/SUSE12.x: python setup.py build python setup.py install --init-system systemd Cloud-Init安装时需要添加syslog用户到adm组。存在syslog用户时直接添加syslog用户到adm组。不存在syslog用户时(如CentOS和SUSE),执行下列命令创建syslog用户,添加到adm组: useradd syslog groupadd adm usermod -g adm syslog 设置Cloud-Init相关服务为开机自启动。 若操作系统是sysvinit自启动管理服务,则执行以下命令进行设置。 chkconfig --add cloud-init-local; chkconfig --add cloud-init; chkconfig --add cloud-config; chkconfig --add cloud-final chkconfig cloud-init-local on; chkconfig cloud-init on; chkconfig cloud-config on; chkconfig cloud-final on service cloud-init-local status; service cloud-init status; service cloud-config status; service cloud-final status 若操作系统是systemd自启动管理服务,则执行以下命令进行设置。 systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 执行如下命令检查Cloud-Init是否安装成功。 cloud-init -v cloud-init init --local 回显如下类似信息所示表示安装Cloud-Init成功。 cloud-init 0.7.6
-
操作场景 为了保证使用私有镜像创建的新云服务器可以通过“用户数据注入”功能注入初始化自定义信息(例如为云服务器设置登录密码),请在创建私有镜像前安装Cloud-Init工具。 使用公共镜像创建的云服务器,默认已经安装Cloud-Init,不需要执行安装及配置操作。 用户导入镜像创建的云服务器,请按照指导安装及配置Cloud-Init。 安装Cloud-Init工具时需要从官网下载并安装,因此,需要提前为云服务器绑定弹性公网IP。 不安装Cloud-Init工具,将无法对云服务器进行自定义配置,只能使用镜像原有密码登录云服务器。
-
检查是否已经安装Cloud-Init工具 请先执行如下步骤检查是否已安装Cloud-Init工具。在不同的操作系统下,查看是否已经安装Cloud-Init工具的方法不同。 若依赖python3 环境时,以Ubuntu22.0.4为例,执行以下命令查看是否安装Cloud-Init工具。 which cloud-init 回显类似如下,表示已经安装Cloud-Init工具,无需重复安装。 /usr/bin/cloud-init 回显类似如下,表示未安装Cloud-Init工具。 /usr/bin/which: no cloud-init in (/usr/local/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin) 若依赖python2 环境时,以CentOS 6系列为例,执行以下命令查看是否安装Cloud-Init工具。 which cloud-init 回显类似如下,表示已经安装Cloud-Init工具,无需重复安装。 cloud-init-0.7.5-10.el6.centos.2.x86_64 无回显信息表示未安装Cloud-Init工具。 由于Cloud-Init工具存在多种安装方法,如果无回显信息,请再次使用rpm -qa |grep cloud-init命令进行检查。which cloud-init和rpm -qa |grep cloud-init任何一个命令显示已安装,表示操作系统已安装Cloud-Init工具。 如果已安装Cloud-Init工具,还需要执行以下操作: 请确认当前云服务器操作系统中用于SSH登录的证书是否继续使用。如果不再使用该证书,请删除证书。 root用户对应目录下的文件(如“/$path/$to/$root/.ssh/authorized_keys”),执行以下命令: cd /root/.ssh rm authorized_keys 非root用户对应目录下的证书文件(如“/$path/$to/$none-root/.ssh/authorized_keys”),执行以下命令: cd /home/centos/.ssh rm authorized_keys 执行以下命令,清除Cloud-Init工具产生的缓存,确保使用该私有镜像创建的云服务器可以使用证书方式登录。 sudo rm -rf /var/lib/cloud/* 设置完成后请勿重启云服务器,否则,需重新设置。
-
镜像源为云服务器或镜像文件 表1 云服务器相关配置项 操作系统 相关配置项 Windows 设置Windows系统网卡属性为DHCP 开启远程桌面连接功能 (可选)安装Windows特殊驱动 Windows系统安装一键式重置密码插件 (可选)安装并配置Cloudbase-Init工具 安装Guest OS driver,包括PV driver和virtio驱动 执行Sysprep操作 Linux 设置Linux系统网卡属性为DHCP (可选)安装Linux特殊驱动 安装一键式重置密码插件(Linux) (可选)安装和配置Cloud-Init工具 清理网络规则文件 修改grub文件磁盘标识方式为UUID 修改fstab文件磁盘标识方式为UUID XEN虚拟化E CS 安装原生的XEN和KVM驱动 KVM虚拟化ECS安装原生的KVM驱动 卸载云服务器的数据盘 如果待创建私有镜像的云服务器使用的是公共镜像,那么默认已安装一键式重置密码插件和Cloud-Init工具。 表2 镜像文件(用于创建云服务器)相关配置项 操作系统 相关配置项 Windows 设置Windows系统网卡属性为DHCP 开启远程桌面连接功能 Windows系统安装一键式重置密码插件 (可选)安装并配置Cloudbase-Init工具 安装Guest OS driver,包括PV driver和virtio驱动 (可选)开启网卡多队列 (可选)配置IPv6地址 Linux 清理网络规则文件 设置Linux系统网卡属性为DHCP 清理网络规则文件 修改grub文件磁盘标识方式为UUID 修改fstab文件磁盘标识方式为UUID XEN虚拟化ECS安装原生的XEN和KVM驱动 KVM虚拟化ECS安装原生的KVM驱动 设置Linux系统网卡属性为DHCP (可选)开启网卡多队列 (可选)配置IPv6地址 使用外部镜像文件创建私有镜像时,以上相关步骤操作需要在虚拟机内部完成,强烈建议您在原平台的虚拟机实施修改后,再导出镜像。 使用Windows外部镜像文件创建私有镜像时,关于Guest OS driver,在勾选“进行后台自动化配置”后,云平台会对镜像文件进行检查,如果未添加Guest OS driver,会尽力帮助客户进行自动安装。
-
镜像源为裸金属服务器或镜像文件 表3 裸金属服务器相关配置项 操作系统 相关配置项 参考链接 Windows 安装bms-network-config软件包 安装Cloudbase-Init工具 清理操作系统中的残留文件 通过裸金属服务器创建私有镜像 Linux 安装bms-network-config软件包 安装Cloud-Init工具 清理操作系统中的残留文件 表4 镜像文件(用于创建裸金属服务器)相关配置项 操作系统 相关配置项 参考链接 Windows 安装v5服务器驱动 安装Cloudbase-Init工具 安装bms-network-config软件包 安装SDI卡驱动(可选) 安装一键式重置密码插件(可选) Windows时区校准设置 Windows虚拟内存设置 Windows自动更新配置(可选) 配置SID 《裸金属服务器私有镜像制作指南》的“制作镜像简介”章节 Linux 安装并配置Cloud-Init 修改引导的硬件设备驱动 安装bms-network-config软件包 安装SDI卡驱动(可选) 安装Hi1822网卡驱动(可选) 安装IB驱动(可选) 安装v5服务器驱动(可选) 安装多路径软件(可选) 安装一键式重置密码插件(可选) 安全性配置 配置裸金属服务器远程登录 配置根分区自动扩盘
-
支持审计的关键操作列表 表1 云审计 服务支持的IMS操作列表 操作名称 资源类型 事件名称 创建镜像 ims createImage 修改镜像 ims updateImage 批量删除镜像 ims deleteImage 复制镜像 ims copyImage 导出镜像 ims exportImage 新增成员 ims addMember 批量修改成员 ims updateMember 批量删除成员 ims deleteMember 表2 由IMS触发的操作与OpenStack原生接口的关系 操作名称 事件名称 服务类型 资源类型 归属 创建镜像 createImage IMS image glance 修改镜像信息/上传镜像 updateImage IMS image glance 删除镜像 deleteImage IMS image glance 添加标签 addTag IMS image glance 删除标签 deleteTag IMS image glance 添加镜像成员 addMember IMS image glance 修改镜像成员信息 updateMember IMS image glance 删除镜像成员 deleteMember IMS image glance
-
请求参数 请求类为RttsRequest,详见表 RttsRequest。 表2 RttsRequest 参数名称 是否必选 参数类型 描述 text 是 String 待合成文本,不超过500字。 通过set方法可以设置具体参数,详见表 RttsRequest设置参数 表3 RttsRequest设置参数 方法名称 是否必选 参数类型 描述 SetAudioFormat 否 String 设置语音格式,默认pcm。 SetAudioProperty 否 String 设置 语音合成 特征字符串,{language}_{speaker}_{domain},即“语种_人员标识_领域”。默认chinese_xiaoyan_common 。详见API文档。 SetSampleRate 否 String 设置采样率:8000、16000,默认8000。 SetPitch 否 Integer 设置音高,-500~500,默认0。 SetVolume 否 Integer 设置音量,0~100,默认50。 SetSpeed 否 Integer 设置语速,-500~500,默认0。
-
初始化Client 初始化RttsClient,其参数包括AuthInfo 表1 AuthInfo 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 projectId 是 String 项目ID,同region一一对应,参考获取项目ID。 region 是 String 区域,如cn-north-4,参考终端节点。 endpoint 否 String 终端节点,参考地区和终端节点。一般使用默认即可。
-
初始化Client 初始化HotWordClient,其参数包括AuthInfo和SisConfig。 表1 AuthInfo 参数名称 是否必选 参数类型 描述 ak 是 String 用户的ak,可参考AK/SK认证。 sk 是 String 用户的sk,可参考AK/SK认证。 region 是 String 区域,如cn-north-4,参考终端节点。 projectId 是 String 项目ID,同region一一对应,参考获取项目ID。 endpoint 否 String 终端节点,参考地区和终端节点。 表2 SisConfig 参数名称 是否必选 参数类型 描述 connectionTimeout 否 Integer 连接超时,默认10000,单位ms。 readTimeout 否 Integer 读取超时,默认10000,单位ms。
-
请求参数 请求类为HotWordRequest,详见表3。 表3 HotWordRequest 参数名称 是否必选 参数类型 描述 name 是 String 热词表名,创建时不可重复。内容限制为字母,数字,下中划线和井号,长度不超过32字节。 language 是 String 热词表语言类型,目前支持汉语普通话“chinese_mandarin”。 contents 是 Array of String 热词库,单词库支持热词数上限10000。中文单个热词长度上限32字节。 description 否 String 热词表描述,长度不超过255字节。
-
请求参数 请求类为RecognizeShortAudioRequest,该类的body参数为PostShortAudioReq。 PostShortAudioReq的包含data,和config两个参数,其中data为识别音频的base64格式的字符串。Config参数详见表1。 表1 Config 参数 是否必选 参数类型 描述 audioFormat 是 String 支持语音的格式,请参考表 audio_format取值范围。 property 是 String 所使用的模型特征串,通常是 “语种_采样率_领域”的形式,采样率需要与音频采样率保持一致,取值范围请参考表 property取值范围。 addPunc 否 String 表示是否在识别结果中添加标点,取值为“yes”和“no”,默认为“no”。 digitNorm 否 String 表示是否将语音中的数字识别为阿拉伯数字,取值为“yes” 和 “no”,默认为“yes”。 vocabularyId 否 String 热词表id,不使用则不填写。 创建热词表信息请参考创建热词表。 needWordInfo 否 String 表示是否在识别结果中输出分词结果信息,取值为“yes”和“no”,默认为“no”。 伪代码 com.huaweicloud.sdk.sis.v1.model.Config configbody = new com.huaweicloud.sdk.sis.v1.model.Config();configbody.setAudioFormat(com.huaweicloud.sdk.sis.v1.model.Config.AudioFormatEnum.fromValue("pcm16k16bit")); configbody.setProperty(com.huaweicloud.sdk.sis.v1.model.Config.PropertyEnum.fromValue("chinese_16k_general")); configbody.setAddPunc(com.huaweicloud.sdk.sis.v1.model.Config.AddPuncEnum.YES); RecognizeShortAudioRequest request = new RecognizeShortAudioRequest(); PostShortAudioReq body = new PostShortAudioReq();body.withData(encoded);body.withConfig(configbody); request.withBody(body);
-
发送请求 RecognizeShortAudioResponse response = client.recognizeShortAudio(request); 返回体RecognizeShortAudioResponse的参数如下表所示。 状态码: 200 表2 响应Body参数 参数 是否必选 参数类型 描述 trace_id 是 String 服务内部的令牌,可用于在日志中追溯具体流程,调用失败无此字段。 在某些错误情况下可能没有此令牌字符串。 result 是 Result object 调用成功表示识别结果,调用失败时无此字段。 表3 Result 参数 是否必选 参数类型 描述 text 是 String 调用成功表示识别出的内容。 score 是 Float 调用成功表示识别出的置信度,取值范围:0~1。 word_info 否 Array of WordInfo objects 分词信息列表。 表4 WordInfo 参数 是否必选 参数类型 描述 start_time 否 Integer 起始时间。 end_time 否 Integer 结束时间。 word 否 String 分词。 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 调用失败时的错误码。 调用成功时无此字段。 error_msg String 调用失败时的错误信息。 调用成功时无此字段。
-
初始化Client 初始化SisClient,详细信息如下。 配置客户端连接参数。 默认配置 // 使用默认配置 HttpConfig config = HttpConfig.getDefaultHttpConfig(); 网络代理(可选) // 根据需要配置网络代理,网络代理默认的协议为 `http` 协议 config.withProxyHost("proxy.huaweicloud.com") .withProxyPort(8080) .withProxyUsername("test") .withProxyPassword("test"); 超时配置(可选) // 默认连接超时时间为60秒,可根据需要调整 config.withTimeout(60); SSL配置(可选) // 根据需要配置是否跳过SSL证书验证 config.withIgnoreSSLVerification(true); 配置认证信息。 配置AK、SK、project_id信息。华为云通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。 使用永久AK和SK BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk) .withProjectId(projectId); 使用临时AK和SK BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk) .withSecurityToken(securityToken) .withProjectId(projectId) 认证参数说明: ak、sk:访问密钥信息,获取方法请参考AK/SK认证。 projectId:华为云项目ID,获取方法请参考获取项目ID。 securityToken:采用临时AK、SK 认证场景下的安全票据,可以通过token获取或者通过委托授权获取。 初始化客户端(region和指定云服务enddpoint二选一即可)。 指定region方式(强烈推荐推荐) // 初始化客户端认证信息,使用当前客户端初始化方式可不填 projectId/domainId,以初始化 BasicCredentials 为例 BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk); // 初始化指定云服务的客户端 {Service}Client ,以初始化 Region 级服务Sis的 SisClient 为例 SisClient client = SisClient.newBuilder() .withHttpConfig(config) .withCredential(bhttps://developer.huaweicloud.com/endpoint?SISasicCredentials) .withRegion(SisRegion.valueOf("cn-north-4")) .build(); 指定云服务endpoint方式(可选) // 指定终端节点,以Sis服务北京四的 endpoint 为例 String endpoint = "https://sis-ext.cn-north-4.myhuaweicloud.com"; // 初始化客户端认证信息,需要填写相应 projectId/domainId,以初始化 BasicCredentials 为例 BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk) .withProjectId(projectId); // 初始化指定云服务的客户端 {Service}Client ,以初始化 Region 级服务SiS的 SisClient 为例 SisClient client = SisClient.newBuilder() .withHttpConfig(config) .withCredential(basicCredentials) .withEndpoint(endpoint) .build(); endpoint是华为云各服务应用区域和各服务的终端节点,详情请查看 地区和终端节点。
-
示例代码 如下示例仅供参考,最新代码请前往SDK(websocket)章节获取并运行。 /* * Copyright (c) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved. */ package com.huaweicloud.sis.android.demo.tts; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.core.http.HttpConfig; import com.huaweicloud.sdk.core.utils.StringUtils; import com.huaweicloud.sdk.sis.v1.SisClient; import com.huaweicloud.sdk.sis.v1.model.PostCustom TTS Req; import com.huaweicloud.sdk.sis.v1.model.RunTtsRequest; import com.huaweicloud.sdk.sis.v1.model.RunTtsResponse; import com.huaweicloud.sdk.sis.v1.model.TtsConfig; import com.huaweicloud.sdk.sis.v1.region.SisRegion; import com.huaweicloud.sis.android.demo.R; import com.huaweicloud.sis.android.demo.service.MediaPlayerService; import com.huaweicloud.sis.android.demo.Config; /** * 功能描述 * 语音合成 http * * @since 2022-07-18 */ public class SttsActivity extends AppCompatActivity { private EditText text; private TextView outResult; private Button startSoundRecording; private Button startPlay; private Handler handler; // 保存合成的base64字符串 private String base64Data; // 合成音频路径 private String createFilePath; // 客户端请求 private SisClient client; private MediaPlayerService mediaPlayerService; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.stts); } @Override protected void onStart() { super.onStart(); initView(); initResoureces(); } @Override protected void onDestroy() { mediaPlayerService.stopMyPlayer(createFilePath); super.onDestroy(); } // 初始化界面 private void initView() { text = findViewById(R.id.input_text); outResult = findViewById(R.id.out_result); startSoundRecording = findViewById(R.id.start); startPlay = findViewById(R.id.startplay); startSoundRecording.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Runnable runnable = new Runnable() { @Override public void run() { String sttsRequestText = getSttsResponse(); Message message = new Message(); Bundle mBundle = new Bundle(); mBundle.putString("result", sttsRequestText); message.setData(mBundle); handler.sendMessage(message); } }; new Thread(runnable).start(); } }); startPlay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (!StringUtils.isEmpty(base64Data)) { createFilePath = mediaPlayerService.createAudioFile(getBaseContext(), "wav", base64Data); mediaPlayerService.startPlay(createFilePath); } } }); } /** * 初始化资源 * * @return */ private void initResoureces() { BasicCredentials auth = new BasicCredentials() .withAk(this.getString(R.string.HUAWEICLOUD_SDK_AK)) .withSk(this.getString(R.string.HUAWEICLOUD_SDK_SK)) .withProjectId(Config.PROJECT_ID); HttpConfig config = HttpConfig.getDefaultHttpConfig(); config.withIgnoreSSLVerification(true); client = SisClient.newBuilder() .withHttpConfig(config) .withCredential(auth) .withRegion(SisRegion.valueOf(Config.REGION)) .build(); handler = new Handler(getMainLooper()) { @Override public void handleMessage(@NonNull Message message) { super.handleMessage(message); switch (message.what) { case 0: Bundle bundle = message.getData(); String rstr = bundle.getString("result"); outResult.setText(rstr); break; default: Log.e("Unexpected value: ", String.valueOf(message.what)); } } }; mediaPlayerService = new MediaPlayerService(); } // 设置请求体 private RunTtsRequest getRunTtsRequest() { TtsConfig configbody = new TtsConfig(); configbody.setAudioFormat(TtsConfig.AudioFormatEnum.fromValue("wav")); configbody.setSampleRate(TtsConfig.SampleRateEnum.fromValue("8000")); configbody.setProperty(TtsConfig.PropertyEnum.fromValue("chinese_huaxiaomei_common")); RunTtsRequest request = new RunTtsRequest(); PostCustomTTSReq body = new PostCustomTTSReq(); body.withConfig(configbody); if (!StringUtils.isEmpty(text.getText().toString())) { body.withText(text.getText().toString()); } else { body.withText("请输入合成文本"); } request.withBody(body); return request; } // 发送请求 private String getSttsResponse() { RunTtsRequest request = getRunTtsRequest(); String ttsString = ""; try { RunTtsResponse response = client.runTts(request); if (response.getResult().getData() != null) { base64Data = response.getResult().getData(); ttsString = "合成成功"; } else { ttsString = "合成失败"; } Log.i("info", ttsString); } catch (ConnectionException | RequestTimeoutException | ServiceResponseException e) { Log.e("error", e.toString()); } catch (Exception e) { Log.e("error", e.toString()); } return ttsString; } @Override protected void onPause() { mediaPlayerService.stopMyPlayer(createFilePath); super.onPause(); } }
-
请求参数 请求类为RunTtsRequest,其中包含参数类PostCustomTTSReq,该类包含两个参数text(待合成文本)和TtsConfig,详见TtsConfig。 表1 TtsConfig 参数名称 是否必选 参数类型 描述 audio_format 否 String 待合成的音频格式,可选mp3,wav等,默认wav。具体信息请参见《API参考》中语音合成章节。 pitch 否 Integer 音高,[-500,500] ,默认是0。 speed 否 Integer 语速,[-500,500] ,默认是0。 volume 否 Integer 音量,[0,100],默认是50。 sample_rate 否 String 采样率,支持“8000”、“16000”,默认“8000”。 property 否 String 特征字符串,{language}_{speaker}_{domain},默认chinese_xiaoqi_common。具体信息请参见《API参考》中语音合成章节。 伪代码 TtsConfig configbody = new TtsConfig(); configbody.setAudioFormat(TtsConfig.AudioFormatEnum.fromValue("wav")); configbody.setSampleRate(TtsConfig.SampleRateEnum.fromValue("8000")); configbody.setProperty(TtsConfig.PropertyEnum.fromValue("chinese_huaxiaomei_common")); RunTtsRequest request = new RunTtsRequest(); PostCustomTTSReq body = new PostCustomTTSReq(); body.withConfig(configbody); if (!StringUtils.isEmpty(text.getText().toString())) { body.withText(text.getText().toString()); } else { body.withText("请输入合成文本"); } request.withBody(body); return request;
-
初始化Client 初始化SisClient,详细信息如下。 配置客户端连接参数。 默认配置 // 使用默认配置 HttpConfig config = HttpConfig.getDefaultHttpConfig(); 网络代理(可选) // 根据需要配置网络代理,网络代理默认的协议为 `http` 协议 config.withProxyHost("proxy.huaweicloud.com") .withProxyPort(8080) .withProxyUsername("test") .withProxyPassword("test"); 超时配置(可选) // 默认连接超时时间为60秒,可根据需要调整 config.withTimeout(60); SSL配置(可选) // 根据需要配置是否跳过SSL证书验证 config.withIgnoreSSLVerification(true); 配置认证信息。 配置AK、SK、project_id信息。华为云通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。 使用永久AK和SK BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk) .withProjectId(projectId); 使用临时AK和SK BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk) .withSecurityToken(securityToken) .withProjectId(projectId) 认证参数说明: ak、sk:访问密钥信息,获取方法请参考AK/SK认证。 projectId:华为云项目ID,获取方法请参考获取项目ID。 securityToken:采用临时AK、SK 认证场景下的安全票据,可以通过token获取或者通过委托授权获取。 初始化客户端(region和指定云服务enddpoint二选一即可)。 指定region方式(强烈推荐) // 初始化客户端认证信息,使用当前客户端初始化方式可不填 projectId/domainId,以初始化 BasicCredentials 为例 BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk); // 初始化指定云服务的客户端 {Service}Client ,以初始化 Region 级服务SIS的 SisClient 为例 SisClient client = SisClient.newBuilder() .withHttpConfig(config) .withCredential(basicCredentials) .withRegion(SisRegion.valueOf("cn-north-4")) .build(); 指定云服务endpoint方式(可选) // 指定终端节点,以SIS服务北京四的 endpoint 为例 String endpoint = "https://sis-ext.cn-north-4.myhuaweicloud.com"; // 初始化客户端认证信息,需要填写相应 projectId/domainId,以初始化 BasicCredentials 为例 BasicCredentials basicCredentials = new BasicCredentials() .withAk(ak) .withSk(sk) .withProjectId(projectId); // 初始化指定云服务的客户端 {Service}Client ,以初始化 Region 级服务SIS的 CbsClient 为例 SisClient client = SisClient.newBuilder() .withHttpConfig(config) .withCredential(basicCredentials) .withEndpoint(endpoint) .build(); endpoint是华为云各服务应用区域和各服务的终端节点,详情请查看 地区和终端节点。
-
响应参数 响应类为RunTtsResponse,详见下表。调用失败处理方法请参见错误码。 表2 RunTtsResponse 参数名 是否必选 参数类型 说明 trace_id 是 String 服务内部的令牌,可用于在日志中追溯具体流程,调用失败无此字段。 在某些错误情况下可能没有此令牌字符串。 result 是 Object 调用成功时为合成语音内容,请参考表3。 调用失败时无此字段。 表3 Result 参数名 是否必选 参数类型 说明 data 是 String 合成后生成的语音数据,以Base64编码格式返回。用户如需生成音频,需要将Base64编码解码成byte数组,再保存为wav音频。
-
请求示例 查询应用项目级权限矩阵 https://{endpoint}/v3/applications/permissions?project_id=0a38ce9ba3c740c199a0f872b6163661 查询应用实例级权限矩阵 https://{endpoint}/v3/applications/permissions?app_id=0a38ce9ba3c740c199a0f872b6163661
-
响应参数 状态码:200 表3 响应Body参数 参数 参数类型 描述 result Array of ApplicationPermissionVO objects 角色应用权限 status String 请求成功失败状态 表4 ApplicationPermissionVO 参数 参数类型 描述 can_modify Boolean 是否有编辑权限 can_delete Boolean 是否有删除的权限 can_view Boolean 是否有查看权限 can_execute Boolean 是否有执行权限 can_copy Boolean 是否有复制权限 can_manage Boolean 是否有管理权限,包含增删改查执行以及权限修改 can_create_env Boolean 是否有新建环境权限 can_disable Boolean 是否有禁用权限 name String 角色名称 region String 局点信息 role_id String 角色id role_type String 角色类型, app-creator: 应用创建者; project: 项目管理员;template-customized-inst:系统角色; template-project-customized、project-customized:自定义角色
-
响应示例 状态码:200 OK 请求响应成功 { "result" : [ { "can_copy" : true, "can_create_env" : true, "can_delete" : true, "can_disable" : true, "can_execute" : true, "can_manage" : true, "can_modify" : true, "can_view" : true, "name" : "应用创建者", "region" : "cn-north-7", "role_id" : "0", "role_type" : "app-creator" }, { "can_copy" : true, "can_create_env" : true, "can_delete" : true, "can_disable" : true, "can_execute" : true, "can_manage" : true, "can_modify" : true, "can_view" : true, "name" : "项目管理员", "region" : "cn-north-7", "role_id" : "2e510051361942a8b7ecea00144172b3", "role_type" : "project" } ], "status" : "success" }
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 消息体的类型(格式) X-Auth-Token 是 String 用户Token。通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值) 表3 请求Body参数 参数 是否必选 参数类型 描述 project_id 是 String 项目id,获取方式请参见获取项目id。 name 是 String 环境名称 deploy_type 是 Integer 部署类型:0表示主机, 1表示kubernetes os 是 String 操作系统:windows|linux,需要和主机集群保持一致 description 否 String 环境描述
-
请求示例 https://{endpoint}/v1/applications/43943381f7764c52baae8e697720873f/environments { "project_id" : "55837d272adf4eee90319800e2da6961", "name" : "Environment name", "deploy_type" : 0, "description" : "Environment Description", "os" : "linux" }
-
响应示例 状态码:200 OK 请求响应成功 [ { "region" : "region", "name" : "Host cluster creator", "role_id" : "0", "devuc_role_id_list" : null, "group_id" : "2a8c2da888c04a5eaff10d0787c90ea4", "can_view" : true, "can_edit" : true, "can_delete" : true, "can_add_host" : true, "can_manage" : true, "can_copy" : true, "create_time" : "2024-05-31 14:32:59.0", "update_time" : "2024-05-31 14:32:59.0", "role_type" : "cluster-creator" }, { "region" : "region", "name" : "Project admin", "role_id" : "a2e65d2647574f8491cac659a0249d24", "devuc_role_id_list" : null, "group_id" : "2a8c2da888c04a5eaff10d0787c90ea4", "can_view" : true, "can_edit" : true, "can_delete" : true, "can_add_host" : true, "can_manage" : true, "can_copy" : true, "create_time" : "2024-05-31 14:32:59.0", "update_time" : "2024-05-31 14:32:59.0", "role_type" : "project" } ]
-
响应参数 状态码:200 表3 响应Body参数 参数 参数类型 描述 [数组元素] Array of DevUcClusterPermission objects 主机集群权限矩阵 表4 DevUcClusterPermission 参数 参数类型 描述 region String 局点信息 role_id String 角色id devuc_role_id_list Array of strings 角色id列表 name String 角色名称 group_id String 主机集群id can_view Boolean 是否有查看权限 can_edit Boolean 是否有编辑权限 can_delete Boolean 是否有删除权限 can_add_host Boolean 是否有添加主机权限 can_manage Boolean 是否有权限管理权限 can_copy Boolean 是否有拷贝权限 create_time String 创建时间 update_time String 修改时间 role_type String 角色类型,project-customized:自定义角色;template-project-customized:系统自定义角色;template-customized-inst:系统角色;cluster-creator:集群创建者;project_admin 项目创建者
-
响应示例 状态码:200 OK 请求响应成功 { "result" : [ { "host_name" : "100.101.28.203", "ip" : "100.101.28.203", "port" : 22, "os" : "linux", "authorization" : { "username" : "root", "password" : null, "private_key" : null, "trusted_type" : 0 }, "permission" : { "can_view" : true, "can_edit" : true, "can_delete" : true, "can_add_host" : true, "can_copy" : true }, "uuid" : "2cc913cc9a494f09b7320801ebacad02", "group_id" : "ab7647b0863c4e969c8949d38d591339", "as_proxy" : false, "proxy_host_id" : "", "owner_id" : "6baa7454109d47c192f22078fe6cda20", "owner_name" : "devcloud_devcloud_l00490255_01", "connection_status" : "success", "create_time" : "2021-04-15 11:01:51", "connection_result" : "连接成功", "lastest_connection_time" : "2021-04-15 11:02:00", "nick_name" : "AB边账号", "proxy_host" : null, "import_status" : null, "env_count" : 1 } ], "total" : 1, "status" : "success" }
共100000条
- 1
- ...
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- ...
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333