https://launchpad.net/ubuntu/+archive/test-rebuild-20191220-focal/+build/18368205 RUN: /usr/share/launchpad-buildd/bin/builder-prep Kernel version: Linux lcy01-amd64-005 4.4.0-170-generic #199-Ubuntu SMP Thu Nov 14 01:45:04 UTC 2019 x86_64 Buildd toolchain package versions: launchpad-buildd_183 python-lpbuildd_183 sbuild_0.67.0-2ubuntu7.1 bzr-builder_0.7.3+bzr174~ppa13~ubuntu14.10.1 bzr_2.7.0-2ubuntu3.1 git-build-recipe_0.3.6~git201906051340.ff11471~ubuntu16.04.1 git_1:2.7.4-0ubuntu1.7 dpkg-dev_1.18.4ubuntu1.6 python-debian_0.1.27ubuntu2. Syncing the system clock with the buildd NTP service... 5 Jan 10:20:58 ntpdate[1904]: adjust time server 10.211.37.1 offset 0.046871 sec RUN: /usr/share/launchpad-buildd/bin/in-target unpack-chroot --backend=chroot --series=focal --arch=amd64 PACKAGEBUILD-18368205 --image-type chroot /home/buildd/filecache-default/e96c25c651525abc9f0cabeb95ea71010abf4ecb Creating target for build PACKAGEBUILD-18368205 RUN: /usr/share/launchpad-buildd/bin/in-target mount-chroot --backend=chroot --series=focal --arch=amd64 PACKAGEBUILD-18368205 Starting target for build PACKAGEBUILD-18368205 RUN: /usr/share/launchpad-buildd/bin/in-target override-sources-list --backend=chroot --series=focal --arch=amd64 PACKAGEBUILD-18368205 'deb http://ftpmaster.internal/ubuntu focal main restricted universe multiverse' Overriding sources.list in build-PACKAGEBUILD-18368205 RUN: /usr/share/launchpad-buildd/bin/in-target update-debian-chroot --backend=chroot --series=focal --arch=amd64 PACKAGEBUILD-18368205 Updating target for build PACKAGEBUILD-18368205 Get:1 http://ftpmaster.internal/ubuntu focal InRelease [255 kB] Get:2 http://ftpmaster.internal/ubuntu focal/main amd64 Packages [966 kB] Get:3 http://ftpmaster.internal/ubuntu focal/main Translation-en [499 kB] Get:4 http://ftpmaster.internal/ubuntu focal/restricted amd64 Packages [18.4 kB] Get:5 http://ftpmaster.internal/ubuntu focal/restricted Translation-en [5768 B] Get:6 http://ftpmaster.internal/ubuntu focal/universe amd64 Packages [8671 kB] Get:7 http://ftpmaster.internal/ubuntu focal/universe Translation-en [5195 kB] Get:8 http://ftpmaster.internal/ubuntu focal/multiverse amd64 Packages [152 kB] Get:9 http://ftpmaster.internal/ubuntu focal/multiverse Translation-en [110 kB] Fetched 15.9 MB in 4s (3737 kB/s) Reading package lists... Reading package lists... Building dependency tree... Reading state information... Calculating upgrade... The following packages were automatically installed and are no longer required: libhogweed4 libisl21 libnettle6 libperl5.28 perl-modules-5.28 Use 'sudo apt autoremove' to remove them. The following NEW packages will be installed: libhogweed5 libisl22 libnettle7 libperl5.30 perl-modules-5.30 The following packages will be upgraded: apt base-files base-passwd bash binutils binutils-common binutils-x86-64-linux-gnu bsdutils bzip2 cpp-9 debianutils fdisk g++-9 gcc-9 gcc-9-base gpg gpg-agent gpgconf gpgv gzip hostname libacl1 libapparmor1 libapt-pkg5.90 libasan5 libatomic1 libattr1 libaudit-common libaudit1 libbinutils libblkid1 libbz2-1.0 libc-bin libc-dev-bin libc6 libc6-dev libcap-ng0 libcap2 libcc1-0 libcryptsetup12 libdebconfclient0 libdevmapper1.02.1 libfdisk1 libgcc-9-dev libgcc1 libgcrypt20 libgnutls30 libgomp1 libitm1 libjson-c4 libkmod2 liblockfile-bin liblockfile1 liblsan0 liblz4-1 libmount1 libncurses6 libncursesw6 libp11-kit0 libpam-modules libpam-modules-bin libpam-runtime libpam0g libpcre2-8-0 libquadmath0 libseccomp2 libselinux1 libsemanage-common libsemanage1 libsepol1 libsmartcols1 libsqlite3-0 libstdc++-9-dev libstdc++6 libsystemd0 libtasn1-6 libtinfo6 libtsan0 libubsan1 libudev1 libuuid1 libzstd1 linux-libc-dev lsb-base mount ncurses-base ncurses-bin perl perl-base sensible-utils systemd systemd-sysv sysvinit-utils util-linux 94 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. Need to get 70.2 MB of archives. After this operation, 51.0 MB of additional disk space will be used. Get:1 http://ftpmaster.internal/ubuntu focal/main amd64 libc6-dev amd64 2.30-0ubuntu3 [2549 kB] Get:2 http://ftpmaster.internal/ubuntu focal/main amd64 libc-dev-bin amd64 2.30-0ubuntu3 [71.8 kB] Get:3 http://ftpmaster.internal/ubuntu focal/main amd64 linux-libc-dev amd64 5.3.0-24.26 [1096 kB] Get:4 http://ftpmaster.internal/ubuntu focal/main amd64 libisl22 amd64 0.22-2 [592 kB] Get:5 http://ftpmaster.internal/ubuntu focal/main amd64 libcc1-0 amd64 9.2.1-21ubuntu1 [49.0 kB] Get:6 http://ftpmaster.internal/ubuntu focal/main amd64 binutils-x86-64-linux-gnu amd64 2.33.1-6ubuntu3 [1639 kB] Get:7 http://ftpmaster.internal/ubuntu focal/main amd64 libbinutils amd64 2.33.1-6ubuntu3 [474 kB] Get:8 http://ftpmaster.internal/ubuntu focal/main amd64 binutils-common amd64 2.33.1-6ubuntu3 [203 kB] Get:9 http://ftpmaster.internal/ubuntu focal/main amd64 binutils amd64 2.33.1-6ubuntu3 [3400 B] Get:10 http://ftpmaster.internal/ubuntu focal/main amd64 gcc-9-base amd64 9.2.1-21ubuntu1 [19.1 kB] Get:11 http://ftpmaster.internal/ubuntu focal/main amd64 libgcc1 amd64 1:9.2.1-21ubuntu1 [40.8 kB] Get:12 http://ftpmaster.internal/ubuntu focal/main amd64 libgomp1 amd64 9.2.1-21ubuntu1 [89.3 kB] Get:13 http://ftpmaster.internal/ubuntu focal/main amd64 libitm1 amd64 9.2.1-21ubuntu1 [28.1 kB] Get:14 http://ftpmaster.internal/ubuntu focal/main amd64 libatomic1 amd64 9.2.1-21ubuntu1 [9236 B] Get:15 http://ftpmaster.internal/ubuntu focal/main amd64 libasan5 amd64 9.2.1-21ubuntu1 [395 kB] Get:16 http://ftpmaster.internal/ubuntu focal/main amd64 liblsan0 amd64 9.2.1-21ubuntu1 [139 kB] Get:17 http://ftpmaster.internal/ubuntu focal/main amd64 libtsan0 amd64 9.2.1-21ubuntu1 [301 kB] Get:18 http://ftpmaster.internal/ubuntu focal/main amd64 libubsan1 amd64 9.2.1-21ubuntu1 [130 kB] Get:19 http://ftpmaster.internal/ubuntu focal/main amd64 libquadmath0 amd64 9.2.1-21ubuntu1 [146 kB] Get:20 http://ftpmaster.internal/ubuntu focal/main amd64 g++-9 amd64 9.2.1-21ubuntu1 [11.0 MB] Get:21 http://ftpmaster.internal/ubuntu focal/main amd64 libstdc++-9-dev amd64 9.2.1-21ubuntu1 [1709 kB] Get:22 http://ftpmaster.internal/ubuntu focal/main amd64 libgcc-9-dev amd64 9.2.1-21ubuntu1 [2362 kB] Get:23 http://ftpmaster.internal/ubuntu focal/main amd64 gcc-9 amd64 9.2.1-21ubuntu1 [10.4 MB] Get:24 http://ftpmaster.internal/ubuntu focal/main amd64 cpp-9 amd64 9.2.1-21ubuntu1 [9729 kB] Get:25 http://ftpmaster.internal/ubuntu focal/main amd64 libstdc++6 amd64 9.2.1-21ubuntu1 [512 kB] Get:26 http://ftpmaster.internal/ubuntu focal/main amd64 libc6 amd64 2.30-0ubuntu3 [2725 kB] Get:27 http://ftpmaster.internal/ubuntu focal/main amd64 base-files amd64 11ubuntu2 [60.1 kB] Get:28 http://ftpmaster.internal/ubuntu focal/main amd64 debianutils amd64 4.9.1 [85.8 kB] Get:29 http://ftpmaster.internal/ubuntu focal/main amd64 bash amd64 5.0-5ubuntu1 [639 kB] Get:30 http://ftpmaster.internal/ubuntu focal/main amd64 bsdutils amd64 1:2.34-0.1ubuntu4 [63.8 kB] Get:31 http://ftpmaster.internal/ubuntu focal/main amd64 gzip amd64 1.10-0ubuntu4 [95.3 kB] Get:32 http://ftpmaster.internal/ubuntu focal/main amd64 hostname amd64 3.23 [11.4 kB] Get:33 http://ftpmaster.internal/ubuntu focal/main amd64 ncurses-bin amd64 6.1+20191019-1ubuntu1 [172 kB] Get:34 http://ftpmaster.internal/ubuntu focal/main amd64 perl-modules-5.30 all 5.30.0-9 [2739 kB] Get:35 http://ftpmaster.internal/ubuntu focal/main amd64 libperl5.30 amd64 5.30.0-9 [3950 kB] Get:36 http://ftpmaster.internal/ubuntu focal/main amd64 perl amd64 5.30.0-9 [224 kB] Get:37 http://ftpmaster.internal/ubuntu focal/main amd64 perl-base amd64 5.30.0-9 [1511 kB] Get:38 http://ftpmaster.internal/ubuntu focal/main amd64 bzip2 amd64 1.0.8-2 [34.1 kB] Get:39 http://ftpmaster.internal/ubuntu focal/main amd64 libbz2-1.0 amd64 1.0.8-2 [32.3 kB] Get:40 http://ftpmaster.internal/ubuntu focal/main amd64 libblkid1 amd64 2.34-0.1ubuntu4 [137 kB] Get:41 http://ftpmaster.internal/ubuntu focal/main amd64 libuuid1 amd64 2.34-0.1ubuntu4 [20.5 kB] Get:42 http://ftpmaster.internal/ubuntu focal/main amd64 libfdisk1 amd64 2.34-0.1ubuntu4 [175 kB] Get:43 http://ftpmaster.internal/ubuntu focal/main amd64 libpcre2-8-0 amd64 10.34-7 [197 kB] Get:44 http://ftpmaster.internal/ubuntu focal/main amd64 libselinux1 amd64 3.0-1 [68.7 kB] Get:45 http://ftpmaster.internal/ubuntu focal/main amd64 libmount1 amd64 2.34-0.1ubuntu4 [149 kB] Get:46 http://ftpmaster.internal/ubuntu focal/main amd64 libncurses6 amd64 6.1+20191019-1ubuntu1 [101 kB] Get:47 http://ftpmaster.internal/ubuntu focal/main amd64 libtinfo6 amd64 6.1+20191019-1ubuntu1 [85.9 kB] Get:48 http://ftpmaster.internal/ubuntu focal/main amd64 libncursesw6 amd64 6.1+20191019-1ubuntu1 [132 kB] Get:49 http://ftpmaster.internal/ubuntu focal/main amd64 libsmartcols1 amd64 2.34-0.1ubuntu4 [101 kB] Get:50 http://ftpmaster.internal/ubuntu focal/main amd64 fdisk amd64 2.34-0.1ubuntu4 [120 kB] Get:51 http://ftpmaster.internal/ubuntu focal/main amd64 util-linux amd64 2.34-0.1ubuntu4 [1022 kB] Get:52 http://ftpmaster.internal/ubuntu focal/main amd64 libdebconfclient0 amd64 0.250ubuntu2 [6336 B] Get:53 http://ftpmaster.internal/ubuntu focal/main amd64 base-passwd amd64 3.5.47 [47.7 kB] Get:54 http://ftpmaster.internal/ubuntu focal/main amd64 libc-bin amd64 2.30-0ubuntu3 [625 kB] Get:55 http://ftpmaster.internal/ubuntu focal/main amd64 ncurses-base all 6.1+20191019-1ubuntu1 [17.9 kB] Get:56 http://ftpmaster.internal/ubuntu focal/main amd64 lsb-base all 11.1.0ubuntu2 [12.1 kB] Get:57 http://ftpmaster.internal/ubuntu focal/main amd64 sysvinit-utils amd64 2.96-1ubuntu1 [20.8 kB] Get:58 http://ftpmaster.internal/ubuntu focal/main amd64 liblz4-1 amd64 1.9.2-2 [55.9 kB] Get:59 http://ftpmaster.internal/ubuntu focal/main amd64 systemd-sysv amd64 244-3ubuntu1 [9368 B] Get:60 http://ftpmaster.internal/ubuntu focal/main amd64 libacl1 amd64 2.2.53-5ubuntu1 [18.7 kB] Get:61 http://ftpmaster.internal/ubuntu focal/main amd64 libapparmor1 amd64 2.13.3-7ubuntu1 [34.3 kB] Get:62 http://ftpmaster.internal/ubuntu focal/main amd64 libaudit-common all 1:2.8.5-2ubuntu5 [4076 B] Get:63 http://ftpmaster.internal/ubuntu focal/main amd64 libcap-ng0 amd64 0.7.9-2.1 [11.1 kB] Get:64 http://ftpmaster.internal/ubuntu focal/main amd64 libaudit1 amd64 1:2.8.5-2ubuntu5 [39.1 kB] Get:65 http://ftpmaster.internal/ubuntu focal/main amd64 libcap2 amd64 1:2.27-1 [14.1 kB] Get:66 http://ftpmaster.internal/ubuntu focal/main amd64 libudev1 amd64 244-3ubuntu1 [76.3 kB] Get:67 http://ftpmaster.internal/ubuntu focal/main amd64 libdevmapper1.02.1 amd64 2:1.02.155-2ubuntu7 [127 kB] Get:68 http://ftpmaster.internal/ubuntu focal/main amd64 libjson-c4 amd64 0.13.1+dfsg-6 [29.2 kB] Get:69 http://ftpmaster.internal/ubuntu focal/main amd64 libcryptsetup12 amd64 2:2.2.2-1ubuntu1 [182 kB] Get:70 http://ftpmaster.internal/ubuntu focal/main amd64 libnettle7 amd64 3.5.1+really3.5.1-2 [114 kB] Get:71 http://ftpmaster.internal/ubuntu focal/main amd64 libhogweed5 amd64 3.5.1+really3.5.1-2 [138 kB] Get:72 http://ftpmaster.internal/ubuntu focal/main amd64 libp11-kit0 amd64 0.23.18.1-2 [189 kB] Get:73 http://ftpmaster.internal/ubuntu focal/main amd64 libtasn1-6 amd64 4.15.0-2 [37.7 kB] Get:74 http://ftpmaster.internal/ubuntu focal/main amd64 libgnutls30 amd64 3.6.11.1-2 [793 kB] Get:75 http://ftpmaster.internal/ubuntu focal/main amd64 libkmod2 amd64 26-3ubuntu1 [42.9 kB] Get:76 http://ftpmaster.internal/ubuntu focal/main amd64 libpam0g amd64 1.3.1-5ubuntu4 [55.4 kB] Get:77 http://ftpmaster.internal/ubuntu focal/main amd64 libseccomp2 amd64 2.4.2-2ubuntu1 [39.4 kB] Get:78 http://ftpmaster.internal/ubuntu focal/main amd64 mount amd64 2.34-0.1ubuntu4 [115 kB] Get:79 http://ftpmaster.internal/ubuntu focal/main amd64 systemd amd64 244-3ubuntu1 [3677 kB] Get:80 http://ftpmaster.internal/ubuntu focal/main amd64 libsystemd0 amd64 244-3ubuntu1 [260 kB] Get:81 http://ftpmaster.internal/ubuntu focal/main amd64 libzstd1 amd64 1.4.4+dfsg-1 [237 kB] Get:82 http://ftpmaster.internal/ubuntu focal/main amd64 libapt-pkg5.90 amd64 1.9.5 [851 kB] Get:83 http://ftpmaster.internal/ubuntu focal/main amd64 libgcrypt20 amd64 1.8.5-3ubuntu1 [419 kB] Get:84 http://ftpmaster.internal/ubuntu focal/main amd64 gpgv amd64 2.2.17-3ubuntu1 [200 kB] Get:85 http://ftpmaster.internal/ubuntu focal/main amd64 apt amd64 1.9.5 [1281 kB] Get:86 http://ftpmaster.internal/ubuntu focal/main amd64 libpam-modules-bin amd64 1.3.1-5ubuntu4 [37.7 kB] Get:87 http://ftpmaster.internal/ubuntu focal/main amd64 libpam-modules amd64 1.3.1-5ubuntu4 [250 kB] Get:88 http://ftpmaster.internal/ubuntu focal/main amd64 libattr1 amd64 1:2.4.48-5 [12.7 kB] Get:89 http://ftpmaster.internal/ubuntu focal/main amd64 libpam-runtime all 1.3.1-5ubuntu4 [37.3 kB] Get:90 http://ftpmaster.internal/ubuntu focal/main amd64 libsepol1 amd64 3.0-1 [252 kB] Get:91 http://ftpmaster.internal/ubuntu focal/main amd64 libsemanage-common all 3.0-1 [9880 B] Get:92 http://ftpmaster.internal/ubuntu focal/main amd64 libsemanage1 amd64 3.0-1 [85.3 kB] Get:93 http://ftpmaster.internal/ubuntu focal/main amd64 sensible-utils all 0.0.12+nmu1 [15.0 kB] Get:94 http://ftpmaster.internal/ubuntu focal/main amd64 libsqlite3-0 amd64 3.30.1-1ubuntu1 [540 kB] Get:95 http://ftpmaster.internal/ubuntu focal/main amd64 gpg amd64 2.2.17-3ubuntu1 [479 kB] Get:96 http://ftpmaster.internal/ubuntu focal/main amd64 gpgconf amd64 2.2.17-3ubuntu1 [124 kB] Get:97 http://ftpmaster.internal/ubuntu focal/main amd64 gpg-agent amd64 2.2.17-3ubuntu1 [232 kB] Get:98 http://ftpmaster.internal/ubuntu focal/main amd64 liblockfile-bin amd64 1.16-1.1 [11.7 kB] Get:99 http://ftpmaster.internal/ubuntu focal/main amd64 liblockfile1 amd64 1.16-1.1 [6680 B] debconf: delaying package configuration, since apt-utils is not installed Fetched 70.2 MB in 1s (62.6 MB/s) (Reading database ... 12741 files and directories currently installed.) Preparing to unpack .../0-libc6-dev_2.30-0ubuntu3_amd64.deb ... Unpacking libc6-dev:amd64 (2.30-0ubuntu3) over (2.30-0ubuntu2) ... Preparing to unpack .../1-libc-dev-bin_2.30-0ubuntu3_amd64.deb ... Unpacking libc-dev-bin (2.30-0ubuntu3) over (2.30-0ubuntu2) ... Preparing to unpack .../2-linux-libc-dev_5.3.0-24.26_amd64.deb ... Unpacking linux-libc-dev:amd64 (5.3.0-24.26) over (5.3.0-18.19) ... Selecting previously unselected package libisl22:amd64. Preparing to unpack .../3-libisl22_0.22-2_amd64.deb ... Unpacking libisl22:amd64 (0.22-2) ... Preparing to unpack .../4-libcc1-0_9.2.1-21ubuntu1_amd64.deb ... Unpacking libcc1-0:amd64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../5-binutils-x86-64-linux-gnu_2.33.1-6ubuntu3_amd64.deb ... Unpacking binutils-x86-64-linux-gnu (2.33.1-6ubuntu3) over (2.33-2ubuntu1) ... Preparing to unpack .../6-libbinutils_2.33.1-6ubuntu3_amd64.deb ... Unpacking libbinutils:amd64 (2.33.1-6ubuntu3) over (2.33-2ubuntu1) ... Preparing to unpack .../7-binutils-common_2.33.1-6ubuntu3_amd64.deb ... Unpacking binutils-common:amd64 (2.33.1-6ubuntu3) over (2.33-2ubuntu1) ... Preparing to unpack .../8-binutils_2.33.1-6ubuntu3_amd64.deb ... Unpacking binutils (2.33.1-6ubuntu3) over (2.33-2ubuntu1) ... Preparing to unpack .../9-gcc-9-base_9.2.1-21ubuntu1_amd64.deb ... Unpacking gcc-9-base:amd64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Setting up gcc-9-base:amd64 (9.2.1-21ubuntu1) ... (Reading database ... 12747 files and directories currently installed.) Preparing to unpack .../libgcc1_1%3a9.2.1-21ubuntu1_amd64.deb ... Unpacking libgcc1:amd64 (1:9.2.1-21ubuntu1) over (1:9.2.1-9ubuntu2) ... Setting up libgcc1:amd64 (1:9.2.1-21ubuntu1) ... (Reading database ... 12747 files and directories currently installed.) Preparing to unpack .../00-libgomp1_9.2.1-21ubuntu1_amd64.deb ... Unpacking libgomp1:amd64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../01-libitm1_9.2.1-21ubuntu1_amd64.deb ... Unpacking libitm1:amd64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../02-libatomic1_9.2.1-21ubuntu1_amd64.deb ... Unpacking libatomic1:amd64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../03-libasan5_9.2.1-21ubuntu1_amd64.deb ... Unpacking libasan5:amd64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../04-liblsan0_9.2.1-21ubuntu1_amd64.deb ... Unpacking liblsan0:amd64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../05-libtsan0_9.2.1-21ubuntu1_amd64.deb ... Unpacking libtsan0:amd64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../06-libubsan1_9.2.1-21ubuntu1_amd64.deb ... Unpacking libubsan1:amd64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../07-libquadmath0_9.2.1-21ubuntu1_amd64.deb ... Unpacking libquadmath0:amd64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../08-g++-9_9.2.1-21ubuntu1_amd64.deb ... Unpacking g++-9 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../09-libstdc++-9-dev_9.2.1-21ubuntu1_amd64.deb ... Unpacking libstdc++-9-dev:amd64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../10-libgcc-9-dev_9.2.1-21ubuntu1_amd64.deb ... Unpacking libgcc-9-dev:amd64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../11-gcc-9_9.2.1-21ubuntu1_amd64.deb ... Unpacking gcc-9 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../12-cpp-9_9.2.1-21ubuntu1_amd64.deb ... Unpacking cpp-9 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Preparing to unpack .../13-libstdc++6_9.2.1-21ubuntu1_amd64.deb ... Unpacking libstdc++6:amd64 (9.2.1-21ubuntu1) over (9.2.1-9ubuntu2) ... Setting up libstdc++6:amd64 (9.2.1-21ubuntu1) ... (Reading database ... 12747 files and directories currently installed.) Preparing to unpack .../libc6_2.30-0ubuntu3_amd64.deb ... Unpacking libc6:amd64 (2.30-0ubuntu3) over (2.30-0ubuntu2) ... Setting up libc6:amd64 (2.30-0ubuntu3) ... (Reading database ... 12747 files and directories currently installed.) Preparing to unpack .../base-files_11ubuntu2_amd64.deb ... Unpacking base-files (11ubuntu2) over (10.2ubuntu7) ... Setting up base-files (11ubuntu2) ... Installing new version of config file /etc/debian_version ... Installing new version of config file /etc/issue ... Installing new version of config file /etc/issue.net ... Installing new version of config file /etc/lsb-release ... Installing new version of config file /etc/update-motd.d/50-motd-news ... Updating /root/.profile to current default. (Reading database ... 12747 files and directories currently installed.) Preparing to unpack .../debianutils_4.9.1_amd64.deb ... Unpacking debianutils (4.9.1) over (4.8.6.3) ... Setting up debianutils (4.9.1) ... (Reading database ... 12747 files and directories currently installed.) Preparing to unpack .../bash_5.0-5ubuntu1_amd64.deb ... Unpacking bash (5.0-5ubuntu1) over (5.0-4ubuntu1) ... Setting up bash (5.0-5ubuntu1) ... update-alternatives: using /usr/share/man/man7/bash-builtins.7.gz to provide /usr/share/man/man7/builtins.7.gz (builtins.7.gz) in auto mode (Reading database ... 12747 files and directories currently installed.) Preparing to unpack .../bsdutils_1%3a2.34-0.1ubuntu4_amd64.deb ... Unpacking bsdutils (1:2.34-0.1ubuntu4) over (1:2.34-0.1ubuntu2) ... Setting up bsdutils (1:2.34-0.1ubuntu4) ... (Reading database ... 12747 files and directories currently installed.) Preparing to unpack .../gzip_1.10-0ubuntu4_amd64.deb ... Unpacking gzip (1.10-0ubuntu4) over (1.10-0ubuntu3) ... Setting up gzip (1.10-0ubuntu4) ... (Reading database ... 12747 files and directories currently installed.) Preparing to unpack .../hostname_3.23_amd64.deb ... Unpacking hostname (3.23) over (3.22) ... Setting up hostname (3.23) ... (Reading database ... 12747 files and directories currently installed.) Preparing to unpack .../ncurses-bin_6.1+20191019-1ubuntu1_amd64.deb ... Unpacking ncurses-bin (6.1+20191019-1ubuntu1) over (6.1+20190803-1ubuntu1) ... Setting up ncurses-bin (6.1+20191019-1ubuntu1) ... (Reading database ... 12747 files and directories currently installed.) Preparing to unpack .../perl_5.30.0-9_amd64.deb ... Unpacking perl (5.30.0-9) over (5.28.1-6build1) ... Replacing files in old package perl-base (5.28.1-6build1) ... Selecting previously unselected package perl-modules-5.30. Preparing to unpack .../perl-modules-5.30_5.30.0-9_all.deb ... Unpacking perl-modules-5.30 (5.30.0-9) ... Selecting previously unselected package libperl5.30:amd64. Preparing to unpack .../libperl5.30_5.30.0-9_amd64.deb ... Unpacking libperl5.30:amd64 (5.30.0-9) ... Preparing to unpack .../perl-base_5.30.0-9_amd64.deb ... Unpacking perl-base (5.30.0-9) over (5.28.1-6build1) ... Setting up perl-base (5.30.0-9) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../bzip2_1.0.8-2_amd64.deb ... Unpacking bzip2 (1.0.8-2) over (1.0.6-9.2) ... Preparing to unpack .../libbz2-1.0_1.0.8-2_amd64.deb ... Unpacking libbz2-1.0:amd64 (1.0.8-2) over (1.0.6-9.2) ... Setting up libbz2-1.0:amd64 (1.0.8-2) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libblkid1_2.34-0.1ubuntu4_amd64.deb ... Unpacking libblkid1:amd64 (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Setting up libblkid1:amd64 (2.34-0.1ubuntu4) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libuuid1_2.34-0.1ubuntu4_amd64.deb ... Unpacking libuuid1:amd64 (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Setting up libuuid1:amd64 (2.34-0.1ubuntu4) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libfdisk1_2.34-0.1ubuntu4_amd64.deb ... Unpacking libfdisk1:amd64 (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Setting up libfdisk1:amd64 (2.34-0.1ubuntu4) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libpcre2-8-0_10.34-7_amd64.deb ... Unpacking libpcre2-8-0:amd64 (10.34-7) over (10.32-5) ... Setting up libpcre2-8-0:amd64 (10.34-7) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libselinux1_3.0-1_amd64.deb ... Unpacking libselinux1:amd64 (3.0-1) over (2.9-2) ... Setting up libselinux1:amd64 (3.0-1) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libmount1_2.34-0.1ubuntu4_amd64.deb ... Unpacking libmount1:amd64 (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Setting up libmount1:amd64 (2.34-0.1ubuntu4) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libncurses6_6.1+20191019-1ubuntu1_amd64.deb ... Unpacking libncurses6:amd64 (6.1+20191019-1ubuntu1) over (6.1+20190803-1ubuntu1) ... Preparing to unpack .../libtinfo6_6.1+20191019-1ubuntu1_amd64.deb ... Unpacking libtinfo6:amd64 (6.1+20191019-1ubuntu1) over (6.1+20190803-1ubuntu1) ... Setting up libtinfo6:amd64 (6.1+20191019-1ubuntu1) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libncursesw6_6.1+20191019-1ubuntu1_amd64.deb ... Unpacking libncursesw6:amd64 (6.1+20191019-1ubuntu1) over (6.1+20190803-1ubuntu1) ... Setting up libncursesw6:amd64 (6.1+20191019-1ubuntu1) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libsmartcols1_2.34-0.1ubuntu4_amd64.deb ... Unpacking libsmartcols1:amd64 (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Setting up libsmartcols1:amd64 (2.34-0.1ubuntu4) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../fdisk_2.34-0.1ubuntu4_amd64.deb ... Unpacking fdisk (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Setting up fdisk (2.34-0.1ubuntu4) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../util-linux_2.34-0.1ubuntu4_amd64.deb ... Unpacking util-linux (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Setting up util-linux (2.34-0.1ubuntu4) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libdebconfclient0_0.250ubuntu2_amd64.deb ... Unpacking libdebconfclient0:amd64 (0.250ubuntu2) over (0.249ubuntu1) ... Setting up libdebconfclient0:amd64 (0.250ubuntu2) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../base-passwd_3.5.47_amd64.deb ... Unpacking base-passwd (3.5.47) over (3.5.46) ... Setting up base-passwd (3.5.47) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../libc-bin_2.30-0ubuntu3_amd64.deb ... Unpacking libc-bin (2.30-0ubuntu3) over (2.30-0ubuntu2) ... Setting up libc-bin (2.30-0ubuntu3) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../ncurses-base_6.1+20191019-1ubuntu1_all.deb ... Unpacking ncurses-base (6.1+20191019-1ubuntu1) over (6.1+20190803-1ubuntu1) ... Setting up ncurses-base (6.1+20191019-1ubuntu1) ... (Reading database ... 14650 files and directories currently installed.) Preparing to unpack .../lsb-base_11.1.0ubuntu2_all.deb ... Unpacking lsb-base (11.1.0ubuntu2) over (11.0.1ubuntu1) ... Setting up lsb-base (11.1.0ubuntu2) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../sysvinit-utils_2.96-1ubuntu1_amd64.deb ... Unpacking sysvinit-utils (2.96-1ubuntu1) over (2.95-5ubuntu2) ... Setting up sysvinit-utils (2.96-1ubuntu1) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../liblz4-1_1.9.2-2_amd64.deb ... Unpacking liblz4-1:amd64 (1.9.2-2) over (1.9.1-1) ... Setting up liblz4-1:amd64 (1.9.2-2) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../systemd-sysv_244-3ubuntu1_amd64.deb ... Unpacking systemd-sysv (244-3ubuntu1) over (242-7ubuntu3) ... Preparing to unpack .../libacl1_2.2.53-5ubuntu1_amd64.deb ... Unpacking libacl1:amd64 (2.2.53-5ubuntu1) over (2.2.53-4) ... Setting up libacl1:amd64 (2.2.53-5ubuntu1) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../libapparmor1_2.13.3-7ubuntu1_amd64.deb ... Unpacking libapparmor1:amd64 (2.13.3-7ubuntu1) over (2.13.3-5ubuntu1) ... Preparing to unpack .../libaudit-common_1%3a2.8.5-2ubuntu5_all.deb ... Unpacking libaudit-common (1:2.8.5-2ubuntu5) over (1:2.8.5-2ubuntu1) ... Setting up libaudit-common (1:2.8.5-2ubuntu5) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../libcap-ng0_0.7.9-2.1_amd64.deb ... Unpacking libcap-ng0:amd64 (0.7.9-2.1) over (0.7.9-2) ... Setting up libcap-ng0:amd64 (0.7.9-2.1) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../libaudit1_1%3a2.8.5-2ubuntu5_amd64.deb ... Unpacking libaudit1:amd64 (1:2.8.5-2ubuntu5) over (1:2.8.5-2ubuntu1) ... Setting up libaudit1:amd64 (1:2.8.5-2ubuntu5) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../libcap2_1%3a2.27-1_amd64.deb ... Unpacking libcap2:amd64 (1:2.27-1) over (1:2.25-2) ... Preparing to unpack .../libudev1_244-3ubuntu1_amd64.deb ... Unpacking libudev1:amd64 (244-3ubuntu1) over (242-7ubuntu3) ... Setting up libudev1:amd64 (244-3ubuntu1) ... (Reading database ... 14649 files and directories currently installed.) Preparing to unpack .../libdevmapper1.02.1_2%3a1.02.155-2ubuntu7_amd64.deb ... Unpacking libdevmapper1.02.1:amd64 (2:1.02.155-2ubuntu7) over (2:1.02.155-2ubuntu6) ... Preparing to unpack .../libjson-c4_0.13.1+dfsg-6_amd64.deb ... Unpacking libjson-c4:amd64 (0.13.1+dfsg-6) over (0.13.1+dfsg-4) ... Preparing to unpack .../libcryptsetup12_2%3a2.2.2-1ubuntu1_amd64.deb ... Unpacking libcryptsetup12:amd64 (2:2.2.2-1ubuntu1) over (2:2.2.0-3ubuntu1) ... Selecting previously unselected package libnettle7:amd64. Preparing to unpack .../libnettle7_3.5.1+really3.5.1-2_amd64.deb ... Unpacking libnettle7:amd64 (3.5.1+really3.5.1-2) ... Setting up libnettle7:amd64 (3.5.1+really3.5.1-2) ... Selecting previously unselected package libhogweed5:amd64. (Reading database ... 14656 files and directories currently installed.) Preparing to unpack .../libhogweed5_3.5.1+really3.5.1-2_amd64.deb ... Unpacking libhogweed5:amd64 (3.5.1+really3.5.1-2) ... Setting up libhogweed5:amd64 (3.5.1+really3.5.1-2) ... (Reading database ... 14659 files and directories currently installed.) Preparing to unpack .../libp11-kit0_0.23.18.1-2_amd64.deb ... Unpacking libp11-kit0:amd64 (0.23.18.1-2) over (0.23.17-2) ... Setting up libp11-kit0:amd64 (0.23.18.1-2) ... (Reading database ... 14659 files and directories currently installed.) Preparing to unpack .../libtasn1-6_4.15.0-2_amd64.deb ... Unpacking libtasn1-6:amd64 (4.15.0-2) over (4.14-3) ... Setting up libtasn1-6:amd64 (4.15.0-2) ... (Reading database ... 14659 files and directories currently installed.) Preparing to unpack .../libgnutls30_3.6.11.1-2_amd64.deb ... Unpacking libgnutls30:amd64 (3.6.11.1-2) over (3.6.9-5ubuntu1) ... Setting up libgnutls30:amd64 (3.6.11.1-2) ... (Reading database ... 14658 files and directories currently installed.) Preparing to unpack .../libkmod2_26-3ubuntu1_amd64.deb ... Unpacking libkmod2:amd64 (26-3ubuntu1) over (26-1ubuntu1) ... Preparing to unpack .../libpam0g_1.3.1-5ubuntu4_amd64.deb ... Unpacking libpam0g:amd64 (1.3.1-5ubuntu4) over (1.3.1-5ubuntu1) ... Setting up libpam0g:amd64 (1.3.1-5ubuntu4) ... (Reading database ... 14658 files and directories currently installed.) Preparing to unpack .../libseccomp2_2.4.2-2ubuntu1_amd64.deb ... Unpacking libseccomp2:amd64 (2.4.2-2ubuntu1) over (2.4.1-0ubuntu0.19.10.3) ... Setting up libseccomp2:amd64 (2.4.2-2ubuntu1) ... (Reading database ... 14658 files and directories currently installed.) Preparing to unpack .../mount_2.34-0.1ubuntu4_amd64.deb ... Unpacking mount (2.34-0.1ubuntu4) over (2.34-0.1ubuntu2) ... Preparing to unpack .../systemd_244-3ubuntu1_amd64.deb ... Unpacking systemd (244-3ubuntu1) over (242-7ubuntu3) ... Preparing to unpack .../libsystemd0_244-3ubuntu1_amd64.deb ... Unpacking libsystemd0:amd64 (244-3ubuntu1) over (242-7ubuntu3) ... Setting up libsystemd0:amd64 (244-3ubuntu1) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libzstd1_1.4.4+dfsg-1_amd64.deb ... Unpacking libzstd1:amd64 (1.4.4+dfsg-1) over (1.4.3+dfsg-1) ... Setting up libzstd1:amd64 (1.4.4+dfsg-1) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libapt-pkg5.90_1.9.5_amd64.deb ... Unpacking libapt-pkg5.90:amd64 (1.9.5) over (1.9.4) ... Setting up libapt-pkg5.90:amd64 (1.9.5) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libgcrypt20_1.8.5-3ubuntu1_amd64.deb ... Unpacking libgcrypt20:amd64 (1.8.5-3ubuntu1) over (1.8.4-5ubuntu2) ... Setting up libgcrypt20:amd64 (1.8.5-3ubuntu1) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../gpgv_2.2.17-3ubuntu1_amd64.deb ... Unpacking gpgv (2.2.17-3ubuntu1) over (2.2.12-1ubuntu3) ... Setting up gpgv (2.2.17-3ubuntu1) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../archives/apt_1.9.5_amd64.deb ... Unpacking apt (1.9.5) over (1.9.4) ... Setting up apt (1.9.5) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libpam-modules-bin_1.3.1-5ubuntu4_amd64.deb ... Unpacking libpam-modules-bin (1.3.1-5ubuntu4) over (1.3.1-5ubuntu1) ... Setting up libpam-modules-bin (1.3.1-5ubuntu4) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libpam-modules_1.3.1-5ubuntu4_amd64.deb ... Unpacking libpam-modules:amd64 (1.3.1-5ubuntu4) over (1.3.1-5ubuntu1) ... Setting up libpam-modules:amd64 (1.3.1-5ubuntu4) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libattr1_1%3a2.4.48-5_amd64.deb ... Unpacking libattr1:amd64 (1:2.4.48-5) over (1:2.4.48-4) ... Setting up libattr1:amd64 (1:2.4.48-5) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libpam-runtime_1.3.1-5ubuntu4_all.deb ... Unpacking libpam-runtime (1.3.1-5ubuntu4) over (1.3.1-5ubuntu1) ... Setting up libpam-runtime (1.3.1-5ubuntu4) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libsepol1_3.0-1_amd64.deb ... Unpacking libsepol1:amd64 (3.0-1) over (2.9-2) ... Setting up libsepol1:amd64 (3.0-1) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libsemanage-common_3.0-1_all.deb ... Unpacking libsemanage-common (3.0-1) over (2.9-3) ... Setting up libsemanage-common (3.0-1) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libsemanage1_3.0-1_amd64.deb ... Unpacking libsemanage1:amd64 (3.0-1) over (2.9-3) ... Setting up libsemanage1:amd64 (3.0-1) ... (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../0-sensible-utils_0.0.12+nmu1_all.deb ... Unpacking sensible-utils (0.0.12+nmu1) over (0.0.12) ... Preparing to unpack .../1-libsqlite3-0_3.30.1-1ubuntu1_amd64.deb ... Unpacking libsqlite3-0:amd64 (3.30.1-1ubuntu1) over (3.29.0-2) ... Preparing to unpack .../2-gpg_2.2.17-3ubuntu1_amd64.deb ... Unpacking gpg (2.2.17-3ubuntu1) over (2.2.12-1ubuntu3) ... Preparing to unpack .../3-gpgconf_2.2.17-3ubuntu1_amd64.deb ... Unpacking gpgconf (2.2.17-3ubuntu1) over (2.2.12-1ubuntu3) ... Preparing to unpack .../4-gpg-agent_2.2.17-3ubuntu1_amd64.deb ... Unpacking gpg-agent (2.2.17-3ubuntu1) over (2.2.12-1ubuntu3) ... Preparing to unpack .../5-liblockfile-bin_1.16-1.1_amd64.deb ... Unpacking liblockfile-bin (1.16-1.1) over (1.15-1) ... Preparing to unpack .../6-liblockfile1_1.16-1.1_amd64.deb ... Unpacking liblockfile1:amd64 (1.16-1.1) over (1.15-1) ... Setting up libapparmor1:amd64 (2.13.3-7ubuntu1) ... Setting up liblockfile-bin (1.16-1.1) ... Setting up perl-modules-5.30 (5.30.0-9) ... Setting up libsqlite3-0:amd64 (3.30.1-1ubuntu1) ... Setting up binutils-common:amd64 (2.33.1-6ubuntu3) ... Setting up linux-libc-dev:amd64 (5.3.0-24.26) ... Setting up libgomp1:amd64 (9.2.1-21ubuntu1) ... Setting up bzip2 (1.0.8-2) ... Setting up libcap2:amd64 (1:2.27-1) ... Setting up libasan5:amd64 (9.2.1-21ubuntu1) ... Setting up libncurses6:amd64 (6.1+20191019-1ubuntu1) ... Setting up libquadmath0:amd64 (9.2.1-21ubuntu1) ... Setting up libatomic1:amd64 (9.2.1-21ubuntu1) ... Setting up libubsan1:amd64 (9.2.1-21ubuntu1) ... Setting up libdevmapper1.02.1:amd64 (2:1.02.155-2ubuntu7) ... Setting up mount (2.34-0.1ubuntu4) ... Setting up sensible-utils (0.0.12+nmu1) ... Setting up gpgconf (2.2.17-3ubuntu1) ... Setting up libperl5.30:amd64 (5.30.0-9) ... Setting up libisl22:amd64 (0.22-2) ... Setting up liblockfile1:amd64 (1.16-1.1) ... Setting up libjson-c4:amd64 (0.13.1+dfsg-6) ... Setting up libbinutils:amd64 (2.33.1-6ubuntu3) ... Setting up libc-dev-bin (2.30-0ubuntu3) ... Setting up libcc1-0:amd64 (9.2.1-21ubuntu1) ... Setting up gpg (2.2.17-3ubuntu1) ... Setting up liblsan0:amd64 (9.2.1-21ubuntu1) ... Setting up libitm1:amd64 (9.2.1-21ubuntu1) ... Setting up libkmod2:amd64 (26-3ubuntu1) ... Setting up binutils-x86-64-linux-gnu (2.33.1-6ubuntu3) ... Setting up libtsan0:amd64 (9.2.1-21ubuntu1) ... Setting up gpg-agent (2.2.17-3ubuntu1) ... Installing new version of config file /etc/logcheck/ignore.d.server/gpg-agent ... Created symlink /etc/systemd/user/sockets.target.wants/gpg-agent-browser.socket -> /usr/lib/systemd/user/gpg-agent-browser.socket. Created symlink /etc/systemd/user/sockets.target.wants/gpg-agent-extra.socket -> /usr/lib/systemd/user/gpg-agent-extra.socket. Created symlink /etc/systemd/user/sockets.target.wants/gpg-agent-ssh.socket -> /usr/lib/systemd/user/gpg-agent-ssh.socket. Created symlink /etc/systemd/user/sockets.target.wants/gpg-agent.socket -> /usr/lib/systemd/user/gpg-agent.socket. Setting up binutils (2.33.1-6ubuntu3) ... Setting up libgcc-9-dev:amd64 (9.2.1-21ubuntu1) ... Setting up perl (5.30.0-9) ... Setting up cpp-9 (9.2.1-21ubuntu1) ... Setting up libc6-dev:amd64 (2.30-0ubuntu3) ... Setting up libcryptsetup12:amd64 (2:2.2.2-1ubuntu1) ... Setting up gcc-9 (9.2.1-21ubuntu1) ... Setting up libstdc++-9-dev:amd64 (9.2.1-21ubuntu1) ... Setting up systemd (244-3ubuntu1) ... Installing new version of config file /etc/dhcp/dhclient-enter-hooks.d/resolved ... Installing new version of config file /etc/systemd/networkd.conf ... Installing new version of config file /etc/systemd/system.conf ... Installing new version of config file /etc/systemd/user.conf ... Initializing machine ID from KVM UUID. Setting up g++-9 (9.2.1-21ubuntu1) ... Setting up systemd-sysv (244-3ubuntu1) ... Processing triggers for libc-bin (2.30-0ubuntu3) ... RUN: /usr/share/launchpad-buildd/bin/sbuild-package PACKAGEBUILD-18368205 amd64 focal -c chroot:build-PACKAGEBUILD-18368205 --arch=amd64 --dist=focal --nolog -A zaqar_9.0.0-0ubuntu1.dsc Initiating build PACKAGEBUILD-18368205 with 4 jobs across 4 processor cores. Kernel reported to sbuild: 4.4.0-170-generic #199-Ubuntu SMP Thu Nov 14 01:45:04 UTC 2019 x86_64 sbuild (Debian sbuild) 0.67.0 (26 Dec 2015) on lcy01-amd64-005.buildd +==============================================================================+ | zaqar 9.0.0-0ubuntu1 (amd64) 05 Jan 2020 10:21 | +==============================================================================+ Package: zaqar Version: 9.0.0-0ubuntu1 Source Version: 9.0.0-0ubuntu1 Distribution: focal Machine Architecture: amd64 Host Architecture: amd64 Build Architecture: amd64 I: NOTICE: Log filtering will replace 'build/zaqar-86HNUj/zaqar-9.0.0' with '<>' I: NOTICE: Log filtering will replace 'build/zaqar-86HNUj' with '<>' I: NOTICE: Log filtering will replace 'home/buildd/build-PACKAGEBUILD-18368205/chroot-autobuild' with '<>' +------------------------------------------------------------------------------+ | Fetch source files | +------------------------------------------------------------------------------+ Local sources ------------- zaqar_9.0.0-0ubuntu1.dsc exists in .; copying to chroot Check architectures ------------------- Check dependencies ------------------ Merged Build-Depends: build-essential, fakeroot Filtered Build-Depends: build-essential, fakeroot dpkg-deb: building package 'sbuild-build-depends-core-dummy' in '/<>/resolver-PuDNxN/apt_archive/sbuild-build-depends-core-dummy.deb'. Ign:1 copy:/<>/resolver-PuDNxN/apt_archive ./ InRelease Get:2 copy:/<>/resolver-PuDNxN/apt_archive ./ Release [2119 B] Ign:3 copy:/<>/resolver-PuDNxN/apt_archive ./ Release.gpg Get:4 copy:/<>/resolver-PuDNxN/apt_archive ./ Sources [214 B] Get:5 copy:/<>/resolver-PuDNxN/apt_archive ./ Packages [526 B] Fetched 2859 B in 0s (266 kB/s) Reading package lists... Reading package lists... +------------------------------------------------------------------------------+ | Install core build dependencies (apt-based resolver) | +------------------------------------------------------------------------------+ Installing build dependencies Reading package lists... Building dependency tree... Reading state information... The following packages were automatically installed and are no longer required: libhogweed4 libisl21 libnettle6 libperl5.28 perl-modules-5.28 Use 'apt autoremove' to remove them. The following NEW packages will be installed: sbuild-build-depends-core-dummy 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 852 B of archives. After this operation, 0 B of additional disk space will be used. Get:1 copy:/<>/resolver-PuDNxN/apt_archive ./ sbuild-build-depends-core-dummy 0.invalid.0 [852 B] debconf: delaying package configuration, since apt-utils is not installed Fetched 852 B in 0s (0 B/s) Selecting previously unselected package sbuild-build-depends-core-dummy. (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../sbuild-build-depends-core-dummy_0.invalid.0_amd64.deb ... Unpacking sbuild-build-depends-core-dummy (0.invalid.0) ... Setting up sbuild-build-depends-core-dummy (0.invalid.0) ... Merged Build-Depends: debhelper (>= 10), dh-python, openstack-pkg-tools (>= 85ubuntu3~), po-debconf, python-all, python-pbr (>= 2.0.0), python-setuptools, python3-all, python3-pbr (>= 2.0.0), python3-setuptools, python3-sphinx (>= 1.6.3), alembic (>= 0.8.10), mongodb, python3-alembic (>= 0.8.10), python3-autobahn (>= 0.17.1), python3-babel (>= 2.3.4), python3-coverage (>= 4.0), python3-ddt (>= 1.0.1), python3-doc8 (>= 0.6.0), python3-falcon (>= 1.1.0), python3-fixtures (>= 3.0.0), python3-futurist (>= 1.2.0), python3-hacking (>= 0.12.0), python3-iso8601 (>= 0.1.11), python3-jsonschema (>= 2.6.0), python3-keystoneclient (>= 1:1.6.0), python3-keystonemiddleware (>= 4.17.0), python3-memcache (>= 1.56), python3-mock (>= 2.0.0), python3-msgpack (>= 0.5.1), python3-openstackdocstheme (>= 1.18.1), python3-os-api-ref (>= 1.4.0), python3-os-testr (>= 1.0.0), python3-oslo.cache (>= 1.26.0), python3-oslo.config (>= 1:5.2.0), python3-oslo.context (>= 1:2.19.2), python3-oslo.db (>= 4.27.0), python3-oslo.i18n (>= 3.15.3), python3-oslo.log (>= 3.36.0), python3-oslo.messaging (>= 5.29.0), python3-oslo.policy (>= 1.30.0), python3-oslo.reports (>= 1.18.0), python3-oslo.serialization (>= 2.18.0), python3-oslo.upgradecheck (>= 0.1.1), python3-oslo.utils (>= 3.33.0), python3-oslotest (>= 1:3.2.0), python3-osprofiler (>= 1.4.0), python3-pygments (>= 2.2.0), python3-pymongo (>= 3.6.0), python3-pymysql (>= 0.7.6), python3-redis (>= 3.0.0), python3-reno (>= 2.5.0), python3-requests (>= 2.14.2), python3-six (>= 1.10.0), python3-sphinxcontrib.apidoc (>= 0.2.0), python3-sqlalchemy (>= 1.0.10), python3-stestr (>= 2.0.0), python3-stevedore (>= 1:1.20.0), python3-swiftclient (>= 1:3.2.0), python3-testrepository (>= 0.0.18), python3-testresources (>= 2.0.0), python3-testscenarios (>= 0.4), python3-testtools (>= 2.2.0), python3-webob (>= 1:1.7.1), python3-websocket (>= 0.44.0), subunit, tempest (>= 1:12.1.0), testrepository Filtered Build-Depends: debhelper (>= 10), dh-python, openstack-pkg-tools (>= 85ubuntu3~), po-debconf, python-all, python-pbr (>= 2.0.0), python-setuptools, python3-all, python3-pbr (>= 2.0.0), python3-setuptools, python3-sphinx (>= 1.6.3), alembic (>= 0.8.10), mongodb, python3-alembic (>= 0.8.10), python3-autobahn (>= 0.17.1), python3-babel (>= 2.3.4), python3-coverage (>= 4.0), python3-ddt (>= 1.0.1), python3-doc8 (>= 0.6.0), python3-falcon (>= 1.1.0), python3-fixtures (>= 3.0.0), python3-futurist (>= 1.2.0), python3-hacking (>= 0.12.0), python3-iso8601 (>= 0.1.11), python3-jsonschema (>= 2.6.0), python3-keystoneclient (>= 1:1.6.0), python3-keystonemiddleware (>= 4.17.0), python3-memcache (>= 1.56), python3-mock (>= 2.0.0), python3-msgpack (>= 0.5.1), python3-openstackdocstheme (>= 1.18.1), python3-os-api-ref (>= 1.4.0), python3-os-testr (>= 1.0.0), python3-oslo.cache (>= 1.26.0), python3-oslo.config (>= 1:5.2.0), python3-oslo.context (>= 1:2.19.2), python3-oslo.db (>= 4.27.0), python3-oslo.i18n (>= 3.15.3), python3-oslo.log (>= 3.36.0), python3-oslo.messaging (>= 5.29.0), python3-oslo.policy (>= 1.30.0), python3-oslo.reports (>= 1.18.0), python3-oslo.serialization (>= 2.18.0), python3-oslo.upgradecheck (>= 0.1.1), python3-oslo.utils (>= 3.33.0), python3-oslotest (>= 1:3.2.0), python3-osprofiler (>= 1.4.0), python3-pygments (>= 2.2.0), python3-pymongo (>= 3.6.0), python3-pymysql (>= 0.7.6), python3-redis (>= 3.0.0), python3-reno (>= 2.5.0), python3-requests (>= 2.14.2), python3-six (>= 1.10.0), python3-sphinxcontrib.apidoc (>= 0.2.0), python3-sqlalchemy (>= 1.0.10), python3-stestr (>= 2.0.0), python3-stevedore (>= 1:1.20.0), python3-swiftclient (>= 1:3.2.0), python3-testrepository (>= 0.0.18), python3-testresources (>= 2.0.0), python3-testscenarios (>= 0.4), python3-testtools (>= 2.2.0), python3-webob (>= 1:1.7.1), python3-websocket (>= 0.44.0), subunit, tempest (>= 1:12.1.0), testrepository dpkg-deb: building package 'sbuild-build-depends-zaqar-dummy' in '/<>/resolver-8lyELG/apt_archive/sbuild-build-depends-zaqar-dummy.deb'. Ign:1 copy:/<>/resolver-8lyELG/apt_archive ./ InRelease Get:2 copy:/<>/resolver-8lyELG/apt_archive ./ Release [2119 B] Ign:3 copy:/<>/resolver-8lyELG/apt_archive ./ Release.gpg Get:4 copy:/<>/resolver-8lyELG/apt_archive ./ Sources [826 B] Get:5 copy:/<>/resolver-8lyELG/apt_archive ./ Packages [1148 B] Fetched 4093 B in 0s (345 kB/s) Reading package lists... Reading package lists... +------------------------------------------------------------------------------+ | Install zaqar build dependencies (apt-based resolver) | +------------------------------------------------------------------------------+ Installing build dependencies Reading package lists... Building dependency tree... Reading state information... The following packages were automatically installed and are no longer required: libhogweed4 libisl21 libnettle6 libperl5.28 perl-modules-5.28 Use 'apt autoremove' to remove them. The following additional packages will be installed: alembic autoconf automake autopoint autotools-dev bsdmainutils cython3 dbus debhelper dh-autoreconf dh-python dh-strip-nondeterminism docutils-common dwz file flake8 fonts-glyphicons-halflings gettext gettext-base git git-man groff-base ieee-data intltool-debian jq libarchive-zip-perl libasn1-8-heimdal libboost-filesystem1.67.0 libboost-iostreams1.67.0 libboost-program-options1.67.0 libboost-system1.67.0 libbrotli1 libbsd0 libcroco3 libcurl3-gnutls libdbus-1-3 libdebhelper-perl libelf1 liberror-perl libexpat1 libfile-stripnondeterminism-perl libglib2.0-0 libgoogle-perftools4 libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libice6 libicu63 libjq1 libjs-bootstrap libjs-jquery libjs-sphinxdoc libjs-underscore libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common libmagic-mgc libmagic1 libmpdec2 libnghttp2-14 libonig5 libpcrecpp0v5 libpipeline1 libpsl5 libpython-stdlib libpython2-stdlib libpython2.7-minimal libpython2.7-stdlib libpython3-stdlib libpython3.7-minimal libpython3.7-stdlib libpython3.8-minimal libpython3.8-stdlib libroken18-heimdal librtmp1 libsasl2-2 libsasl2-modules-db libsigsegv2 libsm6 libsnappy1v5 libsodium23 libssh-4 libstemmer0d libsub-override-perl libsubunit-perl libtcmalloc-minimal4 libtool libuchardet0 libunwind8 libwind0-heimdal libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxext6 libxml2 libxmu6 libxslt1.1 libxt6 libyaml-0-2 libyaml-cpp0.6 m4 man-db mime-support mongodb mongodb-clients mongodb-server mongodb-server-core netbase openstack-pkg-tools po-debconf pycadf-common pyflakes3 python python-all python-babel-localedata python-minimal python-os-api-ref-common python-pastedeploy-tpl python-pbr python-pkg-resources python-setuptools python-six python2 python2-minimal python2.7 python2.7-minimal python3 python3-alabaster python3-alembic python3-all python3-amqp python3-anyjson python3-appdirs python3-asn1crypto python3-atomicwrites python3-attr python3-autobahn python3-automat python3-babel python3-bcrypt python3-blinker python3-bs4 python3-bson python3-cachetools python3-cbor python3-certifi python3-cffi-backend python3-chardet python3-cliff python3-cmd2 python3-colorama python3-constantly python3-coverage python3-cryptography python3-dateutil python3-dbus python3-ddt python3-debtcollector python3-decorator python3-deprecation python3-distutils python3-dnspython python3-doc8 python3-docutils python3-dogpile.cache python3-dulwich python3-entrypoints python3-eventlet python3-extras python3-falcon python3-fasteners python3-fixtures python3-flake8 python3-funcsigs python3-future python3-futurist python3-gabbi python3-greenlet python3-hacking python3-hamcrest python3-httplib2 python3-hyperlink python3-idna python3-imagesize python3-importlib-metadata python3-incremental python3-iso8601 python3-jinja2 python3-jmespath python3-json-pointer python3-jsonpatch python3-jsonpath-rw python3-jsonpath-rw-ext python3-jsonschema python3-jwt python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-kombu python3-lib2to3 python3-linecache2 python3-logutils python3-lxml python3-lz4 python3-mako python3-markupsafe python3-mccabe python3-memcache python3-migrate python3-mimeparse python3-minimal python3-mock python3-monotonic python3-more-itertools python3-mox3 python3-msgpack python3-munch python3-nacl python3-netaddr python3-netifaces python3-neutron-lib python3-neutron-tempest-plugin python3-oauthlib python3-openssl python3-openstackdocstheme python3-openstacksdk python3-openvswitch python3-os-api-ref python3-os-client-config python3-os-ken python3-os-service-types python3-os-testr python3-os-traits python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.reports python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslotest python3-osprofiler python3-packaging python3-paramiko python3-paste python3-pastedeploy python3-pbr python3-pecan python3-pep8 python3-pkg-resources python3-pluggy python3-ply python3-posix-ipc python3-prettytable python3-psutil python3-py python3-pyasn1 python3-pyasn1-modules python3-pycadf python3-pycodestyle python3-pyflakes python3-pygments python3-pyinotify python3-pymongo python3-pymysql python3-pyparsing python3-pyperclip python3-pyqrcode python3-pytest python3-redis python3-reno python3-repoze.lru python3-requests python3-requestsexceptions python3-restructuredtext-lint python3-rfc3986 python3-roman python3-routes python3-secretstorage python3-service-identity python3-setproctitle python3-setuptools python3-simplegeneric python3-singledispatch python3-six python3-snappy python3-sortedcontainers python3-soupsieve python3-sphinx python3-sphinxcontrib.apidoc python3-sqlalchemy python3-sqlparse python3-statsd python3-stestr python3-stevedore python3-subunit python3-swiftclient python3-tempest python3-tempita python3-tenacity python3-testrepository python3-testresources python3-testscenarios python3-testtools python3-tinyrpc python3-traceback2 python3-trie python3-twisted python3-twisted-bin python3-txaio python3-tz python3-u-msgpack python3-ubjson python3-unittest2 python3-urllib3 python3-vine python3-voluptuous python3-waitress python3-wcwidth python3-webob python3-websocket python3-webtest python3-wrapt python3-wsaccel python3-wsgi-intercept python3-yaml python3-zipp python3-zope.interface python3.7 python3.7-minimal python3.8 python3.8-minimal sgml-base sphinx-common subunit tempest testrepository wget x11-common xclip xml-core Suggested packages: autoconf-archive gnu-standards autoconf-doc wamerican | wordlist whois vacation cython-doc default-dbus-session-bus | dbus-session-bus dh-make gettext-doc libasprintf-dev libgettextpo-dev git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn groff krb5-doc krb5-user libtool-doc gfortran | fortran95-compiler gcj-jdk m4-doc apparmor less www-browser libmail-box-perl python-doc python-tk python-setuptools-doc python2-doc python2.7-doc binfmt-support python3-doc python3-tk python3-venv python3-editor python-amqp-doc python-attr-doc python-blinker-doc python-cliff-doc python-coverage-doc python-cryptography-doc python3-cryptography-vectors python-dbus-doc python3-dbus-dbg python-debtcollector-doc python-doc8-doc docutils-doc fonts-linuxlibertine | ttf-linux-libertine texlive-lang-french texlive-latex-base texlive-latex-recommended python3-gpg python-eventlet-doc python-funcsigs-doc python-future-doc python-futurist-doc python-gabbi-doc python-greenlet-doc python-greenlet-dev python3-greenlet-dbg python-jinja2-doc python-jsonpath-rw-ext-doc python-jsonschema-doc python3-crypto gnome-keyring libkf5wallet-bin python3-keyrings.alt python-keystoneauth1-doc python3-requests-kerberos python-kombu-doc python3-boto python3-django python3-lxml-dbg python-lxml-doc python3-beaker python-mako-doc memcached python-migrate-doc python-mock-doc python-nacl-doc ipython3 python-netaddr-docs python-neutron-lib-doc python-openssl-doc python3-openssl-dbg python-openstacksdk-doc python-os-client-config-doc python-os-service-types-doc python-os-testr-doc python-os-traits-doc python-oslo.cache-doc python-oslo.concurrency-doc python-oslo.log-doc python3-confluent-kafka python-oslo.middleware-doc python-oslo.policy-doc python-oslo.reports-doc python-oslo.service-doc python-oslo.versionedobjects-doc python3-gssapi httpd-wsgi libapache2-mod-python libapache2-mod-scgi libjs-mochikit python-pecan-doc python-ply-doc python-psutil-doc subversion python-pygments-doc ttf-bitstream-vera python-pyinotify-doc python-pymongo-doc python-pymysql-doc python-pyparsing-doc python3-hiredis python-reno-doc python3-socks python-secretstorage-doc python-sortedcontainers-doc dvipng imagemagick-6.q16 latexmk libjs-mathjax python3-sphinx-rtd-theme python3-stemmer sphinx-doc texlive-fonts-recommended texlive-latex-extra texlive-plain-generic python-sqlalchemy-doc python3-psycopg2 python3-mysqldb python3-fdb python-sqlparse-doc python-stestr-doc python-tenacity-doc python-testtools-doc python-tinyrpc-doc python-trie-doc python3-gtk2 python3-glade2 python3-pampy python3-qt4 python3-serial python3-wxgtk2.8 python3-twisted-bin-dbg python-txaio-doc python-waitress-doc python-webob-doc python-webtest-doc python3.7-venv python3.7-doc python3.8-venv python3.8-doc sgml-base-doc Recommended packages: python3-dev less ssh-client libarchive-cpio-perl libglib2.0-data shared-mime-info xdg-user-dirs javascript-common krb5-locales publicsuffix libsasl2-modules libltdl-dev mongo-tools autopkgtest madison-lite pristine-tar libmail-sendmail-perl pyflakes python3-bson-ext libjs-jquery-isonscreen libjs-jquery-tablesorter libjs-jquery-throttle-debounce python3-gi libpaper-utils python3-pil python3-fastimport python3-click python3-html5lib python3-pastescript python3-gridfs python3-pymongo-ext python3-png python3-sqlalchemy-ext xauth The following NEW packages will be installed: alembic autoconf automake autopoint autotools-dev bsdmainutils cython3 dbus debhelper dh-autoreconf dh-python dh-strip-nondeterminism docutils-common dwz file flake8 fonts-glyphicons-halflings gettext gettext-base git git-man groff-base ieee-data intltool-debian jq libarchive-zip-perl libasn1-8-heimdal libboost-filesystem1.67.0 libboost-iostreams1.67.0 libboost-program-options1.67.0 libboost-system1.67.0 libbrotli1 libbsd0 libcroco3 libcurl3-gnutls libdbus-1-3 libdebhelper-perl libelf1 liberror-perl libexpat1 libfile-stripnondeterminism-perl libglib2.0-0 libgoogle-perftools4 libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libice6 libicu63 libjq1 libjs-bootstrap libjs-jquery libjs-sphinxdoc libjs-underscore libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common libmagic-mgc libmagic1 libmpdec2 libnghttp2-14 libonig5 libpcrecpp0v5 libpipeline1 libpsl5 libpython-stdlib libpython2-stdlib libpython2.7-minimal libpython2.7-stdlib libpython3-stdlib libpython3.7-minimal libpython3.7-stdlib libpython3.8-minimal libpython3.8-stdlib libroken18-heimdal librtmp1 libsasl2-2 libsasl2-modules-db libsigsegv2 libsm6 libsnappy1v5 libsodium23 libssh-4 libstemmer0d libsub-override-perl libsubunit-perl libtcmalloc-minimal4 libtool libuchardet0 libunwind8 libwind0-heimdal libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxext6 libxml2 libxmu6 libxslt1.1 libxt6 libyaml-0-2 libyaml-cpp0.6 m4 man-db mime-support mongodb mongodb-clients mongodb-server mongodb-server-core netbase openstack-pkg-tools po-debconf pycadf-common pyflakes3 python python-all python-babel-localedata python-minimal python-os-api-ref-common python-pastedeploy-tpl python-pbr python-pkg-resources python-setuptools python-six python2 python2-minimal python2.7 python2.7-minimal python3 python3-alabaster python3-alembic python3-all python3-amqp python3-anyjson python3-appdirs python3-asn1crypto python3-atomicwrites python3-attr python3-autobahn python3-automat python3-babel python3-bcrypt python3-blinker python3-bs4 python3-bson python3-cachetools python3-cbor python3-certifi python3-cffi-backend python3-chardet python3-cliff python3-cmd2 python3-colorama python3-constantly python3-coverage python3-cryptography python3-dateutil python3-dbus python3-ddt python3-debtcollector python3-decorator python3-deprecation python3-distutils python3-dnspython python3-doc8 python3-docutils python3-dogpile.cache python3-dulwich python3-entrypoints python3-eventlet python3-extras python3-falcon python3-fasteners python3-fixtures python3-flake8 python3-funcsigs python3-future python3-futurist python3-gabbi python3-greenlet python3-hacking python3-hamcrest python3-httplib2 python3-hyperlink python3-idna python3-imagesize python3-importlib-metadata python3-incremental python3-iso8601 python3-jinja2 python3-jmespath python3-json-pointer python3-jsonpatch python3-jsonpath-rw python3-jsonpath-rw-ext python3-jsonschema python3-jwt python3-keyring python3-keystoneauth1 python3-keystoneclient python3-keystonemiddleware python3-kombu python3-lib2to3 python3-linecache2 python3-logutils python3-lxml python3-lz4 python3-mako python3-markupsafe python3-mccabe python3-memcache python3-migrate python3-mimeparse python3-minimal python3-mock python3-monotonic python3-more-itertools python3-mox3 python3-msgpack python3-munch python3-nacl python3-netaddr python3-netifaces python3-neutron-lib python3-neutron-tempest-plugin python3-oauthlib python3-openssl python3-openstackdocstheme python3-openstacksdk python3-openvswitch python3-os-api-ref python3-os-client-config python3-os-ken python3-os-service-types python3-os-testr python3-os-traits python3-oslo.cache python3-oslo.concurrency python3-oslo.config python3-oslo.context python3-oslo.db python3-oslo.i18n python3-oslo.log python3-oslo.messaging python3-oslo.middleware python3-oslo.policy python3-oslo.reports python3-oslo.serialization python3-oslo.service python3-oslo.upgradecheck python3-oslo.utils python3-oslo.versionedobjects python3-oslotest python3-osprofiler python3-packaging python3-paramiko python3-paste python3-pastedeploy python3-pbr python3-pecan python3-pep8 python3-pkg-resources python3-pluggy python3-ply python3-posix-ipc python3-prettytable python3-psutil python3-py python3-pyasn1 python3-pyasn1-modules python3-pycadf python3-pycodestyle python3-pyflakes python3-pygments python3-pyinotify python3-pymongo python3-pymysql python3-pyparsing python3-pyperclip python3-pyqrcode python3-pytest python3-redis python3-reno python3-repoze.lru python3-requests python3-requestsexceptions python3-restructuredtext-lint python3-rfc3986 python3-roman python3-routes python3-secretstorage python3-service-identity python3-setproctitle python3-setuptools python3-simplegeneric python3-singledispatch python3-six python3-snappy python3-sortedcontainers python3-soupsieve python3-sphinx python3-sphinxcontrib.apidoc python3-sqlalchemy python3-sqlparse python3-statsd python3-stestr python3-stevedore python3-subunit python3-swiftclient python3-tempest python3-tempita python3-tenacity python3-testrepository python3-testresources python3-testscenarios python3-testtools python3-tinyrpc python3-traceback2 python3-trie python3-twisted python3-twisted-bin python3-txaio python3-tz python3-u-msgpack python3-ubjson python3-unittest2 python3-urllib3 python3-vine python3-voluptuous python3-waitress python3-wcwidth python3-webob python3-websocket python3-webtest python3-wrapt python3-wsaccel python3-wsgi-intercept python3-yaml python3-zipp python3-zope.interface python3.7 python3.7-minimal python3.8 python3.8-minimal sbuild-build-depends-zaqar-dummy sgml-base sphinx-common subunit tempest testrepository wget x11-common xclip xml-core 0 upgraded, 361 newly installed, 0 to remove and 0 not upgraded. Need to get 115 MB of archives. After this operation, 532 MB of additional disk space will be used. Get:1 copy:/<>/resolver-8lyELG/apt_archive ./ sbuild-build-depends-zaqar-dummy 0.invalid.0 [1448 B] Get:2 http://ftpmaster.internal/ubuntu focal/main amd64 libpython3.7-minimal amd64 3.7.5-2 [545 kB] Get:3 http://ftpmaster.internal/ubuntu focal/main amd64 libexpat1 amd64 2.2.9-1 [73.3 kB] Get:4 http://ftpmaster.internal/ubuntu focal/main amd64 python3.7-minimal amd64 3.7.5-2 [1766 kB] Get:5 http://ftpmaster.internal/ubuntu focal/main amd64 python3-minimal amd64 3.7.5-1ubuntu1 [23.3 kB] Get:6 http://ftpmaster.internal/ubuntu focal/main amd64 mime-support all 3.64ubuntu1 [30.6 kB] Get:7 http://ftpmaster.internal/ubuntu focal/main amd64 libmpdec2 amd64 2.4.2-2 [84.1 kB] Get:8 http://ftpmaster.internal/ubuntu focal/main amd64 libpython3.7-stdlib amd64 3.7.5-2 [1732 kB] Get:9 http://ftpmaster.internal/ubuntu focal/main amd64 python3.7 amd64 3.7.5-2 [301 kB] Get:10 http://ftpmaster.internal/ubuntu focal/main amd64 libpython3-stdlib amd64 3.7.5-1ubuntu1 [6844 B] Get:11 http://ftpmaster.internal/ubuntu focal/main amd64 python3 amd64 3.7.5-1ubuntu1 [47.2 kB] Get:12 http://ftpmaster.internal/ubuntu focal/main amd64 libbsd0 amd64 0.10.0-1 [45.4 kB] Get:13 http://ftpmaster.internal/ubuntu focal/main amd64 bsdmainutils amd64 11.1.2ubuntu2 [181 kB] Get:14 http://ftpmaster.internal/ubuntu focal/main amd64 libuchardet0 amd64 0.0.6-3 [64.9 kB] Get:15 http://ftpmaster.internal/ubuntu focal/main amd64 groff-base amd64 1.22.4-4 [865 kB] Get:16 http://ftpmaster.internal/ubuntu focal/main amd64 libpipeline1 amd64 1.5.1-3 [27.4 kB] Get:17 http://ftpmaster.internal/ubuntu focal/main amd64 man-db amd64 2.9.0-2 [1114 kB] Get:18 http://ftpmaster.internal/ubuntu focal/universe amd64 libpython2.7-minimal amd64 2.7.17-1 [335 kB] Get:19 http://ftpmaster.internal/ubuntu focal/universe amd64 python2.7-minimal amd64 2.7.17-1 [1308 kB] Get:20 http://ftpmaster.internal/ubuntu focal/universe amd64 python2-minimal amd64 2.7.17-1 [27.8 kB] Get:21 http://ftpmaster.internal/ubuntu focal/universe amd64 python-minimal amd64 2.7.17-1 [5996 B] Get:22 http://ftpmaster.internal/ubuntu focal/universe amd64 libpython2.7-stdlib amd64 2.7.17-1 [1882 kB] Get:23 http://ftpmaster.internal/ubuntu focal/universe amd64 python2.7 amd64 2.7.17-1 [248 kB] Get:24 http://ftpmaster.internal/ubuntu focal/universe amd64 libpython2-stdlib amd64 2.7.17-1 [7400 B] Get:25 http://ftpmaster.internal/ubuntu focal/universe amd64 libpython-stdlib amd64 2.7.17-1 [5836 B] Get:26 http://ftpmaster.internal/ubuntu focal/universe amd64 python2 amd64 2.7.17-1 [26.5 kB] Get:27 http://ftpmaster.internal/ubuntu focal/universe amd64 python amd64 2.7.17-1 [7836 B] Get:28 http://ftpmaster.internal/ubuntu focal/main amd64 python3-pyparsing all 2.4.2-1 [58.8 kB] Get:29 http://ftpmaster.internal/ubuntu focal/main amd64 libxau6 amd64 1:1.0.9-0ubuntu1 [7488 B] Get:30 http://ftpmaster.internal/ubuntu focal/main amd64 libxdmcp6 amd64 1:1.1.3-0ubuntu1 [10.6 kB] Get:31 http://ftpmaster.internal/ubuntu focal/main amd64 libxcb1 amd64 1.13.1-2 [45.2 kB] Get:32 http://ftpmaster.internal/ubuntu focal/main amd64 libx11-data all 2:1.6.8-1 [113 kB] Get:33 http://ftpmaster.internal/ubuntu focal/main amd64 libx11-6 amd64 2:1.6.8-1 [573 kB] Get:34 http://ftpmaster.internal/ubuntu focal/main amd64 libxext6 amd64 2:1.3.4-0ubuntu1 [29.1 kB] Get:35 http://ftpmaster.internal/ubuntu focal/main amd64 x11-common all 1:7.7+19ubuntu12 [22.4 kB] Get:36 http://ftpmaster.internal/ubuntu focal/main amd64 libice6 amd64 2:1.0.10-0ubuntu1 [41.0 kB] Get:37 http://ftpmaster.internal/ubuntu focal/main amd64 libsm6 amd64 2:1.2.3-1 [16.1 kB] Get:38 http://ftpmaster.internal/ubuntu focal/main amd64 libxt6 amd64 1:1.1.5-1 [160 kB] Get:39 http://ftpmaster.internal/ubuntu focal/main amd64 libxmu6 amd64 2:1.1.3-0ubuntu1 [45.8 kB] Get:40 http://ftpmaster.internal/ubuntu focal/universe amd64 xclip amd64 0.13-1 [18.4 kB] Get:41 http://ftpmaster.internal/ubuntu focal/main amd64 python3-pyperclip all 1.7.0-1 [10.5 kB] Get:42 http://ftpmaster.internal/ubuntu focal/main amd64 python3-six all 1.12.0-2build1 [11.7 kB] Get:43 http://ftpmaster.internal/ubuntu focal/main amd64 python3-wcwidth all 0.1.7+dfsg1-6build1 [15.4 kB] Get:44 http://ftpmaster.internal/ubuntu focal/main amd64 python3-cmd2 all 0.8.5-2.1 [49.6 kB] Get:45 http://ftpmaster.internal/ubuntu focal/main amd64 libpython3.8-minimal amd64 3.8.0-5 [703 kB] Get:46 http://ftpmaster.internal/ubuntu focal/main amd64 python3.8-minimal amd64 3.8.0-5 [1890 kB] Get:47 http://ftpmaster.internal/ubuntu focal/main amd64 sgml-base all 1.29.1 [12.4 kB] Get:48 http://ftpmaster.internal/ubuntu focal/main amd64 libdbus-1-3 amd64 1.12.16-2ubuntu2 [179 kB] Get:49 http://ftpmaster.internal/ubuntu focal/main amd64 dbus amd64 1.12.16-2ubuntu2 [151 kB] Get:50 http://ftpmaster.internal/ubuntu focal/main amd64 libmagic-mgc amd64 1:5.37-6 [209 kB] Get:51 http://ftpmaster.internal/ubuntu focal/main amd64 libmagic1 amd64 1:5.37-6 [75.3 kB] Get:52 http://ftpmaster.internal/ubuntu focal/main amd64 file amd64 1:5.37-6 [23.2 kB] Get:53 http://ftpmaster.internal/ubuntu focal/main amd64 libelf1 amd64 0.176-1.1 [44.1 kB] Get:54 http://ftpmaster.internal/ubuntu focal/main amd64 libglib2.0-0 amd64 2.63.3-1 [1279 kB] Get:55 http://ftpmaster.internal/ubuntu focal/main amd64 libicu63 amd64 63.2-2 [8294 kB] Get:56 http://ftpmaster.internal/ubuntu focal/main amd64 libsodium23 amd64 1.0.18-1 [150 kB] Get:57 http://ftpmaster.internal/ubuntu focal/main amd64 libxml2 amd64 2.9.4+dfsg1-8ubuntu1 [648 kB] Get:58 http://ftpmaster.internal/ubuntu focal/main amd64 libyaml-0-2 amd64 0.2.2-1 [48.9 kB] Get:59 http://ftpmaster.internal/ubuntu focal/main amd64 netbase all 5.6 [13.0 kB] Get:60 http://ftpmaster.internal/ubuntu focal/main amd64 python3-cffi-backend amd64 1.13.2-1 [86.9 kB] Get:61 http://ftpmaster.internal/ubuntu focal/main amd64 python3-dbus amd64 1.2.14-1 [112 kB] Get:62 http://ftpmaster.internal/ubuntu focal/main amd64 python3-nacl amd64 1.3.0-3 [49.2 kB] Get:63 http://ftpmaster.internal/ubuntu focal/main amd64 python3-netifaces amd64 0.10.4-1ubuntu1 [19.8 kB] Get:64 http://ftpmaster.internal/ubuntu focal/main amd64 python3-pkg-resources all 41.4.0-1 [100 kB] Get:65 http://ftpmaster.internal/ubuntu focal/main amd64 python3-yaml amd64 5.1.2-1build1 [202 kB] Get:66 http://ftpmaster.internal/ubuntu focal/main amd64 gettext-base amd64 0.19.8.1-10 [50.2 kB] Get:67 http://ftpmaster.internal/ubuntu focal/main amd64 libkrb5support0 amd64 1.17-6 [31.4 kB] Get:68 http://ftpmaster.internal/ubuntu focal/main amd64 libk5crypto3 amd64 1.17-6 [80.2 kB] Get:69 http://ftpmaster.internal/ubuntu focal/main amd64 libkeyutils1 amd64 1.6-6ubuntu1 [10.2 kB] Get:70 http://ftpmaster.internal/ubuntu focal/main amd64 libkrb5-3 amd64 1.17-6 [330 kB] Get:71 http://ftpmaster.internal/ubuntu focal/main amd64 libgssapi-krb5-2 amd64 1.17-6 [121 kB] Get:72 http://ftpmaster.internal/ubuntu focal/main amd64 libpsl5 amd64 0.20.2-2 [50.0 kB] Get:73 http://ftpmaster.internal/ubuntu focal/main amd64 wget amd64 1.20.3-1ubuntu1 [349 kB] Get:74 http://ftpmaster.internal/ubuntu focal/main amd64 python3-dateutil all 2.7.3-3 [63.3 kB] Get:75 http://ftpmaster.internal/ubuntu focal/main amd64 python3-markupsafe amd64 1.1.0-1build1 [14.5 kB] Get:76 http://ftpmaster.internal/ubuntu focal/main amd64 python3-mako all 1.1.0+ds1-1 [59.2 kB] Get:77 http://ftpmaster.internal/ubuntu focal/main amd64 python3-sqlalchemy all 1.2.18+ds1-2ubuntu3 [722 kB] Get:78 http://ftpmaster.internal/ubuntu focal/main amd64 python3-alembic all 1.1.0-1ubuntu1 [98.7 kB] Get:79 http://ftpmaster.internal/ubuntu focal/main amd64 libjs-jquery all 3.3.1~dfsg-3 [329 kB] Get:80 http://ftpmaster.internal/ubuntu focal/main amd64 libjs-underscore all 1.9.1~dfsg-1 [98.6 kB] Get:81 http://ftpmaster.internal/ubuntu focal/main amd64 libjs-sphinxdoc all 1.8.5-4 [96.7 kB] Get:82 http://ftpmaster.internal/ubuntu focal/main amd64 alembic all 1.1.0-1ubuntu1 [251 kB] Get:83 http://ftpmaster.internal/ubuntu focal/main amd64 libsigsegv2 amd64 2.12-2 [13.9 kB] Get:84 http://ftpmaster.internal/ubuntu focal/main amd64 m4 amd64 1.4.18-4 [199 kB] Get:85 http://ftpmaster.internal/ubuntu focal/main amd64 autoconf all 2.69-11ubuntu1 [321 kB] Get:86 http://ftpmaster.internal/ubuntu focal/main amd64 autotools-dev all 20180224.1 [39.6 kB] Get:87 http://ftpmaster.internal/ubuntu focal/main amd64 automake all 1:1.16.1-4ubuntu3 [522 kB] Get:88 http://ftpmaster.internal/ubuntu focal/main amd64 autopoint all 0.19.8.1-10 [412 kB] Get:89 http://ftpmaster.internal/ubuntu focal/universe amd64 cython3 amd64 0.29.14-0.1 [2080 kB] Get:90 http://ftpmaster.internal/ubuntu focal/main amd64 libtool all 2.4.6-11 [194 kB] Get:91 http://ftpmaster.internal/ubuntu focal/main amd64 dh-autoreconf all 19 [16.1 kB] Get:92 http://ftpmaster.internal/ubuntu focal/main amd64 libdebhelper-perl all 12.7.1ubuntu1 [52.0 kB] Get:93 http://ftpmaster.internal/ubuntu focal/main amd64 libarchive-zip-perl all 1.67-1 [90.4 kB] Get:94 http://ftpmaster.internal/ubuntu focal/main amd64 libsub-override-perl all 0.09-2 [9532 B] Get:95 http://ftpmaster.internal/ubuntu focal/main amd64 libfile-stripnondeterminism-perl all 1.6.3-1 [16.0 kB] Get:96 http://ftpmaster.internal/ubuntu focal/main amd64 dh-strip-nondeterminism all 1.6.3-1 [5224 B] Get:97 http://ftpmaster.internal/ubuntu focal/main amd64 dwz amd64 0.13-5 [151 kB] Get:98 http://ftpmaster.internal/ubuntu focal/main amd64 libcroco3 amd64 0.6.13-1 [82.5 kB] Get:99 http://ftpmaster.internal/ubuntu focal/main amd64 gettext amd64 0.19.8.1-10 [897 kB] Get:100 http://ftpmaster.internal/ubuntu focal/main amd64 intltool-debian all 0.35.0+20060710.5 [24.9 kB] Get:101 http://ftpmaster.internal/ubuntu focal/main amd64 po-debconf all 1.0.21 [233 kB] Get:102 http://ftpmaster.internal/ubuntu focal/main amd64 debhelper all 12.7.1ubuntu1 [875 kB] Get:103 http://ftpmaster.internal/ubuntu focal/main amd64 python3-lib2to3 all 3.8.0-1 [75.6 kB] Get:104 http://ftpmaster.internal/ubuntu focal/main amd64 python3-distutils all 3.8.0-1 [142 kB] Get:105 http://ftpmaster.internal/ubuntu focal/main amd64 dh-python all 4.20191017ubuntu1 [88.5 kB] Get:106 http://ftpmaster.internal/ubuntu focal/main amd64 xml-core all 0.18+nmu1 [21.6 kB] Get:107 http://ftpmaster.internal/ubuntu focal/main amd64 docutils-common all 0.15.2+dfsg-1 [156 kB] Get:108 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-mccabe all 0.6.1-2build1 [8024 B] Get:109 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-pyflakes all 2.1.1-1 [48.5 kB] Get:110 http://ftpmaster.internal/ubuntu focal/main amd64 python3-setuptools all 41.4.0-1 [255 kB] Get:111 http://ftpmaster.internal/ubuntu focal/main amd64 python3-entrypoints all 0.3-1build1 [5656 B] Get:112 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-pycodestyle all 2.5.0-1 [36.6 kB] Get:113 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-flake8 all 3.7.9-1 [51.8 kB] Get:114 http://ftpmaster.internal/ubuntu focal/universe amd64 flake8 all 3.7.9-1 [6016 B] Get:115 http://ftpmaster.internal/ubuntu focal/universe amd64 fonts-glyphicons-halflings all 1.009~3.4.1+dfsg-1 [117 kB] Get:116 http://ftpmaster.internal/ubuntu focal/main amd64 libbrotli1 amd64 1.0.7-5 [265 kB] Get:117 http://ftpmaster.internal/ubuntu focal/main amd64 libroken18-heimdal amd64 7.7.0+dfsg-1 [41.9 kB] Get:118 http://ftpmaster.internal/ubuntu focal/main amd64 libasn1-8-heimdal amd64 7.7.0+dfsg-1 [181 kB] Get:119 http://ftpmaster.internal/ubuntu focal/main amd64 libheimbase1-heimdal amd64 7.7.0+dfsg-1 [29.7 kB] Get:120 http://ftpmaster.internal/ubuntu focal/main amd64 libhcrypto4-heimdal amd64 7.7.0+dfsg-1 [87.8 kB] Get:121 http://ftpmaster.internal/ubuntu focal/main amd64 libwind0-heimdal amd64 7.7.0+dfsg-1 [47.9 kB] Get:122 http://ftpmaster.internal/ubuntu focal/main amd64 libhx509-5-heimdal amd64 7.7.0+dfsg-1 [107 kB] Get:123 http://ftpmaster.internal/ubuntu focal/main amd64 libkrb5-26-heimdal amd64 7.7.0+dfsg-1 [207 kB] Get:124 http://ftpmaster.internal/ubuntu focal/main amd64 libheimntlm0-heimdal amd64 7.7.0+dfsg-1 [15.1 kB] Get:125 http://ftpmaster.internal/ubuntu focal/main amd64 libgssapi3-heimdal amd64 7.7.0+dfsg-1 [96.6 kB] Get:126 http://ftpmaster.internal/ubuntu focal/main amd64 libsasl2-modules-db amd64 2.1.27+dfsg-2 [14.9 kB] Get:127 http://ftpmaster.internal/ubuntu focal/main amd64 libsasl2-2 amd64 2.1.27+dfsg-2 [49.3 kB] Get:128 http://ftpmaster.internal/ubuntu focal/main amd64 libldap-common all 2.4.48+dfsg-1ubuntu3 [17.3 kB] Get:129 http://ftpmaster.internal/ubuntu focal/main amd64 libldap-2.4-2 amd64 2.4.48+dfsg-1ubuntu3 [155 kB] Get:130 http://ftpmaster.internal/ubuntu focal/main amd64 libnghttp2-14 amd64 1.40.0-1 [78.1 kB] Get:131 http://ftpmaster.internal/ubuntu focal/main amd64 librtmp1 amd64 2.4+20151223.gitfa8646d.1-2build1 [54.9 kB] Get:132 http://ftpmaster.internal/ubuntu focal/main amd64 libssh-4 amd64 0.9.0-1ubuntu5 [196 kB] Get:133 http://ftpmaster.internal/ubuntu focal/main amd64 libcurl3-gnutls amd64 7.66.0-1ubuntu1 [231 kB] Get:134 http://ftpmaster.internal/ubuntu focal/main amd64 liberror-perl all 0.17028-1 [26.6 kB] Get:135 http://ftpmaster.internal/ubuntu focal/main amd64 git-man all 1:2.24.0-1ubuntu1 [868 kB] Get:136 http://ftpmaster.internal/ubuntu focal/main amd64 git amd64 1:2.24.0-1ubuntu1 [4504 kB] Get:137 http://ftpmaster.internal/ubuntu focal/main amd64 ieee-data all 20180805.1 [1589 kB] Get:138 http://ftpmaster.internal/ubuntu focal/universe amd64 libonig5 amd64 6.9.4-1 [142 kB] Get:139 http://ftpmaster.internal/ubuntu focal/universe amd64 libjq1 amd64 1.6-1 [121 kB] Get:140 http://ftpmaster.internal/ubuntu focal/universe amd64 jq amd64 1.6-1 [50.2 kB] Get:141 http://ftpmaster.internal/ubuntu focal/main amd64 libboost-system1.67.0 amd64 1.67.0-13ubuntu2 [205 kB] Get:142 http://ftpmaster.internal/ubuntu focal/main amd64 libboost-filesystem1.67.0 amd64 1.67.0-13ubuntu2 [234 kB] Get:143 http://ftpmaster.internal/ubuntu focal/main amd64 libboost-iostreams1.67.0 amd64 1.67.0-13ubuntu2 [225 kB] Get:144 http://ftpmaster.internal/ubuntu focal/main amd64 libboost-program-options1.67.0 amd64 1.67.0-13ubuntu2 [331 kB] Get:145 http://ftpmaster.internal/ubuntu focal/main amd64 libtcmalloc-minimal4 amd64 2.5-2.2ubuntu3 [91.6 kB] Get:146 http://ftpmaster.internal/ubuntu focal/main amd64 libunwind8 amd64 1.2.1-9 [47.0 kB] Get:147 http://ftpmaster.internal/ubuntu focal/main amd64 libgoogle-perftools4 amd64 2.5-2.2ubuntu3 [190 kB] Get:148 http://ftpmaster.internal/ubuntu focal/universe amd64 libjs-bootstrap all 3.4.1+dfsg-1 [124 kB] Get:149 http://ftpmaster.internal/ubuntu focal/main amd64 libpcrecpp0v5 amd64 2:8.39-12 [15.4 kB] Get:150 http://ftpmaster.internal/ubuntu focal/main amd64 libpython3.8-stdlib amd64 3.8.0-5 [1663 kB] Get:151 http://ftpmaster.internal/ubuntu focal/main amd64 libstemmer0d amd64 0+svn585-1.1 [61.3 kB] Get:152 http://ftpmaster.internal/ubuntu focal/universe amd64 libsubunit-perl all 1.3.0-6build1 [6148 B] Get:153 http://ftpmaster.internal/ubuntu focal/main amd64 libxslt1.1 amd64 1.1.33-0ubuntu2 [149 kB] Get:154 http://ftpmaster.internal/ubuntu focal/main amd64 libyaml-cpp0.6 amd64 0.6.2-4fakesync1 [145 kB] Get:155 http://ftpmaster.internal/ubuntu focal/main amd64 libsnappy1v5 amd64 1.1.7-2 [16.2 kB] Get:156 http://ftpmaster.internal/ubuntu focal/universe amd64 mongodb-clients amd64 1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2 [20.8 MB] Get:157 http://ftpmaster.internal/ubuntu focal/universe amd64 mongodb-server-core amd64 1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2 [20.9 MB] Get:158 http://ftpmaster.internal/ubuntu focal/universe amd64 mongodb-server all 1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2 [12.6 kB] Get:159 http://ftpmaster.internal/ubuntu focal/universe amd64 mongodb amd64 1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2 [9784 B] Get:160 http://ftpmaster.internal/ubuntu focal/main amd64 pycadf-common all 2.10.0-2 [4932 B] Get:161 http://ftpmaster.internal/ubuntu focal/universe amd64 pyflakes3 all 2.1.1-1 [3320 B] Get:162 http://ftpmaster.internal/ubuntu focal/universe amd64 python-all amd64 2.7.17-1 [1088 B] Get:163 http://ftpmaster.internal/ubuntu focal/main amd64 python-babel-localedata all 2.6.0+dfsg.1-1 [4071 kB] Get:164 http://ftpmaster.internal/ubuntu focal/main amd64 python-pastedeploy-tpl all 2.0.1-1build1 [5036 B] Get:165 http://ftpmaster.internal/ubuntu focal/universe amd64 python-pkg-resources all 41.4.0-1 [129 kB] Get:166 http://ftpmaster.internal/ubuntu focal/universe amd64 python-setuptools all 41.4.0-1 [333 kB] Get:167 http://ftpmaster.internal/ubuntu focal/universe amd64 python-six all 1.12.0-2build1 [11.6 kB] Get:168 http://ftpmaster.internal/ubuntu focal/main amd64 python3.8 amd64 3.8.0-5 [355 kB] Get:169 http://ftpmaster.internal/ubuntu focal/main amd64 python3-all amd64 3.7.5-1ubuntu1 [1120 B] Get:170 http://ftpmaster.internal/ubuntu focal/main amd64 python3-anyjson all 0.3.3-2 [7392 B] Get:171 http://ftpmaster.internal/ubuntu focal/main amd64 python3-appdirs all 1.4.3-1build1 [10.6 kB] Get:172 http://ftpmaster.internal/ubuntu focal/main amd64 python3-asn1crypto all 0.24.0-1build1 [72.9 kB] Get:173 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-atomicwrites all 1.1.5-2build1 [7016 B] Get:174 http://ftpmaster.internal/ubuntu focal/main amd64 python3-attr all 18.2.0-1build1 [29.7 kB] Get:175 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-cbor amd64 1.0.0-1.1 [23.0 kB] Get:176 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-lz4 amd64 3.0.2+dfsg-1 [33.9 kB] Get:177 http://ftpmaster.internal/ubuntu focal/main amd64 python3-cryptography amd64 2.6.1-4 [207 kB] Get:178 http://ftpmaster.internal/ubuntu focal/main amd64 python3-openssl all 19.0.0-1 [43.2 kB] Get:179 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-pyqrcode all 1.2.1-4 [30.3 kB] Get:180 http://ftpmaster.internal/ubuntu focal/main amd64 python3-pyasn1 all 0.4.2-3build1 [46.7 kB] Get:181 http://ftpmaster.internal/ubuntu focal/main amd64 python3-pyasn1-modules all 0.2.1-0.2build1 [32.9 kB] Get:182 http://ftpmaster.internal/ubuntu focal/main amd64 python3-service-identity all 18.1.0-5build1 [10.7 kB] Get:183 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-snappy amd64 0.5.3-1.1 [17.5 kB] Get:184 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-trie all 0.2+ds-2 [7520 B] Get:185 http://ftpmaster.internal/ubuntu focal/main amd64 python3-automat all 0.6.0-1 [25.2 kB] Get:186 http://ftpmaster.internal/ubuntu focal/main amd64 python3-constantly all 15.1.0-1build1 [8244 B] Get:187 http://ftpmaster.internal/ubuntu focal/main amd64 python3-idna all 2.6-2build1 [32.8 kB] Get:188 http://ftpmaster.internal/ubuntu focal/main amd64 python3-hyperlink all 19.0.0-1 [33.5 kB] Get:189 http://ftpmaster.internal/ubuntu focal/main amd64 python3-incremental all 16.10.1-3.1 [14.8 kB] Get:190 http://ftpmaster.internal/ubuntu focal/main amd64 python3-zope.interface amd64 4.6.0-1 [87.6 kB] Get:191 http://ftpmaster.internal/ubuntu focal/main amd64 python3-twisted-bin amd64 18.9.0-5 [12.8 kB] Get:192 http://ftpmaster.internal/ubuntu focal/main amd64 python3-hamcrest all 1.9.0-2 [24.3 kB] Get:193 http://ftpmaster.internal/ubuntu focal/main amd64 python3-twisted all 18.9.0-5 [1926 kB] Get:194 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-txaio all 2.10.0-1 [18.8 kB] Get:195 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-u-msgpack all 2.1-1build1 [7576 B] Get:196 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-ubjson amd64 0.14.0-2 [43.2 kB] Get:197 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-wsaccel amd64 0.6.2-2 [59.3 kB] Get:198 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-autobahn all 17.10.1+dfsg1-6 [157 kB] Get:199 http://ftpmaster.internal/ubuntu focal/main amd64 python3-tz all 2019.3-1 [24.4 kB] Get:200 http://ftpmaster.internal/ubuntu focal/main amd64 python3-babel all 2.6.0+dfsg.1-1 [83.4 kB] Get:201 http://ftpmaster.internal/ubuntu focal/main amd64 python3-blinker all 1.4+dfsg1-0.2build1 [13.2 kB] Get:202 http://ftpmaster.internal/ubuntu focal/main amd64 python3-soupsieve all 1.9.5+dfsg-1 [29.1 kB] Get:203 http://ftpmaster.internal/ubuntu focal/main amd64 python3-bs4 all 4.8.2-1 [83.0 kB] Get:204 http://ftpmaster.internal/ubuntu focal/main amd64 python3-bson amd64 3.7.1-1.1build1 [32.6 kB] Get:205 http://ftpmaster.internal/ubuntu focal/main amd64 python3-cachetools all 3.1.1-3 [9952 B] Get:206 http://ftpmaster.internal/ubuntu focal/main amd64 python3-certifi all 2019.11.28-1 [149 kB] Get:207 http://ftpmaster.internal/ubuntu focal/main amd64 python3-chardet all 3.0.4-4 [80.6 kB] Get:208 http://ftpmaster.internal/ubuntu focal/main amd64 python3-roman all 2.0.0-3build1 [8728 B] Get:209 http://ftpmaster.internal/ubuntu focal/main amd64 python3-docutils all 0.15.2+dfsg-1 [366 kB] Get:210 http://ftpmaster.internal/ubuntu focal/main amd64 python3-pbr all 5.4.4-0ubuntu1 [64.0 kB] Get:211 http://ftpmaster.internal/ubuntu focal/main amd64 python3-prettytable all 0.7.2-5 [20.1 kB] Get:212 http://ftpmaster.internal/ubuntu focal/main amd64 python3-stevedore all 1:1.31.0-0ubuntu1 [18.5 kB] Get:213 http://ftpmaster.internal/ubuntu focal/main amd64 python3-cliff all 2.16.0-0ubuntu1 [41.2 kB] Get:214 http://ftpmaster.internal/ubuntu focal/main amd64 python3-colorama all 0.3.7-1 [14.9 kB] Get:215 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-coverage amd64 4.5.2+dfsg.1-4 [110 kB] Get:216 http://ftpmaster.internal/ubuntu focal/main amd64 python3-ddt all 1.2.1-2ubuntu1 [7244 B] Get:217 http://ftpmaster.internal/ubuntu focal/main amd64 python3-wrapt amd64 1.11.2-2 [35.0 kB] Get:218 http://ftpmaster.internal/ubuntu focal/main amd64 python3-debtcollector all 1.21.0-2ubuntu1 [13.6 kB] Get:219 http://ftpmaster.internal/ubuntu focal/main amd64 python3-decorator all 4.3.0-1.1build1 [9652 B] Get:220 http://ftpmaster.internal/ubuntu focal/main amd64 python3-packaging all 19.1-2 [21.7 kB] Get:221 http://ftpmaster.internal/ubuntu focal/main amd64 python3-deprecation all 2.0.7-1 [8512 B] Get:222 http://ftpmaster.internal/ubuntu focal/main amd64 python3-dnspython all 1.16.0-1build1 [89.1 kB] Get:223 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-restructuredtext-lint all 1.3.0-2 [12.3 kB] Get:224 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-doc8 all 0.8.0-4 [14.0 kB] Get:225 http://ftpmaster.internal/ubuntu focal/main amd64 python3-dogpile.cache all 0.7.1-1ubuntu1 [34.9 kB] Get:226 http://ftpmaster.internal/ubuntu focal/main amd64 python3-urllib3 all 1.24.1-1ubuntu2 [83.9 kB] Get:227 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-dulwich amd64 0.19.11-2 [244 kB] Get:228 http://ftpmaster.internal/ubuntu focal/main amd64 python3-greenlet amd64 0.4.15-3 [19.4 kB] Get:229 http://ftpmaster.internal/ubuntu focal/main amd64 python3-monotonic all 1.5-0ubuntu2 [5660 B] Get:230 http://ftpmaster.internal/ubuntu focal/main amd64 python3-eventlet all 0.25.0-0ubuntu1 [154 kB] Get:231 http://ftpmaster.internal/ubuntu focal/main amd64 python3-extras all 1.0.0-3 [7480 B] Get:232 http://ftpmaster.internal/ubuntu focal/main amd64 python3-jsonschema all 2.6.0-4ubuntu2 [31.1 kB] Get:233 http://ftpmaster.internal/ubuntu focal/main amd64 python3-mimeparse all 1.6.0-2 [7108 B] Get:234 http://ftpmaster.internal/ubuntu focal/main amd64 python3-msgpack amd64 0.5.6-2 [123 kB] Get:235 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-falcon amd64 1.4.1-2 [1307 kB] Get:236 http://ftpmaster.internal/ubuntu focal/main amd64 python3-fasteners all 0.14.1-2 [14.1 kB] Get:237 http://ftpmaster.internal/ubuntu focal/main amd64 python3-linecache2 all 1.0.0-3build1 [12.7 kB] Get:238 http://ftpmaster.internal/ubuntu focal/main amd64 python3-traceback2 all 1.4.0-5build1 [16.5 kB] Get:239 http://ftpmaster.internal/ubuntu focal/main amd64 python3-unittest2 all 1.1.0-6.1build1 [69.5 kB] Get:240 http://ftpmaster.internal/ubuntu focal/main amd64 python3-testtools all 2.3.0-5 [124 kB] Get:241 http://ftpmaster.internal/ubuntu focal/main amd64 python3-fixtures all 3.0.0-2 [32.4 kB] Get:242 http://ftpmaster.internal/ubuntu focal/main amd64 python3-funcsigs all 1.0.2-4build1 [13.6 kB] Get:243 http://ftpmaster.internal/ubuntu focal/main amd64 python3-future all 0.16.0-1 [334 kB] Get:244 http://ftpmaster.internal/ubuntu focal/main amd64 python3-futurist all 1.9.0-2 [24.3 kB] Get:245 http://ftpmaster.internal/ubuntu focal/main amd64 python3-httplib2 all 0.11.3-2build1 [27.8 kB] Get:246 http://ftpmaster.internal/ubuntu focal/main amd64 python3-ply all 3.11-3build1 [46.4 kB] Get:247 http://ftpmaster.internal/ubuntu focal/main amd64 python3-jsonpath-rw all 1.4.0-4 [15.1 kB] Get:248 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-wsgi-intercept all 1.8.0-0ubuntu2 [19.2 kB] Get:249 http://ftpmaster.internal/ubuntu focal/main amd64 python3-jsonpath-rw-ext all 1.2.2-2 [12.3 kB] Get:250 http://ftpmaster.internal/ubuntu focal/main amd64 python3-more-itertools all 4.2.0-1build1 [39.4 kB] Get:251 http://ftpmaster.internal/ubuntu focal/main amd64 python3-zipp all 0.6.0-1 [5260 B] Get:252 http://ftpmaster.internal/ubuntu focal/main amd64 python3-importlib-metadata all 0.23-2ubuntu1 [9492 B] Get:253 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-pluggy all 0.13.0-2 [18.4 kB] Get:254 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-py all 1.8.0-1 [65.3 kB] Get:255 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-pytest all 4.6.6-1ubuntu4 [177 kB] Get:256 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-gabbi all 1.44.0-0ubuntu3 [39.8 kB] Get:257 http://ftpmaster.internal/ubuntu focal/main amd64 python3-pep8 all 1.7.1-8 [31.7 kB] Get:258 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-hacking all 1.1.0-4 [20.8 kB] Get:259 http://ftpmaster.internal/ubuntu focal/main amd64 python3-imagesize all 1.2.0-1 [5808 B] Get:260 http://ftpmaster.internal/ubuntu focal/main amd64 python3-jinja2 all 2.10-2ubuntu2 [95.5 kB] Get:261 http://ftpmaster.internal/ubuntu focal/main amd64 python3-jmespath all 0.9.4-2 [21.3 kB] Get:262 http://ftpmaster.internal/ubuntu focal/main amd64 python3-json-pointer all 1.10-2 [7892 B] Get:263 http://ftpmaster.internal/ubuntu focal/main amd64 python3-jsonpatch all 1.23-3 [12.0 kB] Get:264 http://ftpmaster.internal/ubuntu focal/main amd64 python3-jwt all 1.7.1-1 [17.4 kB] Get:265 http://ftpmaster.internal/ubuntu focal/main amd64 python3-secretstorage all 2.3.1-2build1 [12.2 kB] Get:266 http://ftpmaster.internal/ubuntu focal/main amd64 python3-keyring all 18.0.1-1build1 [28.4 kB] Get:267 http://ftpmaster.internal/ubuntu focal/main amd64 python3-iso8601 all 0.1.11-2 [10.2 kB] Get:268 http://ftpmaster.internal/ubuntu focal/main amd64 python3-lxml amd64 4.4.1-1build1 [2296 kB] Get:269 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oauthlib all 2.1.0-1 [70.7 kB] Get:270 http://ftpmaster.internal/ubuntu focal/main amd64 python3-os-service-types all 1.7.0-0ubuntu1 [13.1 kB] Get:271 http://ftpmaster.internal/ubuntu focal/main amd64 python3-requests all 2.21.0-1 [46.8 kB] Get:272 http://ftpmaster.internal/ubuntu focal/main amd64 python3-keystoneauth1 all 3.18.0-0ubuntu1 [156 kB] Get:273 http://ftpmaster.internal/ubuntu focal/main amd64 python3-netaddr all 0.7.19-1 [213 kB] Get:274 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.i18n all 3.25.0-0ubuntu1 [22.4 kB] Get:275 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.context all 1:2.23.0-0ubuntu1 [12.8 kB] Get:276 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.utils all 3.41.1-0ubuntu2 [59.2 kB] Get:277 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.serialization all 2.29.2-0ubuntu2 [16.5 kB] Get:278 http://ftpmaster.internal/ubuntu focal/main amd64 python3-pyinotify all 0.9.6-1.2build1 [24.8 kB] Get:279 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.log all 3.45.0-0ubuntu3 [43.5 kB] Get:280 http://ftpmaster.internal/ubuntu focal/main amd64 python3-rfc3986 all 1.3.2-0ubuntu2 [21.9 kB] Get:281 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.config all 1:6.12.0-0ubuntu2 [87.4 kB] Get:282 http://ftpmaster.internal/ubuntu focal/main amd64 python3-keystoneclient all 1:3.22.0-0ubuntu1 [178 kB] Get:283 http://ftpmaster.internal/ubuntu focal/main amd64 python3-memcache all 1.59-3build1 [17.7 kB] Get:284 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.cache all 1.38.0-0ubuntu2 [32.5 kB] Get:285 http://ftpmaster.internal/ubuntu focal/main amd64 python3-pycadf all 2.10.0-2 [17.3 kB] Get:286 http://ftpmaster.internal/ubuntu focal/main amd64 python3-webob all 1:1.8.5-1build1 [84.4 kB] Get:287 http://ftpmaster.internal/ubuntu focal/main amd64 python3-keystonemiddleware all 7.0.1-0ubuntu1 [66.8 kB] Get:288 http://ftpmaster.internal/ubuntu focal/main amd64 python3-vine all 1.3.0+dfsg-1 [17.2 kB] Get:289 http://ftpmaster.internal/ubuntu focal/main amd64 python3-amqp all 2.5.2-0ubuntu1 [40.9 kB] Get:290 http://ftpmaster.internal/ubuntu focal/main amd64 python3-kombu all 4.2.1-4 [127 kB] Get:291 http://ftpmaster.internal/ubuntu focal/main amd64 python3-logutils all 0.3.3-7 [17.3 kB] Get:292 http://ftpmaster.internal/ubuntu focal/main amd64 python3-sqlparse all 0.2.4-1build1 [28.1 kB] Get:293 http://ftpmaster.internal/ubuntu focal/main amd64 python3-tempita all 0.5.2-5 [14.9 kB] Get:294 http://ftpmaster.internal/ubuntu focal/main amd64 python3-migrate all 0.12.0-3 [69.5 kB] Get:295 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-mox3 all 0.28.0-2 [32.7 kB] Get:296 http://ftpmaster.internal/ubuntu focal/main amd64 python3-sortedcontainers all 2.1.0-1build1 [27.3 kB] Get:297 http://ftpmaster.internal/ubuntu focal/main amd64 python3-openvswitch all 2.12.1~git20191107.7accd1302-0ubuntu1 [84.7 kB] Get:298 http://ftpmaster.internal/ubuntu focal/main amd64 python3-repoze.lru all 0.7-1build1 [11.8 kB] Get:299 http://ftpmaster.internal/ubuntu focal/main amd64 python3-routes all 2.4.1-1 [28.4 kB] Get:300 http://ftpmaster.internal/ubuntu focal/main amd64 python3-tinyrpc all 0.6-3 [17.6 kB] Get:301 http://ftpmaster.internal/ubuntu focal/main amd64 python3-os-ken all 0.4.1-0ubuntu1 [771 kB] Get:302 http://ftpmaster.internal/ubuntu focal/main amd64 python3-os-traits all 2.1.0-0ubuntu1 [14.1 kB] Get:303 http://ftpmaster.internal/ubuntu focal/main amd64 python3-posix-ipc amd64 0.9.8-3build3 [18.0 kB] Get:304 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.concurrency all 3.30.0-0ubuntu1 [28.7 kB] Get:305 http://ftpmaster.internal/ubuntu focal/main amd64 python3-testresources all 2.0.0-2build1 [26.4 kB] Get:306 http://ftpmaster.internal/ubuntu focal/main amd64 python3-testscenarios all 0.5.0-3build1 [13.7 kB] Get:307 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.db all 5.0.2-3ubuntu1 [112 kB] Get:308 http://ftpmaster.internal/ubuntu focal/main amd64 python3-statsd all 3.3.0-2build1 [11.9 kB] Get:309 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.middleware all 3.38.1-0ubuntu2 [31.1 kB] Get:310 http://ftpmaster.internal/ubuntu focal/main amd64 python3-paste all 3.2.3+dfsg1-1 [456 kB] Get:311 http://ftpmaster.internal/ubuntu focal/main amd64 python3-pastedeploy all 2.0.1-1build1 [13.7 kB] Get:312 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.service all 1.40.2-0ubuntu2 [48.2 kB] Get:313 http://ftpmaster.internal/ubuntu focal/main amd64 python3-tenacity all 6.0.0-0ubuntu2 [14.7 kB] Get:314 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.messaging all 9.7.1-0ubuntu3 [144 kB] Get:315 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.policy all 2.4.0-0ubuntu1 [48.7 kB] Get:316 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.versionedobjects all 1.36.1-0ubuntu2 [56.9 kB] Get:317 http://ftpmaster.internal/ubuntu focal/main amd64 python3-osprofiler all 2.8.2-0ubuntu2 [47.9 kB] Get:318 http://ftpmaster.internal/ubuntu focal/main amd64 python3-simplegeneric all 0.8.1-2build1 [11.3 kB] Get:319 http://ftpmaster.internal/ubuntu focal/main amd64 python3-singledispatch all 3.4.0.3-2build1 [7128 B] Get:320 http://ftpmaster.internal/ubuntu focal/main amd64 python3-waitress all 1.4.1-1 [80.6 kB] Get:321 http://ftpmaster.internal/ubuntu focal/main amd64 python3-webtest all 2.0.32-1ubuntu1 [28.3 kB] Get:322 http://ftpmaster.internal/ubuntu focal/main amd64 python3-pecan all 1.3.3-0ubuntu2 [86.0 kB] Get:323 http://ftpmaster.internal/ubuntu focal/main amd64 python3-setproctitle amd64 1.1.10-1build5 [16.2 kB] Get:324 http://ftpmaster.internal/ubuntu focal/main amd64 python3-neutron-lib all 1.30.0-0ubuntu1 [186 kB] Get:325 http://ftpmaster.internal/ubuntu focal/main amd64 python3-voluptuous all 0.11.1-1build1 [31.6 kB] Get:326 http://ftpmaster.internal/ubuntu focal/main amd64 python3-subunit all 1.3.0-6build1 [62.0 kB] Get:327 http://ftpmaster.internal/ubuntu focal/universe amd64 subunit all 1.3.0-6build1 [9296 B] Get:328 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-stestr all 2.4.0-2 [51.9 kB] Get:329 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-os-testr all 1.0.0-5ubuntu3 [25.4 kB] Get:330 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-mock all 3.0.5-1 [25.6 kB] Get:331 http://ftpmaster.internal/ubuntu focal/main amd64 python3-munch all 2.3.2-2 [7984 B] Get:332 http://ftpmaster.internal/ubuntu focal/main amd64 python3-requestsexceptions all 1.4.0-3 [4232 B] Get:333 http://ftpmaster.internal/ubuntu focal/main amd64 python3-openstacksdk all 0.38.0-0ubuntu1 [512 kB] Get:334 http://ftpmaster.internal/ubuntu focal/main amd64 python3-os-client-config all 1.31.2-0ubuntu2 [18.9 kB] Get:335 http://ftpmaster.internal/ubuntu focal/main amd64 python3-testrepository all 0.0.20-5 [58.0 kB] Get:336 http://ftpmaster.internal/ubuntu focal/universe amd64 testrepository all 0.0.20-5 [12.2 kB] Get:337 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-oslotest all 1:3.8.1-0ubuntu1 [18.4 kB] Get:338 http://ftpmaster.internal/ubuntu focal/main amd64 python3-bcrypt amd64 3.1.7-2 [30.4 kB] Get:339 http://ftpmaster.internal/ubuntu focal/main amd64 python3-paramiko all 2.6.0-1 [122 kB] Get:340 http://ftpmaster.internal/ubuntu focal/main amd64 python3-swiftclient all 1:3.8.1-0ubuntu1 [65.9 kB] Get:341 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-tempest all 1:22.0.0-0ubuntu1 [546 kB] Get:342 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-neutron-tempest-plugin all 0.2.0-1 [86.9 kB] Get:343 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-openstackdocstheme all 1.31.1-0ubuntu2 [845 kB] Get:344 http://ftpmaster.internal/ubuntu focal/main amd64 python3-psutil amd64 5.5.1-1ubuntu1 [144 kB] Get:345 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.reports all 1.30.0-0ubuntu1 [25.8 kB] Get:346 http://ftpmaster.internal/ubuntu focal/main amd64 python3-oslo.upgradecheck all 0.3.2-0ubuntu1 [7416 B] Get:347 http://ftpmaster.internal/ubuntu focal/main amd64 python3-pygments all 2.3.1+dfsg-1ubuntu2 [579 kB] Get:348 http://ftpmaster.internal/ubuntu focal/main amd64 python3-pymongo amd64 3.7.1-1.1build1 [138 kB] Get:349 http://ftpmaster.internal/ubuntu focal/main amd64 python3-pymysql all 0.9.3-1 [38.8 kB] Get:350 http://ftpmaster.internal/ubuntu focal/main amd64 python3-redis all 3.3.11-1ubuntu1 [56.3 kB] Get:351 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-reno all 2.11.2-2 [40.2 kB] Get:352 http://ftpmaster.internal/ubuntu focal/main amd64 sphinx-common all 1.8.5-4 [492 kB] Get:353 http://ftpmaster.internal/ubuntu focal/main amd64 python3-alabaster all 0.7.8-1build1 [18.7 kB] Get:354 http://ftpmaster.internal/ubuntu focal/main amd64 python3-sphinx all 1.8.5-4 [482 kB] Get:355 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-sphinxcontrib.apidoc all 0.3.0-2ubuntu1 [8032 B] Get:356 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-websocket all 0.53.0-1 [32.2 kB] Get:357 http://ftpmaster.internal/ubuntu focal/universe amd64 openstack-pkg-tools all 99ubuntu1 [89.9 kB] Get:358 http://ftpmaster.internal/ubuntu focal/universe amd64 python-os-api-ref-common all 1.6.2+dfsg1-0ubuntu1 [10.1 kB] Get:359 http://ftpmaster.internal/ubuntu focal/universe amd64 python-pbr all 5.4.4-0ubuntu1 [63.9 kB] Get:360 http://ftpmaster.internal/ubuntu focal/universe amd64 python3-os-api-ref all 1.6.2+dfsg1-0ubuntu1 [16.3 kB] Get:361 http://ftpmaster.internal/ubuntu focal/universe amd64 tempest all 1:22.0.0-0ubuntu1 [1059 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 115 MB in 3s (42.6 MB/s) Selecting previously unselected package libpython3.7-minimal:amd64. (Reading database ... 14652 files and directories currently installed.) Preparing to unpack .../libpython3.7-minimal_3.7.5-2_amd64.deb ... Unpacking libpython3.7-minimal:amd64 (3.7.5-2) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../libexpat1_2.2.9-1_amd64.deb ... Unpacking libexpat1:amd64 (2.2.9-1) ... Selecting previously unselected package python3.7-minimal. Preparing to unpack .../python3.7-minimal_3.7.5-2_amd64.deb ... Unpacking python3.7-minimal (3.7.5-2) ... Setting up libpython3.7-minimal:amd64 (3.7.5-2) ... Setting up libexpat1:amd64 (2.2.9-1) ... Setting up python3.7-minimal (3.7.5-2) ... Selecting previously unselected package python3-minimal. (Reading database ... 14901 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.7.5-1ubuntu1_amd64.deb ... Unpacking python3-minimal (3.7.5-1ubuntu1) ... Selecting previously unselected package mime-support. Preparing to unpack .../1-mime-support_3.64ubuntu1_all.deb ... Unpacking mime-support (3.64ubuntu1) ... Selecting previously unselected package libmpdec2:amd64. Preparing to unpack .../2-libmpdec2_2.4.2-2_amd64.deb ... Unpacking libmpdec2:amd64 (2.4.2-2) ... Selecting previously unselected package libpython3.7-stdlib:amd64. Preparing to unpack .../3-libpython3.7-stdlib_3.7.5-2_amd64.deb ... Unpacking libpython3.7-stdlib:amd64 (3.7.5-2) ... Selecting previously unselected package python3.7. Preparing to unpack .../4-python3.7_3.7.5-2_amd64.deb ... Unpacking python3.7 (3.7.5-2) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../5-libpython3-stdlib_3.7.5-1ubuntu1_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.7.5-1ubuntu1) ... Setting up python3-minimal (3.7.5-1ubuntu1) ... Selecting previously unselected package python3. (Reading database ... 15339 files and directories currently installed.) Preparing to unpack .../00-python3_3.7.5-1ubuntu1_amd64.deb ... Unpacking python3 (3.7.5-1ubuntu1) ... Selecting previously unselected package libbsd0:amd64. Preparing to unpack .../01-libbsd0_0.10.0-1_amd64.deb ... Unpacking libbsd0:amd64 (0.10.0-1) ... Selecting previously unselected package bsdmainutils. Preparing to unpack .../02-bsdmainutils_11.1.2ubuntu2_amd64.deb ... Unpacking bsdmainutils (11.1.2ubuntu2) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../03-libuchardet0_0.0.6-3_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.6-3) ... Selecting previously unselected package groff-base. Preparing to unpack .../04-groff-base_1.22.4-4_amd64.deb ... Unpacking groff-base (1.22.4-4) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../05-libpipeline1_1.5.1-3_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.1-3) ... Selecting previously unselected package man-db. Preparing to unpack .../06-man-db_2.9.0-2_amd64.deb ... Unpacking man-db (2.9.0-2) ... Selecting previously unselected package libpython2.7-minimal:amd64. Preparing to unpack .../07-libpython2.7-minimal_2.7.17-1_amd64.deb ... Unpacking libpython2.7-minimal:amd64 (2.7.17-1) ... Selecting previously unselected package python2.7-minimal. Preparing to unpack .../08-python2.7-minimal_2.7.17-1_amd64.deb ... Unpacking python2.7-minimal (2.7.17-1) ... Selecting previously unselected package python2-minimal. Preparing to unpack .../09-python2-minimal_2.7.17-1_amd64.deb ... Unpacking python2-minimal (2.7.17-1) ... Selecting previously unselected package python-minimal. Preparing to unpack .../10-python-minimal_2.7.17-1_amd64.deb ... Unpacking python-minimal (2.7.17-1) ... Selecting previously unselected package libpython2.7-stdlib:amd64. Preparing to unpack .../11-libpython2.7-stdlib_2.7.17-1_amd64.deb ... Unpacking libpython2.7-stdlib:amd64 (2.7.17-1) ... Selecting previously unselected package python2.7. Preparing to unpack .../12-python2.7_2.7.17-1_amd64.deb ... Unpacking python2.7 (2.7.17-1) ... Selecting previously unselected package libpython2-stdlib:amd64. Preparing to unpack .../13-libpython2-stdlib_2.7.17-1_amd64.deb ... Unpacking libpython2-stdlib:amd64 (2.7.17-1) ... Selecting previously unselected package libpython-stdlib:amd64. Preparing to unpack .../14-libpython-stdlib_2.7.17-1_amd64.deb ... Unpacking libpython-stdlib:amd64 (2.7.17-1) ... Setting up libpython2.7-minimal:amd64 (2.7.17-1) ... Setting up python2.7-minimal (2.7.17-1) ... Setting up python2-minimal (2.7.17-1) ... Selecting previously unselected package python2. (Reading database ... 16717 files and directories currently installed.) Preparing to unpack .../python2_2.7.17-1_amd64.deb ... Unpacking python2 (2.7.17-1) ... Setting up python-minimal (2.7.17-1) ... Selecting previously unselected package python. (Reading database ... 16749 files and directories currently installed.) Preparing to unpack .../000-python_2.7.17-1_amd64.deb ... Unpacking python (2.7.17-1) ... Selecting previously unselected package python3-pyparsing. Preparing to unpack .../001-python3-pyparsing_2.4.2-1_all.deb ... Unpacking python3-pyparsing (2.4.2-1) ... Selecting previously unselected package libxau6:amd64. Preparing to unpack .../002-libxau6_1%3a1.0.9-0ubuntu1_amd64.deb ... Unpacking libxau6:amd64 (1:1.0.9-0ubuntu1) ... Selecting previously unselected package libxdmcp6:amd64. Preparing to unpack .../003-libxdmcp6_1%3a1.1.3-0ubuntu1_amd64.deb ... Unpacking libxdmcp6:amd64 (1:1.1.3-0ubuntu1) ... Selecting previously unselected package libxcb1:amd64. Preparing to unpack .../004-libxcb1_1.13.1-2_amd64.deb ... Unpacking libxcb1:amd64 (1.13.1-2) ... Selecting previously unselected package libx11-data. Preparing to unpack .../005-libx11-data_2%3a1.6.8-1_all.deb ... Unpacking libx11-data (2:1.6.8-1) ... Selecting previously unselected package libx11-6:amd64. Preparing to unpack .../006-libx11-6_2%3a1.6.8-1_amd64.deb ... Unpacking libx11-6:amd64 (2:1.6.8-1) ... Selecting previously unselected package libxext6:amd64. Preparing to unpack .../007-libxext6_2%3a1.3.4-0ubuntu1_amd64.deb ... Unpacking libxext6:amd64 (2:1.3.4-0ubuntu1) ... Selecting previously unselected package x11-common. Preparing to unpack .../008-x11-common_1%3a7.7+19ubuntu12_all.deb ... dpkg-query: no packages found matching nux-tools Unpacking x11-common (1:7.7+19ubuntu12) ... Selecting previously unselected package libice6:amd64. Preparing to unpack .../009-libice6_2%3a1.0.10-0ubuntu1_amd64.deb ... Unpacking libice6:amd64 (2:1.0.10-0ubuntu1) ... Selecting previously unselected package libsm6:amd64. Preparing to unpack .../010-libsm6_2%3a1.2.3-1_amd64.deb ... Unpacking libsm6:amd64 (2:1.2.3-1) ... Selecting previously unselected package libxt6:amd64. Preparing to unpack .../011-libxt6_1%3a1.1.5-1_amd64.deb ... Unpacking libxt6:amd64 (1:1.1.5-1) ... Selecting previously unselected package libxmu6:amd64. Preparing to unpack .../012-libxmu6_2%3a1.1.3-0ubuntu1_amd64.deb ... Unpacking libxmu6:amd64 (2:1.1.3-0ubuntu1) ... Selecting previously unselected package xclip. Preparing to unpack .../013-xclip_0.13-1_amd64.deb ... Unpacking xclip (0.13-1) ... Selecting previously unselected package python3-pyperclip. Preparing to unpack .../014-python3-pyperclip_1.7.0-1_all.deb ... Unpacking python3-pyperclip (1.7.0-1) ... Selecting previously unselected package python3-six. Preparing to unpack .../015-python3-six_1.12.0-2build1_all.deb ... Unpacking python3-six (1.12.0-2build1) ... Selecting previously unselected package python3-wcwidth. Preparing to unpack .../016-python3-wcwidth_0.1.7+dfsg1-6build1_all.deb ... Unpacking python3-wcwidth (0.1.7+dfsg1-6build1) ... Selecting previously unselected package python3-cmd2. Preparing to unpack .../017-python3-cmd2_0.8.5-2.1_all.deb ... Unpacking python3-cmd2 (0.8.5-2.1) ... Selecting previously unselected package libpython3.8-minimal:amd64. Preparing to unpack .../018-libpython3.8-minimal_3.8.0-5_amd64.deb ... Unpacking libpython3.8-minimal:amd64 (3.8.0-5) ... Selecting previously unselected package python3.8-minimal. Preparing to unpack .../019-python3.8-minimal_3.8.0-5_amd64.deb ... Unpacking python3.8-minimal (3.8.0-5) ... Selecting previously unselected package sgml-base. Preparing to unpack .../020-sgml-base_1.29.1_all.deb ... Unpacking sgml-base (1.29.1) ... Selecting previously unselected package libdbus-1-3:amd64. Preparing to unpack .../021-libdbus-1-3_1.12.16-2ubuntu2_amd64.deb ... Unpacking libdbus-1-3:amd64 (1.12.16-2ubuntu2) ... Selecting previously unselected package dbus. Preparing to unpack .../022-dbus_1.12.16-2ubuntu2_amd64.deb ... Unpacking dbus (1.12.16-2ubuntu2) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../023-libmagic-mgc_1%3a5.37-6_amd64.deb ... Unpacking libmagic-mgc (1:5.37-6) ... Selecting previously unselected package libmagic1:amd64. Preparing to unpack .../024-libmagic1_1%3a5.37-6_amd64.deb ... Unpacking libmagic1:amd64 (1:5.37-6) ... Selecting previously unselected package file. Preparing to unpack .../025-file_1%3a5.37-6_amd64.deb ... Unpacking file (1:5.37-6) ... Selecting previously unselected package libelf1:amd64. Preparing to unpack .../026-libelf1_0.176-1.1_amd64.deb ... Unpacking libelf1:amd64 (0.176-1.1) ... Selecting previously unselected package libglib2.0-0:amd64. Preparing to unpack .../027-libglib2.0-0_2.63.3-1_amd64.deb ... Unpacking libglib2.0-0:amd64 (2.63.3-1) ... Selecting previously unselected package libicu63:amd64. Preparing to unpack .../028-libicu63_63.2-2_amd64.deb ... Unpacking libicu63:amd64 (63.2-2) ... Selecting previously unselected package libsodium23:amd64. Preparing to unpack .../029-libsodium23_1.0.18-1_amd64.deb ... Unpacking libsodium23:amd64 (1.0.18-1) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../030-libxml2_2.9.4+dfsg1-8ubuntu1_amd64.deb ... Unpacking libxml2:amd64 (2.9.4+dfsg1-8ubuntu1) ... Selecting previously unselected package libyaml-0-2:amd64. Preparing to unpack .../031-libyaml-0-2_0.2.2-1_amd64.deb ... Unpacking libyaml-0-2:amd64 (0.2.2-1) ... Selecting previously unselected package netbase. Preparing to unpack .../032-netbase_5.6_all.deb ... Unpacking netbase (5.6) ... Selecting previously unselected package python3-cffi-backend. Preparing to unpack .../033-python3-cffi-backend_1.13.2-1_amd64.deb ... Unpacking python3-cffi-backend (1.13.2-1) ... Selecting previously unselected package python3-dbus. Preparing to unpack .../034-python3-dbus_1.2.14-1_amd64.deb ... Unpacking python3-dbus (1.2.14-1) ... Selecting previously unselected package python3-nacl. Preparing to unpack .../035-python3-nacl_1.3.0-3_amd64.deb ... Unpacking python3-nacl (1.3.0-3) ... Selecting previously unselected package python3-netifaces. Preparing to unpack .../036-python3-netifaces_0.10.4-1ubuntu1_amd64.deb ... Unpacking python3-netifaces (0.10.4-1ubuntu1) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../037-python3-pkg-resources_41.4.0-1_all.deb ... Unpacking python3-pkg-resources (41.4.0-1) ... Selecting previously unselected package python3-yaml. Preparing to unpack .../038-python3-yaml_5.1.2-1build1_amd64.deb ... Unpacking python3-yaml (5.1.2-1build1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../039-gettext-base_0.19.8.1-10_amd64.deb ... Unpacking gettext-base (0.19.8.1-10) ... Selecting previously unselected package libkrb5support0:amd64. Preparing to unpack .../040-libkrb5support0_1.17-6_amd64.deb ... Unpacking libkrb5support0:amd64 (1.17-6) ... Selecting previously unselected package libk5crypto3:amd64. Preparing to unpack .../041-libk5crypto3_1.17-6_amd64.deb ... Unpacking libk5crypto3:amd64 (1.17-6) ... Selecting previously unselected package libkeyutils1:amd64. Preparing to unpack .../042-libkeyutils1_1.6-6ubuntu1_amd64.deb ... Unpacking libkeyutils1:amd64 (1.6-6ubuntu1) ... Selecting previously unselected package libkrb5-3:amd64. Preparing to unpack .../043-libkrb5-3_1.17-6_amd64.deb ... Unpacking libkrb5-3:amd64 (1.17-6) ... Selecting previously unselected package libgssapi-krb5-2:amd64. Preparing to unpack .../044-libgssapi-krb5-2_1.17-6_amd64.deb ... Unpacking libgssapi-krb5-2:amd64 (1.17-6) ... Selecting previously unselected package libpsl5:amd64. Preparing to unpack .../045-libpsl5_0.20.2-2_amd64.deb ... Unpacking libpsl5:amd64 (0.20.2-2) ... Selecting previously unselected package wget. Preparing to unpack .../046-wget_1.20.3-1ubuntu1_amd64.deb ... Unpacking wget (1.20.3-1ubuntu1) ... Selecting previously unselected package python3-dateutil. Preparing to unpack .../047-python3-dateutil_2.7.3-3_all.deb ... Unpacking python3-dateutil (2.7.3-3) ... Selecting previously unselected package python3-markupsafe. Preparing to unpack .../048-python3-markupsafe_1.1.0-1build1_amd64.deb ... Unpacking python3-markupsafe (1.1.0-1build1) ... Selecting previously unselected package python3-mako. Preparing to unpack .../049-python3-mako_1.1.0+ds1-1_all.deb ... Unpacking python3-mako (1.1.0+ds1-1) ... Selecting previously unselected package python3-sqlalchemy. Preparing to unpack .../050-python3-sqlalchemy_1.2.18+ds1-2ubuntu3_all.deb ... Unpacking python3-sqlalchemy (1.2.18+ds1-2ubuntu3) ... Selecting previously unselected package python3-alembic. Preparing to unpack .../051-python3-alembic_1.1.0-1ubuntu1_all.deb ... Unpacking python3-alembic (1.1.0-1ubuntu1) ... Selecting previously unselected package libjs-jquery. Preparing to unpack .../052-libjs-jquery_3.3.1~dfsg-3_all.deb ... Unpacking libjs-jquery (3.3.1~dfsg-3) ... Selecting previously unselected package libjs-underscore. Preparing to unpack .../053-libjs-underscore_1.9.1~dfsg-1_all.deb ... Unpacking libjs-underscore (1.9.1~dfsg-1) ... Selecting previously unselected package libjs-sphinxdoc. Preparing to unpack .../054-libjs-sphinxdoc_1.8.5-4_all.deb ... Unpacking libjs-sphinxdoc (1.8.5-4) ... Selecting previously unselected package alembic. Preparing to unpack .../055-alembic_1.1.0-1ubuntu1_all.deb ... Unpacking alembic (1.1.0-1ubuntu1) ... Selecting previously unselected package libsigsegv2:amd64. Preparing to unpack .../056-libsigsegv2_2.12-2_amd64.deb ... Unpacking libsigsegv2:amd64 (2.12-2) ... Selecting previously unselected package m4. Preparing to unpack .../057-m4_1.4.18-4_amd64.deb ... Unpacking m4 (1.4.18-4) ... Selecting previously unselected package autoconf. Preparing to unpack .../058-autoconf_2.69-11ubuntu1_all.deb ... Unpacking autoconf (2.69-11ubuntu1) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../059-autotools-dev_20180224.1_all.deb ... Unpacking autotools-dev (20180224.1) ... Selecting previously unselected package automake. Preparing to unpack .../060-automake_1%3a1.16.1-4ubuntu3_all.deb ... Unpacking automake (1:1.16.1-4ubuntu3) ... Selecting previously unselected package autopoint. Preparing to unpack .../061-autopoint_0.19.8.1-10_all.deb ... Unpacking autopoint (0.19.8.1-10) ... Selecting previously unselected package cython3. Preparing to unpack .../062-cython3_0.29.14-0.1_amd64.deb ... Unpacking cython3 (0.29.14-0.1) ... Selecting previously unselected package libtool. Preparing to unpack .../063-libtool_2.4.6-11_all.deb ... Unpacking libtool (2.4.6-11) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../064-dh-autoreconf_19_all.deb ... Unpacking dh-autoreconf (19) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../065-libdebhelper-perl_12.7.1ubuntu1_all.deb ... Unpacking libdebhelper-perl (12.7.1ubuntu1) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../066-libarchive-zip-perl_1.67-1_all.deb ... Unpacking libarchive-zip-perl (1.67-1) ... Selecting previously unselected package libsub-override-perl. Preparing to unpack .../067-libsub-override-perl_0.09-2_all.deb ... Unpacking libsub-override-perl (0.09-2) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../068-libfile-stripnondeterminism-perl_1.6.3-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.6.3-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../069-dh-strip-nondeterminism_1.6.3-1_all.deb ... Unpacking dh-strip-nondeterminism (1.6.3-1) ... Selecting previously unselected package dwz. Preparing to unpack .../070-dwz_0.13-5_amd64.deb ... Unpacking dwz (0.13-5) ... Selecting previously unselected package libcroco3:amd64. Preparing to unpack .../071-libcroco3_0.6.13-1_amd64.deb ... Unpacking libcroco3:amd64 (0.6.13-1) ... Selecting previously unselected package gettext. Preparing to unpack .../072-gettext_0.19.8.1-10_amd64.deb ... Unpacking gettext (0.19.8.1-10) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../073-intltool-debian_0.35.0+20060710.5_all.deb ... Unpacking intltool-debian (0.35.0+20060710.5) ... Selecting previously unselected package po-debconf. Preparing to unpack .../074-po-debconf_1.0.21_all.deb ... Unpacking po-debconf (1.0.21) ... Selecting previously unselected package debhelper. Preparing to unpack .../075-debhelper_12.7.1ubuntu1_all.deb ... Unpacking debhelper (12.7.1ubuntu1) ... Selecting previously unselected package python3-lib2to3. Preparing to unpack .../076-python3-lib2to3_3.8.0-1_all.deb ... Unpacking python3-lib2to3 (3.8.0-1) ... Selecting previously unselected package python3-distutils. Preparing to unpack .../077-python3-distutils_3.8.0-1_all.deb ... Unpacking python3-distutils (3.8.0-1) ... Selecting previously unselected package dh-python. Preparing to unpack .../078-dh-python_4.20191017ubuntu1_all.deb ... Unpacking dh-python (4.20191017ubuntu1) ... Selecting previously unselected package xml-core. Preparing to unpack .../079-xml-core_0.18+nmu1_all.deb ... Unpacking xml-core (0.18+nmu1) ... Selecting previously unselected package docutils-common. Preparing to unpack .../080-docutils-common_0.15.2+dfsg-1_all.deb ... Unpacking docutils-common (0.15.2+dfsg-1) ... Selecting previously unselected package python3-mccabe. Preparing to unpack .../081-python3-mccabe_0.6.1-2build1_all.deb ... Unpacking python3-mccabe (0.6.1-2build1) ... Selecting previously unselected package python3-pyflakes. Preparing to unpack .../082-python3-pyflakes_2.1.1-1_all.deb ... Unpacking python3-pyflakes (2.1.1-1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../083-python3-setuptools_41.4.0-1_all.deb ... Unpacking python3-setuptools (41.4.0-1) ... Selecting previously unselected package python3-entrypoints. Preparing to unpack .../084-python3-entrypoints_0.3-1build1_all.deb ... Unpacking python3-entrypoints (0.3-1build1) ... Selecting previously unselected package python3-pycodestyle. Preparing to unpack .../085-python3-pycodestyle_2.5.0-1_all.deb ... Unpacking python3-pycodestyle (2.5.0-1) ... Selecting previously unselected package python3-flake8. Preparing to unpack .../086-python3-flake8_3.7.9-1_all.deb ... Unpacking python3-flake8 (3.7.9-1) ... Selecting previously unselected package flake8. Preparing to unpack .../087-flake8_3.7.9-1_all.deb ... Unpacking flake8 (3.7.9-1) ... Selecting previously unselected package fonts-glyphicons-halflings. Preparing to unpack .../088-fonts-glyphicons-halflings_1.009~3.4.1+dfsg-1_all.deb ... Unpacking fonts-glyphicons-halflings (1.009~3.4.1+dfsg-1) ... Selecting previously unselected package libbrotli1:amd64. Preparing to unpack .../089-libbrotli1_1.0.7-5_amd64.deb ... Unpacking libbrotli1:amd64 (1.0.7-5) ... Selecting previously unselected package libroken18-heimdal:amd64. Preparing to unpack .../090-libroken18-heimdal_7.7.0+dfsg-1_amd64.deb ... Unpacking libroken18-heimdal:amd64 (7.7.0+dfsg-1) ... Selecting previously unselected package libasn1-8-heimdal:amd64. Preparing to unpack .../091-libasn1-8-heimdal_7.7.0+dfsg-1_amd64.deb ... Unpacking libasn1-8-heimdal:amd64 (7.7.0+dfsg-1) ... Selecting previously unselected package libheimbase1-heimdal:amd64. Preparing to unpack .../092-libheimbase1-heimdal_7.7.0+dfsg-1_amd64.deb ... Unpacking libheimbase1-heimdal:amd64 (7.7.0+dfsg-1) ... Selecting previously unselected package libhcrypto4-heimdal:amd64. Preparing to unpack .../093-libhcrypto4-heimdal_7.7.0+dfsg-1_amd64.deb ... Unpacking libhcrypto4-heimdal:amd64 (7.7.0+dfsg-1) ... Selecting previously unselected package libwind0-heimdal:amd64. Preparing to unpack .../094-libwind0-heimdal_7.7.0+dfsg-1_amd64.deb ... Unpacking libwind0-heimdal:amd64 (7.7.0+dfsg-1) ... Selecting previously unselected package libhx509-5-heimdal:amd64. Preparing to unpack .../095-libhx509-5-heimdal_7.7.0+dfsg-1_amd64.deb ... Unpacking libhx509-5-heimdal:amd64 (7.7.0+dfsg-1) ... Selecting previously unselected package libkrb5-26-heimdal:amd64. Preparing to unpack .../096-libkrb5-26-heimdal_7.7.0+dfsg-1_amd64.deb ... Unpacking libkrb5-26-heimdal:amd64 (7.7.0+dfsg-1) ... Selecting previously unselected package libheimntlm0-heimdal:amd64. Preparing to unpack .../097-libheimntlm0-heimdal_7.7.0+dfsg-1_amd64.deb ... Unpacking libheimntlm0-heimdal:amd64 (7.7.0+dfsg-1) ... Selecting previously unselected package libgssapi3-heimdal:amd64. Preparing to unpack .../098-libgssapi3-heimdal_7.7.0+dfsg-1_amd64.deb ... Unpacking libgssapi3-heimdal:amd64 (7.7.0+dfsg-1) ... Selecting previously unselected package libsasl2-modules-db:amd64. Preparing to unpack .../099-libsasl2-modules-db_2.1.27+dfsg-2_amd64.deb ... Unpacking libsasl2-modules-db:amd64 (2.1.27+dfsg-2) ... Selecting previously unselected package libsasl2-2:amd64. Preparing to unpack .../100-libsasl2-2_2.1.27+dfsg-2_amd64.deb ... Unpacking libsasl2-2:amd64 (2.1.27+dfsg-2) ... Selecting previously unselected package libldap-common. Preparing to unpack .../101-libldap-common_2.4.48+dfsg-1ubuntu3_all.deb ... Unpacking libldap-common (2.4.48+dfsg-1ubuntu3) ... Selecting previously unselected package libldap-2.4-2:amd64. Preparing to unpack .../102-libldap-2.4-2_2.4.48+dfsg-1ubuntu3_amd64.deb ... Unpacking libldap-2.4-2:amd64 (2.4.48+dfsg-1ubuntu3) ... Selecting previously unselected package libnghttp2-14:amd64. Preparing to unpack .../103-libnghttp2-14_1.40.0-1_amd64.deb ... Unpacking libnghttp2-14:amd64 (1.40.0-1) ... Selecting previously unselected package librtmp1:amd64. Preparing to unpack .../104-librtmp1_2.4+20151223.gitfa8646d.1-2build1_amd64.deb ... Unpacking librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2build1) ... Selecting previously unselected package libssh-4:amd64. Preparing to unpack .../105-libssh-4_0.9.0-1ubuntu5_amd64.deb ... Unpacking libssh-4:amd64 (0.9.0-1ubuntu5) ... Selecting previously unselected package libcurl3-gnutls:amd64. Preparing to unpack .../106-libcurl3-gnutls_7.66.0-1ubuntu1_amd64.deb ... Unpacking libcurl3-gnutls:amd64 (7.66.0-1ubuntu1) ... Selecting previously unselected package liberror-perl. Preparing to unpack .../107-liberror-perl_0.17028-1_all.deb ... Unpacking liberror-perl (0.17028-1) ... Selecting previously unselected package git-man. Preparing to unpack .../108-git-man_1%3a2.24.0-1ubuntu1_all.deb ... Unpacking git-man (1:2.24.0-1ubuntu1) ... Selecting previously unselected package git. Preparing to unpack .../109-git_1%3a2.24.0-1ubuntu1_amd64.deb ... Unpacking git (1:2.24.0-1ubuntu1) ... Selecting previously unselected package ieee-data. Preparing to unpack .../110-ieee-data_20180805.1_all.deb ... Unpacking ieee-data (20180805.1) ... Selecting previously unselected package libonig5:amd64. Preparing to unpack .../111-libonig5_6.9.4-1_amd64.deb ... Unpacking libonig5:amd64 (6.9.4-1) ... Selecting previously unselected package libjq1:amd64. Preparing to unpack .../112-libjq1_1.6-1_amd64.deb ... Unpacking libjq1:amd64 (1.6-1) ... Selecting previously unselected package jq. Preparing to unpack .../113-jq_1.6-1_amd64.deb ... Unpacking jq (1.6-1) ... Selecting previously unselected package libboost-system1.67.0:amd64. Preparing to unpack .../114-libboost-system1.67.0_1.67.0-13ubuntu2_amd64.deb ... Unpacking libboost-system1.67.0:amd64 (1.67.0-13ubuntu2) ... Selecting previously unselected package libboost-filesystem1.67.0:amd64. Preparing to unpack .../115-libboost-filesystem1.67.0_1.67.0-13ubuntu2_amd64.deb ... Unpacking libboost-filesystem1.67.0:amd64 (1.67.0-13ubuntu2) ... Selecting previously unselected package libboost-iostreams1.67.0:amd64. Preparing to unpack .../116-libboost-iostreams1.67.0_1.67.0-13ubuntu2_amd64.deb ... Unpacking libboost-iostreams1.67.0:amd64 (1.67.0-13ubuntu2) ... Selecting previously unselected package libboost-program-options1.67.0:amd64. Preparing to unpack .../117-libboost-program-options1.67.0_1.67.0-13ubuntu2_amd64.deb ... Unpacking libboost-program-options1.67.0:amd64 (1.67.0-13ubuntu2) ... Selecting previously unselected package libtcmalloc-minimal4. Preparing to unpack .../118-libtcmalloc-minimal4_2.5-2.2ubuntu3_amd64.deb ... Unpacking libtcmalloc-minimal4 (2.5-2.2ubuntu3) ... Selecting previously unselected package libunwind8:amd64. Preparing to unpack .../119-libunwind8_1.2.1-9_amd64.deb ... Unpacking libunwind8:amd64 (1.2.1-9) ... Selecting previously unselected package libgoogle-perftools4. Preparing to unpack .../120-libgoogle-perftools4_2.5-2.2ubuntu3_amd64.deb ... Unpacking libgoogle-perftools4 (2.5-2.2ubuntu3) ... Selecting previously unselected package libjs-bootstrap. Preparing to unpack .../121-libjs-bootstrap_3.4.1+dfsg-1_all.deb ... Unpacking libjs-bootstrap (3.4.1+dfsg-1) ... Selecting previously unselected package libpcrecpp0v5:amd64. Preparing to unpack .../122-libpcrecpp0v5_2%3a8.39-12_amd64.deb ... Unpacking libpcrecpp0v5:amd64 (2:8.39-12) ... Selecting previously unselected package libpython3.8-stdlib:amd64. Preparing to unpack .../123-libpython3.8-stdlib_3.8.0-5_amd64.deb ... Unpacking libpython3.8-stdlib:amd64 (3.8.0-5) ... Selecting previously unselected package libstemmer0d:amd64. Preparing to unpack .../124-libstemmer0d_0+svn585-1.1_amd64.deb ... Unpacking libstemmer0d:amd64 (0+svn585-1.1) ... Selecting previously unselected package libsubunit-perl. Preparing to unpack .../125-libsubunit-perl_1.3.0-6build1_all.deb ... Unpacking libsubunit-perl (1.3.0-6build1) ... Selecting previously unselected package libxslt1.1:amd64. Preparing to unpack .../126-libxslt1.1_1.1.33-0ubuntu2_amd64.deb ... Unpacking libxslt1.1:amd64 (1.1.33-0ubuntu2) ... Selecting previously unselected package libyaml-cpp0.6:amd64. Preparing to unpack .../127-libyaml-cpp0.6_0.6.2-4fakesync1_amd64.deb ... Unpacking libyaml-cpp0.6:amd64 (0.6.2-4fakesync1) ... Selecting previously unselected package libsnappy1v5:amd64. Preparing to unpack .../128-libsnappy1v5_1.1.7-2_amd64.deb ... Unpacking libsnappy1v5:amd64 (1.1.7-2) ... Selecting previously unselected package mongodb-clients. Preparing to unpack .../129-mongodb-clients_1%3a3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2_amd64.deb ... Unpacking mongodb-clients (1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2) ... Selecting previously unselected package mongodb-server-core. Preparing to unpack .../130-mongodb-server-core_1%3a3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2_amd64.deb ... Unpacking mongodb-server-core (1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2) ... Selecting previously unselected package mongodb-server. Preparing to unpack .../131-mongodb-server_1%3a3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2_all.deb ... Unpacking mongodb-server (1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2) ... Selecting previously unselected package mongodb. Preparing to unpack .../132-mongodb_1%3a3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2_amd64.deb ... Unpacking mongodb (1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2) ... Selecting previously unselected package pycadf-common. Preparing to unpack .../133-pycadf-common_2.10.0-2_all.deb ... Unpacking pycadf-common (2.10.0-2) ... Selecting previously unselected package pyflakes3. Preparing to unpack .../134-pyflakes3_2.1.1-1_all.deb ... Unpacking pyflakes3 (2.1.1-1) ... Selecting previously unselected package python-all. Preparing to unpack .../135-python-all_2.7.17-1_amd64.deb ... Unpacking python-all (2.7.17-1) ... Selecting previously unselected package python-babel-localedata. Preparing to unpack .../136-python-babel-localedata_2.6.0+dfsg.1-1_all.deb ... Unpacking python-babel-localedata (2.6.0+dfsg.1-1) ... Selecting previously unselected package python-pastedeploy-tpl. Preparing to unpack .../137-python-pastedeploy-tpl_2.0.1-1build1_all.deb ... Unpacking python-pastedeploy-tpl (2.0.1-1build1) ... Selecting previously unselected package python-pkg-resources. Preparing to unpack .../138-python-pkg-resources_41.4.0-1_all.deb ... Unpacking python-pkg-resources (41.4.0-1) ... Selecting previously unselected package python-setuptools. Preparing to unpack .../139-python-setuptools_41.4.0-1_all.deb ... Unpacking python-setuptools (41.4.0-1) ... Selecting previously unselected package python-six. Preparing to unpack .../140-python-six_1.12.0-2build1_all.deb ... Unpacking python-six (1.12.0-2build1) ... Selecting previously unselected package python3.8. Preparing to unpack .../141-python3.8_3.8.0-5_amd64.deb ... Unpacking python3.8 (3.8.0-5) ... Selecting previously unselected package python3-all. Preparing to unpack .../142-python3-all_3.7.5-1ubuntu1_amd64.deb ... Unpacking python3-all (3.7.5-1ubuntu1) ... Selecting previously unselected package python3-anyjson. Preparing to unpack .../143-python3-anyjson_0.3.3-2_all.deb ... Unpacking python3-anyjson (0.3.3-2) ... Selecting previously unselected package python3-appdirs. Preparing to unpack .../144-python3-appdirs_1.4.3-1build1_all.deb ... Unpacking python3-appdirs (1.4.3-1build1) ... Selecting previously unselected package python3-asn1crypto. Preparing to unpack .../145-python3-asn1crypto_0.24.0-1build1_all.deb ... Unpacking python3-asn1crypto (0.24.0-1build1) ... Selecting previously unselected package python3-atomicwrites. Preparing to unpack .../146-python3-atomicwrites_1.1.5-2build1_all.deb ... Unpacking python3-atomicwrites (1.1.5-2build1) ... Selecting previously unselected package python3-attr. Preparing to unpack .../147-python3-attr_18.2.0-1build1_all.deb ... Unpacking python3-attr (18.2.0-1build1) ... Selecting previously unselected package python3-cbor. Preparing to unpack .../148-python3-cbor_1.0.0-1.1_amd64.deb ... Unpacking python3-cbor (1.0.0-1.1) ... Selecting previously unselected package python3-lz4. Preparing to unpack .../149-python3-lz4_3.0.2+dfsg-1_amd64.deb ... Unpacking python3-lz4 (3.0.2+dfsg-1) ... Selecting previously unselected package python3-cryptography. Preparing to unpack .../150-python3-cryptography_2.6.1-4_amd64.deb ... Unpacking python3-cryptography (2.6.1-4) ... Selecting previously unselected package python3-openssl. Preparing to unpack .../151-python3-openssl_19.0.0-1_all.deb ... Unpacking python3-openssl (19.0.0-1) ... Selecting previously unselected package python3-pyqrcode. Preparing to unpack .../152-python3-pyqrcode_1.2.1-4_all.deb ... Unpacking python3-pyqrcode (1.2.1-4) ... Selecting previously unselected package python3-pyasn1. Preparing to unpack .../153-python3-pyasn1_0.4.2-3build1_all.deb ... Unpacking python3-pyasn1 (0.4.2-3build1) ... Selecting previously unselected package python3-pyasn1-modules. Preparing to unpack .../154-python3-pyasn1-modules_0.2.1-0.2build1_all.deb ... Unpacking python3-pyasn1-modules (0.2.1-0.2build1) ... Selecting previously unselected package python3-service-identity. Preparing to unpack .../155-python3-service-identity_18.1.0-5build1_all.deb ... Unpacking python3-service-identity (18.1.0-5build1) ... Selecting previously unselected package python3-snappy. Preparing to unpack .../156-python3-snappy_0.5.3-1.1_amd64.deb ... Unpacking python3-snappy (0.5.3-1.1) ... Selecting previously unselected package python3-trie. Preparing to unpack .../157-python3-trie_0.2+ds-2_all.deb ... Unpacking python3-trie (0.2+ds-2) ... Selecting previously unselected package python3-automat. Preparing to unpack .../158-python3-automat_0.6.0-1_all.deb ... Unpacking python3-automat (0.6.0-1) ... Selecting previously unselected package python3-constantly. Preparing to unpack .../159-python3-constantly_15.1.0-1build1_all.deb ... Unpacking python3-constantly (15.1.0-1build1) ... Selecting previously unselected package python3-idna. Preparing to unpack .../160-python3-idna_2.6-2build1_all.deb ... Unpacking python3-idna (2.6-2build1) ... Selecting previously unselected package python3-hyperlink. Preparing to unpack .../161-python3-hyperlink_19.0.0-1_all.deb ... Unpacking python3-hyperlink (19.0.0-1) ... Selecting previously unselected package python3-incremental. Preparing to unpack .../162-python3-incremental_16.10.1-3.1_all.deb ... Unpacking python3-incremental (16.10.1-3.1) ... Selecting previously unselected package python3-zope.interface. Preparing to unpack .../163-python3-zope.interface_4.6.0-1_amd64.deb ... Unpacking python3-zope.interface (4.6.0-1) ... Selecting previously unselected package python3-twisted-bin:amd64. Preparing to unpack .../164-python3-twisted-bin_18.9.0-5_amd64.deb ... Unpacking python3-twisted-bin:amd64 (18.9.0-5) ... Selecting previously unselected package python3-hamcrest. Preparing to unpack .../165-python3-hamcrest_1.9.0-2_all.deb ... Unpacking python3-hamcrest (1.9.0-2) ... Selecting previously unselected package python3-twisted. Preparing to unpack .../166-python3-twisted_18.9.0-5_all.deb ... Unpacking python3-twisted (18.9.0-5) ... Selecting previously unselected package python3-txaio. Preparing to unpack .../167-python3-txaio_2.10.0-1_all.deb ... Unpacking python3-txaio (2.10.0-1) ... Selecting previously unselected package python3-u-msgpack. Preparing to unpack .../168-python3-u-msgpack_2.1-1build1_all.deb ... Unpacking python3-u-msgpack (2.1-1build1) ... Selecting previously unselected package python3-ubjson. Preparing to unpack .../169-python3-ubjson_0.14.0-2_amd64.deb ... Unpacking python3-ubjson (0.14.0-2) ... Selecting previously unselected package python3-wsaccel. Preparing to unpack .../170-python3-wsaccel_0.6.2-2_amd64.deb ... Unpacking python3-wsaccel (0.6.2-2) ... Selecting previously unselected package python3-autobahn. Preparing to unpack .../171-python3-autobahn_17.10.1+dfsg1-6_all.deb ... Unpacking python3-autobahn (17.10.1+dfsg1-6) ... Selecting previously unselected package python3-tz. Preparing to unpack .../172-python3-tz_2019.3-1_all.deb ... Unpacking python3-tz (2019.3-1) ... Selecting previously unselected package python3-babel. Preparing to unpack .../173-python3-babel_2.6.0+dfsg.1-1_all.deb ... Unpacking python3-babel (2.6.0+dfsg.1-1) ... Selecting previously unselected package python3-blinker. Preparing to unpack .../174-python3-blinker_1.4+dfsg1-0.2build1_all.deb ... Unpacking python3-blinker (1.4+dfsg1-0.2build1) ... Selecting previously unselected package python3-soupsieve. Preparing to unpack .../175-python3-soupsieve_1.9.5+dfsg-1_all.deb ... Unpacking python3-soupsieve (1.9.5+dfsg-1) ... Selecting previously unselected package python3-bs4. Preparing to unpack .../176-python3-bs4_4.8.2-1_all.deb ... Unpacking python3-bs4 (4.8.2-1) ... Selecting previously unselected package python3-bson. Preparing to unpack .../177-python3-bson_3.7.1-1.1build1_amd64.deb ... Unpacking python3-bson (3.7.1-1.1build1) ... Selecting previously unselected package python3-cachetools. Preparing to unpack .../178-python3-cachetools_3.1.1-3_all.deb ... Unpacking python3-cachetools (3.1.1-3) ... Selecting previously unselected package python3-certifi. Preparing to unpack .../179-python3-certifi_2019.11.28-1_all.deb ... Unpacking python3-certifi (2019.11.28-1) ... Selecting previously unselected package python3-chardet. Preparing to unpack .../180-python3-chardet_3.0.4-4_all.deb ... Unpacking python3-chardet (3.0.4-4) ... Selecting previously unselected package python3-roman. Preparing to unpack .../181-python3-roman_2.0.0-3build1_all.deb ... Unpacking python3-roman (2.0.0-3build1) ... Selecting previously unselected package python3-docutils. Preparing to unpack .../182-python3-docutils_0.15.2+dfsg-1_all.deb ... Unpacking python3-docutils (0.15.2+dfsg-1) ... Selecting previously unselected package python3-pbr. Preparing to unpack .../183-python3-pbr_5.4.4-0ubuntu1_all.deb ... Unpacking python3-pbr (5.4.4-0ubuntu1) ... Selecting previously unselected package python3-prettytable. Preparing to unpack .../184-python3-prettytable_0.7.2-5_all.deb ... Unpacking python3-prettytable (0.7.2-5) ... Selecting previously unselected package python3-stevedore. Preparing to unpack .../185-python3-stevedore_1%3a1.31.0-0ubuntu1_all.deb ... Unpacking python3-stevedore (1:1.31.0-0ubuntu1) ... Selecting previously unselected package python3-cliff. Preparing to unpack .../186-python3-cliff_2.16.0-0ubuntu1_all.deb ... Unpacking python3-cliff (2.16.0-0ubuntu1) ... Selecting previously unselected package python3-colorama. Preparing to unpack .../187-python3-colorama_0.3.7-1_all.deb ... Unpacking python3-colorama (0.3.7-1) ... Selecting previously unselected package python3-coverage. Preparing to unpack .../188-python3-coverage_4.5.2+dfsg.1-4_amd64.deb ... Unpacking python3-coverage (4.5.2+dfsg.1-4) ... Selecting previously unselected package python3-ddt. Preparing to unpack .../189-python3-ddt_1.2.1-2ubuntu1_all.deb ... Unpacking python3-ddt (1.2.1-2ubuntu1) ... Selecting previously unselected package python3-wrapt. Preparing to unpack .../190-python3-wrapt_1.11.2-2_amd64.deb ... Unpacking python3-wrapt (1.11.2-2) ... Selecting previously unselected package python3-debtcollector. Preparing to unpack .../191-python3-debtcollector_1.21.0-2ubuntu1_all.deb ... Unpacking python3-debtcollector (1.21.0-2ubuntu1) ... Selecting previously unselected package python3-decorator. Preparing to unpack .../192-python3-decorator_4.3.0-1.1build1_all.deb ... Unpacking python3-decorator (4.3.0-1.1build1) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../193-python3-packaging_19.1-2_all.deb ... Unpacking python3-packaging (19.1-2) ... Selecting previously unselected package python3-deprecation. Preparing to unpack .../194-python3-deprecation_2.0.7-1_all.deb ... Unpacking python3-deprecation (2.0.7-1) ... Selecting previously unselected package python3-dnspython. Preparing to unpack .../195-python3-dnspython_1.16.0-1build1_all.deb ... Unpacking python3-dnspython (1.16.0-1build1) ... Selecting previously unselected package python3-restructuredtext-lint. Preparing to unpack .../196-python3-restructuredtext-lint_1.3.0-2_all.deb ... Unpacking python3-restructuredtext-lint (1.3.0-2) ... Selecting previously unselected package python3-doc8. Preparing to unpack .../197-python3-doc8_0.8.0-4_all.deb ... Unpacking python3-doc8 (0.8.0-4) ... Selecting previously unselected package python3-dogpile.cache. Preparing to unpack .../198-python3-dogpile.cache_0.7.1-1ubuntu1_all.deb ... Unpacking python3-dogpile.cache (0.7.1-1ubuntu1) ... Selecting previously unselected package python3-urllib3. Preparing to unpack .../199-python3-urllib3_1.24.1-1ubuntu2_all.deb ... Unpacking python3-urllib3 (1.24.1-1ubuntu2) ... Selecting previously unselected package python3-dulwich. Preparing to unpack .../200-python3-dulwich_0.19.11-2_amd64.deb ... Unpacking python3-dulwich (0.19.11-2) ... Selecting previously unselected package python3-greenlet. Preparing to unpack .../201-python3-greenlet_0.4.15-3_amd64.deb ... Unpacking python3-greenlet (0.4.15-3) ... Selecting previously unselected package python3-monotonic. Preparing to unpack .../202-python3-monotonic_1.5-0ubuntu2_all.deb ... Unpacking python3-monotonic (1.5-0ubuntu2) ... Selecting previously unselected package python3-eventlet. Preparing to unpack .../203-python3-eventlet_0.25.0-0ubuntu1_all.deb ... Unpacking python3-eventlet (0.25.0-0ubuntu1) ... Selecting previously unselected package python3-extras. Preparing to unpack .../204-python3-extras_1.0.0-3_all.deb ... Unpacking python3-extras (1.0.0-3) ... Selecting previously unselected package python3-jsonschema. Preparing to unpack .../205-python3-jsonschema_2.6.0-4ubuntu2_all.deb ... Unpacking python3-jsonschema (2.6.0-4ubuntu2) ... Selecting previously unselected package python3-mimeparse. Preparing to unpack .../206-python3-mimeparse_1.6.0-2_all.deb ... Unpacking python3-mimeparse (1.6.0-2) ... Selecting previously unselected package python3-msgpack. Preparing to unpack .../207-python3-msgpack_0.5.6-2_amd64.deb ... Unpacking python3-msgpack (0.5.6-2) ... Selecting previously unselected package python3-falcon. Preparing to unpack .../208-python3-falcon_1.4.1-2_amd64.deb ... Unpacking python3-falcon (1.4.1-2) ... Selecting previously unselected package python3-fasteners. Preparing to unpack .../209-python3-fasteners_0.14.1-2_all.deb ... Unpacking python3-fasteners (0.14.1-2) ... Selecting previously unselected package python3-linecache2. Preparing to unpack .../210-python3-linecache2_1.0.0-3build1_all.deb ... Unpacking python3-linecache2 (1.0.0-3build1) ... Selecting previously unselected package python3-traceback2. Preparing to unpack .../211-python3-traceback2_1.4.0-5build1_all.deb ... Unpacking python3-traceback2 (1.4.0-5build1) ... Selecting previously unselected package python3-unittest2. Preparing to unpack .../212-python3-unittest2_1.1.0-6.1build1_all.deb ... Unpacking python3-unittest2 (1.1.0-6.1build1) ... Selecting previously unselected package python3-testtools. Preparing to unpack .../213-python3-testtools_2.3.0-5_all.deb ... Unpacking python3-testtools (2.3.0-5) ... Selecting previously unselected package python3-fixtures. Preparing to unpack .../214-python3-fixtures_3.0.0-2_all.deb ... Unpacking python3-fixtures (3.0.0-2) ... Selecting previously unselected package python3-funcsigs. Preparing to unpack .../215-python3-funcsigs_1.0.2-4build1_all.deb ... Unpacking python3-funcsigs (1.0.2-4build1) ... Selecting previously unselected package python3-future. Preparing to unpack .../216-python3-future_0.16.0-1_all.deb ... Unpacking python3-future (0.16.0-1) ... Selecting previously unselected package python3-futurist. Preparing to unpack .../217-python3-futurist_1.9.0-2_all.deb ... Unpacking python3-futurist (1.9.0-2) ... Selecting previously unselected package python3-httplib2. Preparing to unpack .../218-python3-httplib2_0.11.3-2build1_all.deb ... Unpacking python3-httplib2 (0.11.3-2build1) ... Selecting previously unselected package python3-ply. Preparing to unpack .../219-python3-ply_3.11-3build1_all.deb ... Unpacking python3-ply (3.11-3build1) ... Selecting previously unselected package python3-jsonpath-rw. Preparing to unpack .../220-python3-jsonpath-rw_1.4.0-4_all.deb ... Unpacking python3-jsonpath-rw (1.4.0-4) ... Selecting previously unselected package python3-wsgi-intercept. Preparing to unpack .../221-python3-wsgi-intercept_1.8.0-0ubuntu2_all.deb ... Unpacking python3-wsgi-intercept (1.8.0-0ubuntu2) ... Selecting previously unselected package python3-jsonpath-rw-ext. Preparing to unpack .../222-python3-jsonpath-rw-ext_1.2.2-2_all.deb ... Unpacking python3-jsonpath-rw-ext (1.2.2-2) ... Selecting previously unselected package python3-more-itertools. Preparing to unpack .../223-python3-more-itertools_4.2.0-1build1_all.deb ... Unpacking python3-more-itertools (4.2.0-1build1) ... Selecting previously unselected package python3-zipp. Preparing to unpack .../224-python3-zipp_0.6.0-1_all.deb ... Unpacking python3-zipp (0.6.0-1) ... Selecting previously unselected package python3-importlib-metadata. Preparing to unpack .../225-python3-importlib-metadata_0.23-2ubuntu1_all.deb ... Unpacking python3-importlib-metadata (0.23-2ubuntu1) ... Selecting previously unselected package python3-pluggy. Preparing to unpack .../226-python3-pluggy_0.13.0-2_all.deb ... Unpacking python3-pluggy (0.13.0-2) ... Selecting previously unselected package python3-py. Preparing to unpack .../227-python3-py_1.8.0-1_all.deb ... Unpacking python3-py (1.8.0-1) ... Selecting previously unselected package python3-pytest. Preparing to unpack .../228-python3-pytest_4.6.6-1ubuntu4_all.deb ... Unpacking python3-pytest (4.6.6-1ubuntu4) ... Selecting previously unselected package python3-gabbi. Preparing to unpack .../229-python3-gabbi_1.44.0-0ubuntu3_all.deb ... Unpacking python3-gabbi (1.44.0-0ubuntu3) ... Selecting previously unselected package python3-pep8. Preparing to unpack .../230-python3-pep8_1.7.1-8_all.deb ... Unpacking python3-pep8 (1.7.1-8) ... Selecting previously unselected package python3-hacking. Preparing to unpack .../231-python3-hacking_1.1.0-4_all.deb ... Unpacking python3-hacking (1.1.0-4) ... Selecting previously unselected package python3-imagesize. Preparing to unpack .../232-python3-imagesize_1.2.0-1_all.deb ... Unpacking python3-imagesize (1.2.0-1) ... Selecting previously unselected package python3-jinja2. Preparing to unpack .../233-python3-jinja2_2.10-2ubuntu2_all.deb ... Unpacking python3-jinja2 (2.10-2ubuntu2) ... Selecting previously unselected package python3-jmespath. Preparing to unpack .../234-python3-jmespath_0.9.4-2_all.deb ... Unpacking python3-jmespath (0.9.4-2) ... Selecting previously unselected package python3-json-pointer. Preparing to unpack .../235-python3-json-pointer_1.10-2_all.deb ... Unpacking python3-json-pointer (1.10-2) ... Selecting previously unselected package python3-jsonpatch. Preparing to unpack .../236-python3-jsonpatch_1.23-3_all.deb ... Unpacking python3-jsonpatch (1.23-3) ... Selecting previously unselected package python3-jwt. Preparing to unpack .../237-python3-jwt_1.7.1-1_all.deb ... Unpacking python3-jwt (1.7.1-1) ... Selecting previously unselected package python3-secretstorage. Preparing to unpack .../238-python3-secretstorage_2.3.1-2build1_all.deb ... Unpacking python3-secretstorage (2.3.1-2build1) ... Selecting previously unselected package python3-keyring. Preparing to unpack .../239-python3-keyring_18.0.1-1build1_all.deb ... Unpacking python3-keyring (18.0.1-1build1) ... Selecting previously unselected package python3-iso8601. Preparing to unpack .../240-python3-iso8601_0.1.11-2_all.deb ... Unpacking python3-iso8601 (0.1.11-2) ... Selecting previously unselected package python3-lxml:amd64. Preparing to unpack .../241-python3-lxml_4.4.1-1build1_amd64.deb ... Unpacking python3-lxml:amd64 (4.4.1-1build1) ... Selecting previously unselected package python3-oauthlib. Preparing to unpack .../242-python3-oauthlib_2.1.0-1_all.deb ... Unpacking python3-oauthlib (2.1.0-1) ... Selecting previously unselected package python3-os-service-types. Preparing to unpack .../243-python3-os-service-types_1.7.0-0ubuntu1_all.deb ... Unpacking python3-os-service-types (1.7.0-0ubuntu1) ... Selecting previously unselected package python3-requests. Preparing to unpack .../244-python3-requests_2.21.0-1_all.deb ... Unpacking python3-requests (2.21.0-1) ... Selecting previously unselected package python3-keystoneauth1. Preparing to unpack .../245-python3-keystoneauth1_3.18.0-0ubuntu1_all.deb ... Unpacking python3-keystoneauth1 (3.18.0-0ubuntu1) ... Selecting previously unselected package python3-netaddr. Preparing to unpack .../246-python3-netaddr_0.7.19-1_all.deb ... Unpacking python3-netaddr (0.7.19-1) ... Selecting previously unselected package python3-oslo.i18n. Preparing to unpack .../247-python3-oslo.i18n_3.25.0-0ubuntu1_all.deb ... Unpacking python3-oslo.i18n (3.25.0-0ubuntu1) ... Selecting previously unselected package python3-oslo.context. Preparing to unpack .../248-python3-oslo.context_1%3a2.23.0-0ubuntu1_all.deb ... Unpacking python3-oslo.context (1:2.23.0-0ubuntu1) ... Selecting previously unselected package python3-oslo.utils. Preparing to unpack .../249-python3-oslo.utils_3.41.1-0ubuntu2_all.deb ... Unpacking python3-oslo.utils (3.41.1-0ubuntu2) ... Selecting previously unselected package python3-oslo.serialization. Preparing to unpack .../250-python3-oslo.serialization_2.29.2-0ubuntu2_all.deb ... Unpacking python3-oslo.serialization (2.29.2-0ubuntu2) ... Selecting previously unselected package python3-pyinotify. Preparing to unpack .../251-python3-pyinotify_0.9.6-1.2build1_all.deb ... Unpacking python3-pyinotify (0.9.6-1.2build1) ... Selecting previously unselected package python3-oslo.log. Preparing to unpack .../252-python3-oslo.log_3.45.0-0ubuntu3_all.deb ... Unpacking python3-oslo.log (3.45.0-0ubuntu3) ... Selecting previously unselected package python3-rfc3986. Preparing to unpack .../253-python3-rfc3986_1.3.2-0ubuntu2_all.deb ... Unpacking python3-rfc3986 (1.3.2-0ubuntu2) ... Selecting previously unselected package python3-oslo.config. Preparing to unpack .../254-python3-oslo.config_1%3a6.12.0-0ubuntu2_all.deb ... Unpacking python3-oslo.config (1:6.12.0-0ubuntu2) ... Selecting previously unselected package python3-keystoneclient. Preparing to unpack .../255-python3-keystoneclient_1%3a3.22.0-0ubuntu1_all.deb ... Unpacking python3-keystoneclient (1:3.22.0-0ubuntu1) ... Selecting previously unselected package python3-memcache. Preparing to unpack .../256-python3-memcache_1.59-3build1_all.deb ... Unpacking python3-memcache (1.59-3build1) ... Selecting previously unselected package python3-oslo.cache. Preparing to unpack .../257-python3-oslo.cache_1.38.0-0ubuntu2_all.deb ... Unpacking python3-oslo.cache (1.38.0-0ubuntu2) ... Selecting previously unselected package python3-pycadf. Preparing to unpack .../258-python3-pycadf_2.10.0-2_all.deb ... Unpacking python3-pycadf (2.10.0-2) ... Selecting previously unselected package python3-webob. Preparing to unpack .../259-python3-webob_1%3a1.8.5-1build1_all.deb ... Unpacking python3-webob (1:1.8.5-1build1) ... Selecting previously unselected package python3-keystonemiddleware. Preparing to unpack .../260-python3-keystonemiddleware_7.0.1-0ubuntu1_all.deb ... Unpacking python3-keystonemiddleware (7.0.1-0ubuntu1) ... Selecting previously unselected package python3-vine. Preparing to unpack .../261-python3-vine_1.3.0+dfsg-1_all.deb ... Unpacking python3-vine (1.3.0+dfsg-1) ... Selecting previously unselected package python3-amqp. Preparing to unpack .../262-python3-amqp_2.5.2-0ubuntu1_all.deb ... Unpacking python3-amqp (2.5.2-0ubuntu1) ... Selecting previously unselected package python3-kombu. Preparing to unpack .../263-python3-kombu_4.2.1-4_all.deb ... Unpacking python3-kombu (4.2.1-4) ... Selecting previously unselected package python3-logutils. Preparing to unpack .../264-python3-logutils_0.3.3-7_all.deb ... Unpacking python3-logutils (0.3.3-7) ... Selecting previously unselected package python3-sqlparse. Preparing to unpack .../265-python3-sqlparse_0.2.4-1build1_all.deb ... Unpacking python3-sqlparse (0.2.4-1build1) ... Selecting previously unselected package python3-tempita. Preparing to unpack .../266-python3-tempita_0.5.2-5_all.deb ... Unpacking python3-tempita (0.5.2-5) ... Selecting previously unselected package python3-migrate. Preparing to unpack .../267-python3-migrate_0.12.0-3_all.deb ... Unpacking python3-migrate (0.12.0-3) ... Selecting previously unselected package python3-mox3. Preparing to unpack .../268-python3-mox3_0.28.0-2_all.deb ... Unpacking python3-mox3 (0.28.0-2) ... Selecting previously unselected package python3-sortedcontainers. Preparing to unpack .../269-python3-sortedcontainers_2.1.0-1build1_all.deb ... Unpacking python3-sortedcontainers (2.1.0-1build1) ... Selecting previously unselected package python3-openvswitch. Preparing to unpack .../270-python3-openvswitch_2.12.1~git20191107.7accd1302-0ubuntu1_all.deb ... Unpacking python3-openvswitch (2.12.1~git20191107.7accd1302-0ubuntu1) ... Selecting previously unselected package python3-repoze.lru. Preparing to unpack .../271-python3-repoze.lru_0.7-1build1_all.deb ... Unpacking python3-repoze.lru (0.7-1build1) ... Selecting previously unselected package python3-routes. Preparing to unpack .../272-python3-routes_2.4.1-1_all.deb ... Unpacking python3-routes (2.4.1-1) ... Selecting previously unselected package python3-tinyrpc. Preparing to unpack .../273-python3-tinyrpc_0.6-3_all.deb ... Unpacking python3-tinyrpc (0.6-3) ... Selecting previously unselected package python3-os-ken. Preparing to unpack .../274-python3-os-ken_0.4.1-0ubuntu1_all.deb ... Unpacking python3-os-ken (0.4.1-0ubuntu1) ... Selecting previously unselected package python3-os-traits. Preparing to unpack .../275-python3-os-traits_2.1.0-0ubuntu1_all.deb ... Unpacking python3-os-traits (2.1.0-0ubuntu1) ... Selecting previously unselected package python3-posix-ipc. Preparing to unpack .../276-python3-posix-ipc_0.9.8-3build3_amd64.deb ... Unpacking python3-posix-ipc (0.9.8-3build3) ... Selecting previously unselected package python3-oslo.concurrency. Preparing to unpack .../277-python3-oslo.concurrency_3.30.0-0ubuntu1_all.deb ... Unpacking python3-oslo.concurrency (3.30.0-0ubuntu1) ... Selecting previously unselected package python3-testresources. Preparing to unpack .../278-python3-testresources_2.0.0-2build1_all.deb ... Unpacking python3-testresources (2.0.0-2build1) ... Selecting previously unselected package python3-testscenarios. Preparing to unpack .../279-python3-testscenarios_0.5.0-3build1_all.deb ... Unpacking python3-testscenarios (0.5.0-3build1) ... Selecting previously unselected package python3-oslo.db. Preparing to unpack .../280-python3-oslo.db_5.0.2-3ubuntu1_all.deb ... Unpacking python3-oslo.db (5.0.2-3ubuntu1) ... Selecting previously unselected package python3-statsd. Preparing to unpack .../281-python3-statsd_3.3.0-2build1_all.deb ... Unpacking python3-statsd (3.3.0-2build1) ... Selecting previously unselected package python3-oslo.middleware. Preparing to unpack .../282-python3-oslo.middleware_3.38.1-0ubuntu2_all.deb ... Unpacking python3-oslo.middleware (3.38.1-0ubuntu2) ... Selecting previously unselected package python3-paste. Preparing to unpack .../283-python3-paste_3.2.3+dfsg1-1_all.deb ... Unpacking python3-paste (3.2.3+dfsg1-1) ... Selecting previously unselected package python3-pastedeploy. Preparing to unpack .../284-python3-pastedeploy_2.0.1-1build1_all.deb ... Unpacking python3-pastedeploy (2.0.1-1build1) ... Selecting previously unselected package python3-oslo.service. Preparing to unpack .../285-python3-oslo.service_1.40.2-0ubuntu2_all.deb ... Unpacking python3-oslo.service (1.40.2-0ubuntu2) ... Selecting previously unselected package python3-tenacity. Preparing to unpack .../286-python3-tenacity_6.0.0-0ubuntu2_all.deb ... Unpacking python3-tenacity (6.0.0-0ubuntu2) ... Selecting previously unselected package python3-oslo.messaging. Preparing to unpack .../287-python3-oslo.messaging_9.7.1-0ubuntu3_all.deb ... Unpacking python3-oslo.messaging (9.7.1-0ubuntu3) ... Selecting previously unselected package python3-oslo.policy. Preparing to unpack .../288-python3-oslo.policy_2.4.0-0ubuntu1_all.deb ... Unpacking python3-oslo.policy (2.4.0-0ubuntu1) ... Selecting previously unselected package python3-oslo.versionedobjects. Preparing to unpack .../289-python3-oslo.versionedobjects_1.36.1-0ubuntu2_all.deb ... Unpacking python3-oslo.versionedobjects (1.36.1-0ubuntu2) ... Selecting previously unselected package python3-osprofiler. Preparing to unpack .../290-python3-osprofiler_2.8.2-0ubuntu2_all.deb ... Unpacking python3-osprofiler (2.8.2-0ubuntu2) ... Selecting previously unselected package python3-simplegeneric. Preparing to unpack .../291-python3-simplegeneric_0.8.1-2build1_all.deb ... Unpacking python3-simplegeneric (0.8.1-2build1) ... Selecting previously unselected package python3-singledispatch. Preparing to unpack .../292-python3-singledispatch_3.4.0.3-2build1_all.deb ... Unpacking python3-singledispatch (3.4.0.3-2build1) ... Selecting previously unselected package python3-waitress. Preparing to unpack .../293-python3-waitress_1.4.1-1_all.deb ... Unpacking python3-waitress (1.4.1-1) ... Selecting previously unselected package python3-webtest. Preparing to unpack .../294-python3-webtest_2.0.32-1ubuntu1_all.deb ... Unpacking python3-webtest (2.0.32-1ubuntu1) ... Selecting previously unselected package python3-pecan. Preparing to unpack .../295-python3-pecan_1.3.3-0ubuntu2_all.deb ... Unpacking python3-pecan (1.3.3-0ubuntu2) ... Selecting previously unselected package python3-setproctitle:amd64. Preparing to unpack .../296-python3-setproctitle_1.1.10-1build5_amd64.deb ... Unpacking python3-setproctitle:amd64 (1.1.10-1build5) ... Selecting previously unselected package python3-neutron-lib. Preparing to unpack .../297-python3-neutron-lib_1.30.0-0ubuntu1_all.deb ... Unpacking python3-neutron-lib (1.30.0-0ubuntu1) ... Selecting previously unselected package python3-voluptuous. Preparing to unpack .../298-python3-voluptuous_0.11.1-1build1_all.deb ... Unpacking python3-voluptuous (0.11.1-1build1) ... Selecting previously unselected package python3-subunit. Preparing to unpack .../299-python3-subunit_1.3.0-6build1_all.deb ... Unpacking python3-subunit (1.3.0-6build1) ... Selecting previously unselected package subunit. Preparing to unpack .../300-subunit_1.3.0-6build1_all.deb ... Unpacking subunit (1.3.0-6build1) ... Selecting previously unselected package python3-stestr. Preparing to unpack .../301-python3-stestr_2.4.0-2_all.deb ... Unpacking python3-stestr (2.4.0-2) ... Selecting previously unselected package python3-os-testr. Preparing to unpack .../302-python3-os-testr_1.0.0-5ubuntu3_all.deb ... Unpacking python3-os-testr (1.0.0-5ubuntu3) ... Selecting previously unselected package python3-mock. Preparing to unpack .../303-python3-mock_3.0.5-1_all.deb ... Unpacking python3-mock (3.0.5-1) ... Selecting previously unselected package python3-munch. Preparing to unpack .../304-python3-munch_2.3.2-2_all.deb ... Unpacking python3-munch (2.3.2-2) ... Selecting previously unselected package python3-requestsexceptions. Preparing to unpack .../305-python3-requestsexceptions_1.4.0-3_all.deb ... Unpacking python3-requestsexceptions (1.4.0-3) ... Selecting previously unselected package python3-openstacksdk. Preparing to unpack .../306-python3-openstacksdk_0.38.0-0ubuntu1_all.deb ... Unpacking python3-openstacksdk (0.38.0-0ubuntu1) ... Selecting previously unselected package python3-os-client-config. Preparing to unpack .../307-python3-os-client-config_1.31.2-0ubuntu2_all.deb ... Unpacking python3-os-client-config (1.31.2-0ubuntu2) ... Selecting previously unselected package python3-testrepository. Preparing to unpack .../308-python3-testrepository_0.0.20-5_all.deb ... Unpacking python3-testrepository (0.0.20-5) ... Selecting previously unselected package testrepository. Preparing to unpack .../309-testrepository_0.0.20-5_all.deb ... Unpacking testrepository (0.0.20-5) ... Selecting previously unselected package python3-oslotest. Preparing to unpack .../310-python3-oslotest_1%3a3.8.1-0ubuntu1_all.deb ... Unpacking python3-oslotest (1:3.8.1-0ubuntu1) ... Selecting previously unselected package python3-bcrypt. Preparing to unpack .../311-python3-bcrypt_3.1.7-2_amd64.deb ... Unpacking python3-bcrypt (3.1.7-2) ... Selecting previously unselected package python3-paramiko. Preparing to unpack .../312-python3-paramiko_2.6.0-1_all.deb ... Unpacking python3-paramiko (2.6.0-1) ... Selecting previously unselected package python3-swiftclient. Preparing to unpack .../313-python3-swiftclient_1%3a3.8.1-0ubuntu1_all.deb ... Unpacking python3-swiftclient (1:3.8.1-0ubuntu1) ... Selecting previously unselected package python3-tempest. Preparing to unpack .../314-python3-tempest_1%3a22.0.0-0ubuntu1_all.deb ... Unpacking python3-tempest (1:22.0.0-0ubuntu1) ... Selecting previously unselected package python3-neutron-tempest-plugin. Preparing to unpack .../315-python3-neutron-tempest-plugin_0.2.0-1_all.deb ... Unpacking python3-neutron-tempest-plugin (0.2.0-1) ... Selecting previously unselected package python3-openstackdocstheme. Preparing to unpack .../316-python3-openstackdocstheme_1.31.1-0ubuntu2_all.deb ... Unpacking python3-openstackdocstheme (1.31.1-0ubuntu2) ... Selecting previously unselected package python3-psutil. Preparing to unpack .../317-python3-psutil_5.5.1-1ubuntu1_amd64.deb ... Unpacking python3-psutil (5.5.1-1ubuntu1) ... Selecting previously unselected package python3-oslo.reports. Preparing to unpack .../318-python3-oslo.reports_1.30.0-0ubuntu1_all.deb ... Unpacking python3-oslo.reports (1.30.0-0ubuntu1) ... Selecting previously unselected package python3-oslo.upgradecheck. Preparing to unpack .../319-python3-oslo.upgradecheck_0.3.2-0ubuntu1_all.deb ... Unpacking python3-oslo.upgradecheck (0.3.2-0ubuntu1) ... Selecting previously unselected package python3-pygments. Preparing to unpack .../320-python3-pygments_2.3.1+dfsg-1ubuntu2_all.deb ... Unpacking python3-pygments (2.3.1+dfsg-1ubuntu2) ... Selecting previously unselected package python3-pymongo. Preparing to unpack .../321-python3-pymongo_3.7.1-1.1build1_amd64.deb ... Unpacking python3-pymongo (3.7.1-1.1build1) ... Selecting previously unselected package python3-pymysql. Preparing to unpack .../322-python3-pymysql_0.9.3-1_all.deb ... Unpacking python3-pymysql (0.9.3-1) ... Selecting previously unselected package python3-redis. Preparing to unpack .../323-python3-redis_3.3.11-1ubuntu1_all.deb ... Unpacking python3-redis (3.3.11-1ubuntu1) ... Selecting previously unselected package python3-reno. Preparing to unpack .../324-python3-reno_2.11.2-2_all.deb ... Unpacking python3-reno (2.11.2-2) ... Selecting previously unselected package sphinx-common. Preparing to unpack .../325-sphinx-common_1.8.5-4_all.deb ... Unpacking sphinx-common (1.8.5-4) ... Selecting previously unselected package python3-alabaster. Preparing to unpack .../326-python3-alabaster_0.7.8-1build1_all.deb ... Unpacking python3-alabaster (0.7.8-1build1) ... Selecting previously unselected package python3-sphinx. Preparing to unpack .../327-python3-sphinx_1.8.5-4_all.deb ... Unpacking python3-sphinx (1.8.5-4) ... Selecting previously unselected package python3-sphinxcontrib.apidoc. Preparing to unpack .../328-python3-sphinxcontrib.apidoc_0.3.0-2ubuntu1_all.deb ... Unpacking python3-sphinxcontrib.apidoc (0.3.0-2ubuntu1) ... Selecting previously unselected package python3-websocket. Preparing to unpack .../329-python3-websocket_0.53.0-1_all.deb ... Unpacking python3-websocket (0.53.0-1) ... Selecting previously unselected package openstack-pkg-tools. Preparing to unpack .../330-openstack-pkg-tools_99ubuntu1_all.deb ... Unpacking openstack-pkg-tools (99ubuntu1) ... Selecting previously unselected package python-os-api-ref-common. Preparing to unpack .../331-python-os-api-ref-common_1.6.2+dfsg1-0ubuntu1_all.deb ... Unpacking python-os-api-ref-common (1.6.2+dfsg1-0ubuntu1) ... Selecting previously unselected package python-pbr. Preparing to unpack .../332-python-pbr_5.4.4-0ubuntu1_all.deb ... Unpacking python-pbr (5.4.4-0ubuntu1) ... Selecting previously unselected package python3-os-api-ref. Preparing to unpack .../333-python3-os-api-ref_1.6.2+dfsg1-0ubuntu1_all.deb ... Unpacking python3-os-api-ref (1.6.2+dfsg1-0ubuntu1) ... Selecting previously unselected package tempest. Preparing to unpack .../334-tempest_1%3a22.0.0-0ubuntu1_all.deb ... Unpacking tempest (1:22.0.0-0ubuntu1) ... Selecting previously unselected package sbuild-build-depends-zaqar-dummy. Preparing to unpack .../335-sbuild-build-depends-zaqar-dummy_0.invalid.0_amd64.deb ... Unpacking sbuild-build-depends-zaqar-dummy (0.invalid.0) ... Setting up libboost-program-options1.67.0:amd64 (1.67.0-13ubuntu2) ... Setting up libpcrecpp0v5:amd64 (2:8.39-12) ... Setting up libpipeline1:amd64 (1.5.1-3) ... Setting up libxau6:amd64 (1:1.0.9-0ubuntu1) ... Setting up libsubunit-perl (1.3.0-6build1) ... Setting up libkeyutils1:amd64 (1.6-6ubuntu1) ... Setting up libpsl5:amd64 (0.20.2-2) ... Setting up libpython3.8-minimal:amd64 (3.8.0-5) ... Setting up libsodium23:amd64 (1.0.18-1) ... Setting up mime-support (3.64ubuntu1) ... Setting up wget (1.20.3-1ubuntu1) ... Setting up libmagic-mgc (1:5.37-6) ... Setting up libarchive-zip-perl (1.67-1) ... Setting up libyaml-0-2:amd64 (0.2.2-1) ... Setting up libglib2.0-0:amd64 (2.63.3-1) ... No schema files found: doing nothing. Setting up fonts-glyphicons-halflings (1.009~3.4.1+dfsg-1) ... Setting up libdebhelper-perl (12.7.1ubuntu1) ... Setting up libbrotli1:amd64 (1.0.7-5) ... Setting up x11-common (1:7.7+19ubuntu12) ... update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults Running in chroot, ignoring request. invoke-rc.d: policy-rc.d denied execution of start. Setting up libtcmalloc-minimal4 (2.5-2.2ubuntu3) ... Setting up libnghttp2-14:amd64 (1.40.0-1) ... Setting up libmagic1:amd64 (1:5.37-6) ... Setting up gettext-base (0.19.8.1-10) ... Setting up file (1:5.37-6) ... Setting up libldap-common (2.4.48+dfsg-1ubuntu3) ... Setting up libunwind8:amd64 (1.2.1-9) ... Setting up libicu63:amd64 (63.2-2) ... Setting up python-babel-localedata (2.6.0+dfsg.1-1) ... Setting up libsnappy1v5:amd64 (1.1.7-2) ... Setting up libkrb5support0:amd64 (1.17-6) ... Setting up libsasl2-modules-db:amd64 (2.1.27+dfsg-2) ... Setting up libpython2.7-stdlib:amd64 (2.7.17-1) ... Setting up liberror-perl (0.17028-1) ... Setting up autotools-dev (20180224.1) ... Setting up python-pastedeploy-tpl (2.0.1-1build1) ... Setting up libx11-data (2:1.6.8-1) ... Setting up librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2build1) ... Setting up libdbus-1-3:amd64 (1.12.16-2ubuntu2) ... Setting up dbus (1.12.16-2ubuntu2) ... Setting up libsigsegv2:amd64 (2.12-2) ... Setting up libyaml-cpp0.6:amd64 (0.6.2-4fakesync1) ... Setting up autopoint (0.19.8.1-10) ... Setting up libboost-iostreams1.67.0:amd64 (1.67.0-13ubuntu2) ... Setting up libk5crypto3:amd64 (1.17-6) ... Setting up libsasl2-2:amd64 (2.1.27+dfsg-2) ... Setting up libroken18-heimdal:amd64 (7.7.0+dfsg-1) ... Setting up pycadf-common (2.10.0-2) ... Setting up ieee-data (20180805.1) ... Setting up python3.8-minimal (3.8.0-5) ... Setting up libuchardet0:amd64 (0.0.6-3) ... Setting up libsub-override-perl (0.09-2) ... Setting up git-man (1:2.24.0-1ubuntu1) ... Setting up netbase (5.6) ... Setting up sgml-base (1.29.1) ... Setting up libkrb5-3:amd64 (1.17-6) ... Setting up libstemmer0d:amd64 (0+svn585-1.1) ... Setting up libmpdec2:amd64 (2.4.2-2) ... Setting up libjs-jquery (3.3.1~dfsg-3) ... Setting up libboost-system1.67.0:amd64 (1.67.0-13ubuntu2) ... Setting up libpython3.8-stdlib:amd64 (3.8.0-5) ... Setting up python3.8 (3.8.0-5) ... Setting up libbsd0:amd64 (0.10.0-1) ... Setting up libelf1:amd64 (0.176-1.1) ... Setting up libxml2:amd64 (2.9.4+dfsg1-8ubuntu1) ... Setting up libonig5:amd64 (6.9.4-1) ... Setting up libjs-bootstrap (3.4.1+dfsg-1) ... Setting up libgoogle-perftools4 (2.5-2.2ubuntu3) ... Setting up libheimbase1-heimdal:amd64 (7.7.0+dfsg-1) ... Setting up libjs-underscore (1.9.1~dfsg-1) ... Setting up libfile-stripnondeterminism-perl (1.6.3-1) ... Setting up libice6:amd64 (2:1.0.10-0ubuntu1) ... Setting up libxdmcp6:amd64 (1:1.1.3-0ubuntu1) ... Setting up libpython3.7-stdlib:amd64 (3.7.5-2) ... Setting up libxcb1:amd64 (1.13.1-2) ... Setting up python2.7 (2.7.17-1) ... Setting up libtool (2.4.6-11) ... Setting up libpython2-stdlib:amd64 (2.7.17-1) ... Setting up libjq1:amd64 (1.6-1) ... Setting up libasn1-8-heimdal:amd64 (7.7.0+dfsg-1) ... Setting up m4 (1.4.18-4) ... Setting up libhcrypto4-heimdal:amd64 (7.7.0+dfsg-1) ... Setting up python2 (2.7.17-1) ... Setting up libpython-stdlib:amd64 (2.7.17-1) ... Setting up libwind0-heimdal:amd64 (7.7.0+dfsg-1) ... Setting up bsdmainutils (11.1.2ubuntu2) ... update-alternatives: using /usr/bin/bsd-write to provide /usr/bin/write (write) in auto mode update-alternatives: using /usr/bin/bsd-from to provide /usr/bin/from (from) in auto mode Setting up python-os-api-ref-common (1.6.2+dfsg1-0ubuntu1) ... Setting up libgssapi-krb5-2:amd64 (1.17-6) ... Setting up libcroco3:amd64 (0.6.13-1) ... Setting up libjs-sphinxdoc (1.8.5-4) ... Setting up libssh-4:amd64 (0.9.0-1ubuntu5) ... Setting up autoconf (2.69-11ubuntu1) ... Setting up dh-strip-nondeterminism (1.6.3-1) ... Setting up dwz (0.13-5) ... Setting up groff-base (1.22.4-4) ... Setting up xml-core (0.18+nmu1) ... Setting up jq (1.6-1) ... Setting up libxslt1.1:amd64 (1.1.33-0ubuntu2) ... Setting up libx11-6:amd64 (2:1.6.8-1) ... Setting up libboost-filesystem1.67.0:amd64 (1.67.0-13ubuntu2) ... Setting up mongodb-server-core (1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2) ... Setting up libsm6:amd64 (2:1.2.3-1) ... Setting up python (2.7.17-1) ... Setting up libpython3-stdlib:amd64 (3.7.5-1ubuntu1) ... Setting up automake (1:1.16.1-4ubuntu3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up python3.7 (3.7.5-2) ... Setting up gettext (0.19.8.1-10) ... Setting up python-pkg-resources (41.4.0-1) ... Setting up libhx509-5-heimdal:amd64 (7.7.0+dfsg-1) ... Setting up libxext6:amd64 (2:1.3.4-0ubuntu1) ... Setting up python3 (3.7.5-1ubuntu1) ... Setting up python3-sortedcontainers (2.1.0-1build1) ... Setting up python-all (2.7.17-1) ... Setting up man-db (2.9.0-2) ... Not building database; man-db/auto-update is not 'true'. Created symlink /etc/systemd/system/timers.target.wants/man-db.timer → /lib/systemd/system/man-db.timer. Setting up python3-markupsafe (1.1.0-1build1) ... Setting up python3-psutil (5.5.1-1ubuntu1) ... Setting up python3-tz (2019.3-1) ... Setting up python3-sqlalchemy (1.2.18+ds1-2ubuntu3) ... /usr/lib/python3/dist-packages/sqlalchemy/orm/query.py:195: SyntaxWarning: "is not" with a literal. Did you mean "!="? if entities is not (): Setting up python3-vine (1.3.0+dfsg-1) ... Setting up python3-atomicwrites (1.1.5-2build1) ... Setting up intltool-debian (0.35.0+20060710.5) ... Setting up python3-monotonic (1.5-0ubuntu2) ... Setting up python-six (1.12.0-2build1) ... Setting up python3-six (1.12.0-2build1) ... Setting up python3-bson (3.7.1-1.1build1) ... /usr/lib/python3/dist-packages/bson/json_util.py:730: SyntaxWarning: "is not" with a literal. Did you mean "!="? if doc['$minKey'] is not 1: /usr/lib/python3/dist-packages/bson/json_util.py:739: SyntaxWarning: "is not" with a literal. Did you mean "!="? if doc['$maxKey'] is not 1: Setting up python3-roman (2.0.0-3build1) ... Setting up python3-decorator (4.3.0-1.1build1) ... Setting up python3-pycodestyle (2.5.0-1) ... Setting up python3-jinja2 (2.10-2ubuntu2) ... Setting up python3-pygments (2.3.1+dfsg-1ubuntu2) ... Setting up python3-tempita (0.5.2-5) ... Setting up python3-iso8601 (0.1.11-2) ... Setting up python3-sqlparse (0.2.4-1build1) ... Setting up python3-wcwidth (0.1.7+dfsg1-6build1) ... Setting up python3-rfc3986 (1.3.2-0ubuntu2) ... Setting up python3-pyparsing (2.4.2-1) ... Setting up python3-certifi (2019.11.28-1) ... Setting up python3-linecache2 (1.0.0-3build1) ... Setting up python3-jmespath (0.9.4-2) ... /usr/lib/python3/dist-packages/jmespath/visitor.py:32: SyntaxWarning: "is" with a literal. Did you mean "=="? if x is 0 or x is 1: /usr/lib/python3/dist-packages/jmespath/visitor.py:32: SyntaxWarning: "is" with a literal. Did you mean "=="? if x is 0 or x is 1: /usr/lib/python3/dist-packages/jmespath/visitor.py:34: SyntaxWarning: "is" with a literal. Did you mean "=="? elif y is 0 or y is 1: /usr/lib/python3/dist-packages/jmespath/visitor.py:34: SyntaxWarning: "is" with a literal. Did you mean "=="? elif y is 0 or y is 1: /usr/lib/python3/dist-packages/jmespath/visitor.py:260: SyntaxWarning: "is" with a literal. Did you mean "=="? if original_result is 0: Setting up python3-funcsigs (1.0.2-4build1) ... Setting up python3-incremental (16.10.1-3.1) ... Setting up sphinx-common (1.8.5-4) ... Setting up python3-greenlet (0.4.15-3) ... Setting up python3-setproctitle:amd64 (1.1.10-1build5) ... Setting up python3-idna (2.6-2build1) ... Setting up python3-wrapt (1.11.2-2) ... Setting up cython3 (0.29.14-0.1) ... Setting up python-setuptools (41.4.0-1) ... Setting up python3-pyqrcode (1.2.1-4) ... Setting up python3-pymysql (0.9.3-1) ... Setting up python3-redis (3.3.11-1ubuntu1) ... Setting up python3-fasteners (0.14.1-2) ... Setting up libxt6:amd64 (1:1.1.5-1) ... Setting up python3-urllib3 (1.24.1-1ubuntu2) ... Setting up python3-netifaces (0.10.4-1ubuntu1) ... Setting up mongodb-clients (1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2) ... Setting up python3-netaddr (0.7.19-1) ... /usr/lib/python3/dist-packages/netaddr/strategy/__init__.py:189: SyntaxWarning: "is not" with a literal. Did you mean "!="? if word_sep is not '': Setting up python3-json-pointer (1.10-2) ... Setting up python3-lxml:amd64 (4.4.1-1build1) ... Setting up python3-dnspython (1.16.0-1build1) ... Setting up python3-dulwich (0.19.11-2) ... Setting up python3-amqp (2.5.2-0ubuntu1) ... Setting up python3-pyasn1 (0.4.2-3build1) ... Setting up python3-httplib2 (0.11.3-2build1) ... Setting up python3-wsaccel (0.6.2-2) ... Setting up python3-snappy (0.5.3-1.1) ... Setting up python3-dateutil (2.7.3-3) ... Setting up python3-mccabe (0.6.1-2build1) ... Setting up python3-constantly (15.1.0-1build1) ... Setting up python3-anyjson (0.3.3-2) ... Setting up python3-msgpack (0.5.6-2) ... Setting up python3-singledispatch (3.4.0.3-2build1) ... Setting up python3-voluptuous (0.11.1-1build1) ... Setting up python3-logutils (0.3.3-7) ... Setting up python-pbr (5.4.4-0ubuntu1) ... update-alternatives: using /usr/bin/python2-pbr to provide /usr/bin/pbr (pbr) in auto mode Setting up python3-ubjson (0.14.0-2) ... Setting up python3-simplegeneric (0.8.1-2build1) ... Setting up python3-trie (0.2+ds-2) ... Setting up python3-pymongo (3.7.1-1.1build1) ... Setting up python3-prettytable (0.7.2-5) ... Setting up python3-lib2to3 (3.8.0-1) ... Setting up python3-appdirs (1.4.3-1build1) ... Setting up python3-asn1crypto (0.24.0-1build1) ... Setting up python3-soupsieve (1.9.5+dfsg-1) ... Setting up python3-mimeparse (1.6.0-2) ... Setting up python3-websocket (0.53.0-1) ... update-alternatives: using /usr/bin/python3-wsdump to provide /usr/bin/wsdump (wsdump) in auto mode Setting up python3-u-msgpack (2.1-1build1) ... Setting up python3-posix-ipc (0.9.8-3build3) ... Setting up python3-cffi-backend (1.13.2-1) ... Setting up python3-mako (1.1.0+ds1-1) ... Setting up python3-tinyrpc (0.6-3) ... Setting up python3-webob (1:1.8.5-1build1) ... Setting up python3-imagesize (1.2.0-1) ... Setting up python3-blinker (1.4+dfsg1-0.2build1) ... Setting up libkrb5-26-heimdal:amd64 (7.7.0+dfsg-1) ... Setting up python3-pkg-resources (41.4.0-1) ... Setting up python3-cbor (1.0.0-1.1) ... Setting up python3-entrypoints (0.3-1build1) ... Setting up python3-distutils (3.8.0-1) ... Setting up dh-python (4.20191017ubuntu1) ... Setting up python3-more-itertools (4.2.0-1build1) ... Setting up python3-attr (18.2.0-1build1) ... Setting up python3-dbus (1.2.14-1) ... Setting up libxmu6:amd64 (2:1.1.3-0ubuntu1) ... Setting up python3-waitress (1.4.1-1) ... Setting up python3-ddt (1.2.1-2ubuntu1) ... Setting up python3-setuptools (41.4.0-1) ... Setting up python3-repoze.lru (0.7-1build1) ... Setting up python3-py (1.8.0-1) ... Setting up python3-jwt (1.7.1-1) ... Setting up python3-cachetools (3.1.1-3) ... Setting up python3-babel (2.6.0+dfsg.1-1) ... update-alternatives: using /usr/bin/pybabel-python3 to provide /usr/bin/pybabel (pybabel) in auto mode Setting up python3-colorama (0.3.7-1) ... Setting up python3-lz4 (3.0.2+dfsg-1) ... Setting up python3-zope.interface (4.6.0-1) ... Setting up python3-pbr (5.4.4-0ubuntu1) ... Setting up python3-statsd (3.3.0-2build1) ... Setting up python3-alabaster (0.7.8-1build1) ... Setting up python3-os-traits (2.1.0-0ubuntu1) ... Setting up po-debconf (1.0.21) ... Setting up python3-jsonpatch (1.23-3) ... update-alternatives: using /usr/bin/jsonpatch-jsondiff to provide /usr/bin/jsondiff (jsondiff) in auto mode Setting up python3-tenacity (6.0.0-0ubuntu2) ... Setting up python3-bcrypt (3.1.7-2) ... Setting up python3-ply (3.11-3build1) ... Setting up python3-pyinotify (0.9.6-1.2build1) ... Setting up python3-automat (0.6.0-1) ... Setting up python3-pyflakes (2.1.1-1) ... Setting up python3-wsgi-intercept (1.8.0-0ubuntu2) ... Setting up python3-extras (1.0.0-3) ... Setting up python3-jsonpath-rw (1.4.0-4) ... Setting up python3-twisted-bin:amd64 (18.9.0-5) ... Setting up python3-memcache (1.59-3build1) ... /usr/lib/python3/dist-packages/memcache.py:1303: SyntaxWarning: "is" with a literal. Did you mean "=="? if key is '': /usr/lib/python3/dist-packages/memcache.py:1304: SyntaxWarning: "is" with a literal. Did you mean "=="? if key_extra_len is 0: Setting up python3-traceback2 (1.4.0-5build1) ... Setting up python3-all (3.7.5-1ubuntu1) ... Setting up python3-requestsexceptions (1.4.0-3) ... Setting up python3-coverage (4.5.2+dfsg.1-4) ... Setting up python3-yaml (5.1.2-1build1) ... Setting up python3-futurist (1.9.0-2) ... Setting up python3-hamcrest (1.9.0-2) ... Setting up python3-debtcollector (1.21.0-2ubuntu1) ... Setting up python3-openvswitch (2.12.1~git20191107.7accd1302-0ubuntu1) ... Setting up python3-zipp (0.6.0-1) ... Setting up python3-kombu (4.2.1-4) ... Setting up libheimntlm0-heimdal:amd64 (7.7.0+dfsg-1) ... Setting up python3-munch (2.3.2-2) ... Setting up openstack-pkg-tools (99ubuntu1) ... Setting up python3-bs4 (4.8.2-1) ... Setting up python3-flake8 (3.7.9-1) ... Setting up python3-mock (3.0.5-1) ... Setting up python3-dogpile.cache (0.7.1-1ubuntu1) ... Setting up python3-routes (2.4.1-1) ... Setting up python3-eventlet (0.25.0-0ubuntu1) ... /usr/lib/python3/dist-packages/eventlet/db_pool.py:78: SyntaxWarning: "is" with a literal. Did you mean "=="? if self.max_age is 0 or self.max_idle is 0: /usr/lib/python3/dist-packages/eventlet/db_pool.py:78: SyntaxWarning: "is" with a literal. Did you mean "=="? if self.max_age is 0 or self.max_idle is 0: Setting up python3-packaging (19.1-2) ... Setting up python3-chardet (3.0.4-4) ... Setting up libgssapi3-heimdal:amd64 (7.7.0+dfsg-1) ... Setting up python3-paste (3.2.3+dfsg1-1) ... Setting up python3-jsonschema (2.6.0-4ubuntu2) ... update-alternatives: using /usr/bin/python3-jsonschema to provide /usr/bin/jsonschema (jsonschema) in auto mode Setting up python3-pyasn1-modules (0.2.1-0.2build1) ... Setting up python3-cryptography (2.6.1-4) ... Setting up python3-requests (2.21.0-1) ... Setting up python3-hyperlink (19.0.0-1) ... Setting up python3-service-identity (18.1.0-5build1) ... Setting up python3-unittest2 (1.1.0-6.1build1) ... update-alternatives: using /usr/bin/python3-unit2 to provide /usr/bin/unit2 (unit2) in auto mode Setting up xclip (0.13-1) ... Setting up python3-jsonpath-rw-ext (1.2.2-2) ... Setting up python3-deprecation (2.0.7-1) ... Setting up python3-oslo.context (1:2.23.0-0ubuntu1) ... Setting up mongodb-server (1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2) ... Running in chroot, ignoring request. invoke-rc.d: policy-rc.d denied execution of start. Created symlink /etc/systemd/system/multi-user.target.wants/mongodb.service → /lib/systemd/system/mongodb.service. Setting up python3-alembic (1.1.0-1ubuntu1) ... Setting up python3-openstackdocstheme (1.31.1-0ubuntu2) ... Setting up python3-os-service-types (1.7.0-0ubuntu1) ... Setting up python3-stevedore (1:1.31.0-0ubuntu1) ... Setting up python3-future (0.16.0-1) ... update-alternatives: using /usr/bin/python3-futurize to provide /usr/bin/futurize (futurize) in auto mode update-alternatives: using /usr/bin/python3-pasteurize to provide /usr/bin/pasteurize (pasteurize) in auto mode Setting up python3-migrate (0.12.0-3) ... Setting up python3-nacl (1.3.0-3) ... Setting up python3-oslo.i18n (3.25.0-0ubuntu1) ... Setting up python3-pep8 (1.7.1-8) ... Setting up alembic (1.1.0-1ubuntu1) ... Setting up pyflakes3 (2.1.1-1) ... Setting up python3-testresources (2.0.0-2build1) ... Setting up python3-importlib-metadata (0.23-2ubuntu1) ... Setting up python3-openssl (19.0.0-1) ... Setting up python3-pastedeploy (2.0.1-1build1) ... Setting up libldap-2.4-2:amd64 (2.4.48+dfsg-1ubuntu3) ... Setting up mongodb (1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2) ... Setting up python3-pyperclip (1.7.0-1) ... Setting up libcurl3-gnutls:amd64 (7.66.0-1ubuntu1) ... Setting up python3-oslo.utils (3.41.1-0ubuntu2) ... Setting up python3-falcon (1.4.1-2) ... Setting up flake8 (3.7.9-1) ... Setting up python3-oauthlib (2.1.0-1) ... Setting up python3-secretstorage (2.3.1-2build1) ... Setting up python3-cmd2 (0.8.5-2.1) ... Setting up python3-twisted (18.9.0-5) ... /usr/lib/python3/dist-packages/twisted/conch/client/knownhosts.py:492: SyntaxWarning: "is" with a literal. Did you mean "=="? if keytype is "EC": Setting up git (1:2.24.0-1ubuntu1) ... Setting up python3-pluggy (0.13.0-2) ... Setting up python3-reno (2.11.2-2) ... Setting up python3-keyring (18.0.1-1build1) ... Setting up python3-txaio (2.10.0-1) ... Setting up python3-autobahn (17.10.1+dfsg1-6) ... Setting up python3-webtest (2.0.32-1ubuntu1) ... Setting up python3-paramiko (2.6.0-1) ... Setting up python3-keystoneauth1 (3.18.0-0ubuntu1) ... Setting up python3-hacking (1.1.0-4) ... /usr/lib/python3/dist-packages/hacking/checks/comments.py:62: SyntaxWarning: "is" with a literal. Did you mean "=="? if line_number is 1 and len(lines) > 10 and _project_is_apache(): /usr/lib/python3/dist-packages/hacking/checks/comments.py:84: SyntaxWarning: "is" with a literal. Did you mean "=="? if line_number is 1 and len(lines) > 10 and _project_is_apache(): /usr/lib/python3/dist-packages/hacking/checks/docstrings.py:121: SyntaxWarning: "is not" with a literal. Did you mean "!="? if len(lines) > 1 and len(lines[1].strip()) is not 0: Setting up python3-pecan (1.3.3-0ubuntu2) ... Setting up python3-pytest (4.6.6-1ubuntu4) ... Setting up python3-oslo.serialization (2.29.2-0ubuntu2) ... Setting up python3-openstacksdk (0.38.0-0ubuntu1) ... Setting up python3-os-client-config (1.31.2-0ubuntu2) ... Setting up python3-oslo.reports (1.30.0-0ubuntu1) ... Setting up dh-autoreconf (19) ... Setting up python3-fixtures (3.0.0-2) ... Setting up python3-testtools (2.3.0-5) ... Setting up debhelper (12.7.1ubuntu1) ... Setting up python3-subunit (1.3.0-6build1) ... Setting up python3-testrepository (0.0.20-5) ... Setting up testrepository (0.0.20-5) ... Setting up python3-mox3 (0.28.0-2) ... Setting up python3-testscenarios (0.5.0-3build1) ... Setting up python3-gabbi (1.44.0-0ubuntu3) ... Setting up subunit (1.3.0-6build1) ... Processing triggers for libc-bin (2.30-0ubuntu3) ... Processing triggers for systemd (244-3ubuntu1) ... Processing triggers for sgml-base (1.29.1) ... Setting up docutils-common (0.15.2+dfsg-1) ... Processing triggers for sgml-base (1.29.1) ... Setting up python3-docutils (0.15.2+dfsg-1) ... update-alternatives: using /usr/share/docutils/scripts/python3/rst-buildhtml to provide /usr/bin/rst-buildhtml (rst-buildhtml) in auto mode update-alternatives: using /usr/share/docutils/scripts/python3/rst2html to provide /usr/bin/rst2html (rst2html) in auto mode update-alternatives: using /usr/share/docutils/scripts/python3/rst2html4 to provide /usr/bin/rst2html4 (rst2html4) in auto mode update-alternatives: using /usr/share/docutils/scripts/python3/rst2html5 to provide /usr/bin/rst2html5 (rst2html5) in auto mode update-alternatives: using /usr/share/docutils/scripts/python3/rst2latex to provide /usr/bin/rst2latex (rst2latex) in auto mode update-alternatives: using /usr/share/docutils/scripts/python3/rst2man to provide /usr/bin/rst2man (rst2man) in auto mode update-alternatives: using /usr/share/docutils/scripts/python3/rst2odt to provide /usr/bin/rst2odt (rst2odt) in auto mode update-alternatives: using /usr/share/docutils/scripts/python3/rst2odt_prepstyles to provide /usr/bin/rst2odt_prepstyles (rst2odt_prepstyles) in auto mode update-alternatives: using /usr/share/docutils/scripts/python3/rst2pseudoxml to provide /usr/bin/rst2pseudoxml (rst2pseudoxml) in auto mode update-alternatives: using /usr/share/docutils/scripts/python3/rst2s5 to provide /usr/bin/rst2s5 (rst2s5) in auto mode update-alternatives: using /usr/share/docutils/scripts/python3/rst2xetex to provide /usr/bin/rst2xetex (rst2xetex) in auto mode update-alternatives: using /usr/share/docutils/scripts/python3/rst2xml to provide /usr/bin/rst2xml (rst2xml) in auto mode update-alternatives: using /usr/share/docutils/scripts/python3/rstpep2html to provide /usr/bin/rstpep2html (rstpep2html) in auto mode Setting up python3-restructuredtext-lint (1.3.0-2) ... Setting up python3-doc8 (0.8.0-4) ... Setting up python3-cliff (2.16.0-0ubuntu1) ... Setting up python3-oslo.config (1:6.12.0-0ubuntu2) ... Setting up python3-oslo.upgradecheck (0.3.2-0ubuntu1) ... Setting up python3-os-ken (0.4.1-0ubuntu1) ... /usr/lib/python3/dist-packages/os_ken/lib/packet/cfm.py:271: SyntaxWarning: "is not" with a literal. Did you mean "!="? assert interval is not 0 Setting up python3-oslo.middleware (3.38.1-0ubuntu2) ... Setting up python3-keystoneclient (1:3.22.0-0ubuntu1) ... Setting up python3-oslo.db (5.0.2-3ubuntu1) ... Setting up python3-oslo.concurrency (3.30.0-0ubuntu1) ... Setting up python3-sphinx (1.8.5-4) ... update-alternatives: using /usr/share/sphinx/scripts/python3/sphinx-apidoc to provide /usr/bin/sphinx-apidoc (sphinx-apidoc) in auto mode update-alternatives: using /usr/share/sphinx/scripts/python3/sphinx-autogen to provide /usr/bin/sphinx-autogen (sphinx-autogen) in auto mode update-alternatives: using /usr/share/sphinx/scripts/python3/sphinx-build to provide /usr/bin/sphinx-build (sphinx-build) in auto mode update-alternatives: using /usr/share/sphinx/scripts/python3/sphinx-quickstart to provide /usr/bin/sphinx-quickstart (sphinx-quickstart) in auto mode Setting up python3-swiftclient (1:3.8.1-0ubuntu1) ... Setting up python3-oslo.log (3.45.0-0ubuntu3) ... Setting up python3-pycadf (2.10.0-2) ... Setting up python3-oslo.policy (2.4.0-0ubuntu1) ... Setting up python3-stestr (2.4.0-2) ... Setting up python3-sphinxcontrib.apidoc (0.3.0-2ubuntu1) ... Setting up python3-oslo.service (1.40.2-0ubuntu2) ... Setting up python3-oslotest (1:3.8.1-0ubuntu1) ... Setting up python3-osprofiler (2.8.2-0ubuntu2) ... Setting up python3-oslo.messaging (9.7.1-0ubuntu3) ... Setting up python3-os-api-ref (1.6.2+dfsg1-0ubuntu1) ... /usr/lib/python3/dist-packages/os_api_ref/__init__.py:334: SyntaxWarning: "is not" with a literal. Did you mean "!="? if len(self.env.path_params) is not 0: Setting up python3-oslo.cache (1.38.0-0ubuntu2) ... Setting up python3-os-testr (1.0.0-5ubuntu3) ... Setting up python3-oslo.versionedobjects (1.36.1-0ubuntu2) ... Setting up python3-keystonemiddleware (7.0.1-0ubuntu1) ... Setting up python3-neutron-lib (1.30.0-0ubuntu1) ... Setting up python3-neutron-tempest-plugin (0.2.0-1) ... Setting up python3-tempest (1:22.0.0-0ubuntu1) ... /usr/lib/python3/dist-packages/tempest/api/volume/test_volumes_snapshots_list.py:112: SyntaxWarning: "is" with a literal. Did you mean "=="? if sort_key is 'display_name': /usr/lib/python3/dist-packages/tempest/lib/auth.py:687: SyntaxWarning: "is not" with a literal. Did you mean "!="? attrs = [attr for attr in self.ATTRIBUTES if attr is not 'password'] /usr/lib/python3/dist-packages/tempest/lib/auth.py:744: SyntaxWarning: "is not" with a literal. Did you mean "!="? attrs = [attr for attr in self.ATTRIBUTES if attr is not 'password'] /usr/lib/python3/dist-packages/tempest/tests/lib/services/object_storage/test_object_client.py:72: SyntaxWarning: "is" with a literal. Did you mean "=="? if initial_status is 100: /usr/lib/python3/dist-packages/tempest/tests/lib/services/object_storage/test_object_client.py:94: SyntaxWarning: "is" with a literal. Did you mean "=="? if initial_status is 100: Setting up tempest (1:22.0.0-0ubuntu1) ... Setting up sbuild-build-depends-zaqar-dummy (0.invalid.0) ... +------------------------------------------------------------------------------+ | Build environment | +------------------------------------------------------------------------------+ Kernel: Linux 4.4.0-170-generic amd64 (x86_64) Toolchain package versions: binutils_2.33.1-6ubuntu3 dpkg-dev_1.19.7ubuntu2 g++-9_9.2.1-21ubuntu1 gcc-9_9.2.1-21ubuntu1 libc6-dev_2.30-0ubuntu3 libstdc++-9-dev_9.2.1-21ubuntu1 libstdc++6_9.2.1-21ubuntu1 linux-libc-dev_5.3.0-24.26 Package versions: adduser_3.118ubuntu1 advancecomp_2.1-2.1 alembic_1.1.0-1ubuntu1 apt_1.9.5 autoconf_2.69-11ubuntu1 automake_1:1.16.1-4ubuntu3 autopoint_0.19.8.1-10 autotools-dev_20180224.1 base-files_11ubuntu2 base-passwd_3.5.47 bash_5.0-5ubuntu1 binutils_2.33.1-6ubuntu3 binutils-common_2.33.1-6ubuntu3 binutils-x86-64-linux-gnu_2.33.1-6ubuntu3 bsdmainutils_11.1.2ubuntu2 bsdutils_1:2.34-0.1ubuntu4 build-essential_12.8ubuntu1 bzip2_1.0.8-2 ca-certificates_20190110 coreutils_8.30-3ubuntu2 cpp_4:9.2.1-3.1ubuntu1 cpp-9_9.2.1-21ubuntu1 cython3_0.29.14-0.1 dash_0.5.10.2-6 dbus_1.12.16-2ubuntu2 debconf_1.5.73 debhelper_12.7.1ubuntu1 debianutils_4.9.1 dh-autoreconf_19 dh-python_4.20191017ubuntu1 dh-strip-nondeterminism_1.6.3-1 diffutils_1:3.7-3 docutils-common_0.15.2+dfsg-1 dpkg_1.19.7ubuntu2 dpkg-dev_1.19.7ubuntu2 dwz_0.13-5 e2fsprogs_1.45.3-4ubuntu2 fakeroot_1.24-1 fdisk_2.34-0.1ubuntu4 file_1:5.37-6 findutils_4.6.0+git+20190209-2ubuntu1 flake8_3.7.9-1 fonts-glyphicons-halflings_1.009~3.4.1+dfsg-1 g++_4:9.2.1-3.1ubuntu1 g++-9_9.2.1-21ubuntu1 gcc_4:9.2.1-3.1ubuntu1 gcc-9_9.2.1-21ubuntu1 gcc-9-base_9.2.1-21ubuntu1 gettext_0.19.8.1-10 gettext-base_0.19.8.1-10 git_1:2.24.0-1ubuntu1 git-man_1:2.24.0-1ubuntu1 gpg_2.2.17-3ubuntu1 gpg-agent_2.2.17-3ubuntu1 gpgconf_2.2.17-3ubuntu1 gpgv_2.2.17-3ubuntu1 grep_3.3-1build1 groff-base_1.22.4-4 gzip_1.10-0ubuntu4 hostname_3.23 ieee-data_20180805.1 init_1.57 init-system-helpers_1.57 intltool-debian_0.35.0+20060710.5 jq_1.6-1 libacl1_2.2.53-5ubuntu1 libapparmor1_2.13.3-7ubuntu1 libapt-pkg5.90_1.9.5 libarchive-zip-perl_1.67-1 libargon2-1_0~20171227-0.2 libasan5_9.2.1-21ubuntu1 libasn1-8-heimdal_7.7.0+dfsg-1 libassuan0_2.5.3-7ubuntu1 libatomic1_9.2.1-21ubuntu1 libattr1_1:2.4.48-5 libaudit-common_1:2.8.5-2ubuntu5 libaudit1_1:2.8.5-2ubuntu5 libbinutils_2.33.1-6ubuntu3 libblkid1_2.34-0.1ubuntu4 libboost-filesystem1.67.0_1.67.0-13ubuntu2 libboost-iostreams1.67.0_1.67.0-13ubuntu2 libboost-program-options1.67.0_1.67.0-13ubuntu2 libboost-system1.67.0_1.67.0-13ubuntu2 libbrotli1_1.0.7-5 libbsd0_0.10.0-1 libbz2-1.0_1.0.8-2 libc-bin_2.30-0ubuntu3 libc-dev-bin_2.30-0ubuntu3 libc6_2.30-0ubuntu3 libc6-dev_2.30-0ubuntu3 libcap-ng0_0.7.9-2.1 libcap2_1:2.27-1 libcc1-0_9.2.1-21ubuntu1 libcom-err2_1.45.3-4ubuntu2 libcroco3_0.6.13-1 libcryptsetup12_2:2.2.2-1ubuntu1 libcurl3-gnutls_7.66.0-1ubuntu1 libdb5.3_5.3.28+dfsg1-0.6ubuntu1 libdbus-1-3_1.12.16-2ubuntu2 libdebconfclient0_0.250ubuntu2 libdebhelper-perl_12.7.1ubuntu1 libdevmapper1.02.1_2:1.02.155-2ubuntu7 libdpkg-perl_1.19.7ubuntu2 libelf1_0.176-1.1 liberror-perl_0.17028-1 libexpat1_2.2.9-1 libext2fs2_1.45.3-4ubuntu2 libfakeroot_1.24-1 libfdisk1_2.34-0.1ubuntu4 libffi6_3.2.1-9 libfile-stripnondeterminism-perl_1.6.3-1 libgcc-9-dev_9.2.1-21ubuntu1 libgcc1_1:9.2.1-21ubuntu1 libgcrypt20_1.8.5-3ubuntu1 libgdbm-compat4_1.18.1-5 libgdbm6_1.18.1-5 libglib2.0-0_2.63.3-1 libgmp10_2:6.1.2+dfsg-4 libgnutls30_3.6.11.1-2 libgomp1_9.2.1-21ubuntu1 libgoogle-perftools4_2.5-2.2ubuntu3 libgpg-error0_1.36-7 libgssapi-krb5-2_1.17-6 libgssapi3-heimdal_7.7.0+dfsg-1 libhcrypto4-heimdal_7.7.0+dfsg-1 libheimbase1-heimdal_7.7.0+dfsg-1 libheimntlm0-heimdal_7.7.0+dfsg-1 libhogweed4_3.4.1-1 libhogweed5_3.5.1+really3.5.1-2 libhx509-5-heimdal_7.7.0+dfsg-1 libice6_2:1.0.10-0ubuntu1 libicu63_63.2-2 libidn2-0_2.2.0-2 libip4tc2_1.8.3-2ubuntu5 libisl21_0.21-2 libisl22_0.22-2 libitm1_9.2.1-21ubuntu1 libjq1_1.6-1 libjs-bootstrap_3.4.1+dfsg-1 libjs-jquery_3.3.1~dfsg-3 libjs-sphinxdoc_1.8.5-4 libjs-underscore_1.9.1~dfsg-1 libjson-c4_0.13.1+dfsg-6 libk5crypto3_1.17-6 libkeyutils1_1.6-6ubuntu1 libkmod2_26-3ubuntu1 libkrb5-26-heimdal_7.7.0+dfsg-1 libkrb5-3_1.17-6 libkrb5support0_1.17-6 libldap-2.4-2_2.4.48+dfsg-1ubuntu3 libldap-common_2.4.48+dfsg-1ubuntu3 liblockfile-bin_1.16-1.1 liblockfile1_1.16-1.1 liblsan0_9.2.1-21ubuntu1 liblz4-1_1.9.2-2 liblzma5_5.2.4-1 libmagic-mgc_1:5.37-6 libmagic1_1:5.37-6 libmount1_2.34-0.1ubuntu4 libmpc3_1.1.0-1 libmpdec2_2.4.2-2 libmpfr6_4.0.2-1 libncurses6_6.1+20191019-1ubuntu1 libncursesw6_6.1+20191019-1ubuntu1 libnettle6_3.4.1-1 libnettle7_3.5.1+really3.5.1-2 libnghttp2-14_1.40.0-1 libnpth0_1.6-1 libonig5_6.9.4-1 libp11-kit0_0.23.18.1-2 libpam-modules_1.3.1-5ubuntu4 libpam-modules-bin_1.3.1-5ubuntu4 libpam-runtime_1.3.1-5ubuntu4 libpam0g_1.3.1-5ubuntu4 libpcre2-8-0_10.34-7 libpcre3_2:8.39-12 libpcrecpp0v5_2:8.39-12 libperl5.28_5.28.1-6build1 libperl5.30_5.30.0-9 libpipeline1_1.5.1-3 libpng16-16_1.6.37-1 libprocps7_2:3.3.15-2ubuntu3 libpsl5_0.20.2-2 libpython-stdlib_2.7.17-1 libpython2-stdlib_2.7.17-1 libpython2.7-minimal_2.7.17-1 libpython2.7-stdlib_2.7.17-1 libpython3-stdlib_3.7.5-1ubuntu1 libpython3.7-minimal_3.7.5-2 libpython3.7-stdlib_3.7.5-2 libpython3.8-minimal_3.8.0-5 libpython3.8-stdlib_3.8.0-5 libquadmath0_9.2.1-21ubuntu1 libreadline8_8.0-3 libroken18-heimdal_7.7.0+dfsg-1 librtmp1_2.4+20151223.gitfa8646d.1-2build1 libsasl2-2_2.1.27+dfsg-2 libsasl2-modules-db_2.1.27+dfsg-2 libseccomp2_2.4.2-2ubuntu1 libselinux1_3.0-1 libsemanage-common_3.0-1 libsemanage1_3.0-1 libsepol1_3.0-1 libsigsegv2_2.12-2 libsm6_2:1.2.3-1 libsmartcols1_2.34-0.1ubuntu4 libsnappy1v5_1.1.7-2 libsodium23_1.0.18-1 libsqlite3-0_3.30.1-1ubuntu1 libss2_1.45.3-4ubuntu2 libssh-4_0.9.0-1ubuntu5 libssl1.1_1.1.1c-1ubuntu4 libstdc++-9-dev_9.2.1-21ubuntu1 libstdc++6_9.2.1-21ubuntu1 libstemmer0d_0+svn585-1.1 libsub-override-perl_0.09-2 libsubunit-perl_1.3.0-6build1 libsystemd0_244-3ubuntu1 libtasn1-6_4.15.0-2 libtcmalloc-minimal4_2.5-2.2ubuntu3 libtinfo6_6.1+20191019-1ubuntu1 libtool_2.4.6-11 libtsan0_9.2.1-21ubuntu1 libubsan1_9.2.1-21ubuntu1 libuchardet0_0.0.6-3 libudev1_244-3ubuntu1 libunistring2_0.9.10-2 libunwind8_1.2.1-9 libuuid1_2.34-0.1ubuntu4 libwind0-heimdal_7.7.0+dfsg-1 libx11-6_2:1.6.8-1 libx11-data_2:1.6.8-1 libxau6_1:1.0.9-0ubuntu1 libxcb1_1.13.1-2 libxdmcp6_1:1.1.3-0ubuntu1 libxext6_2:1.3.4-0ubuntu1 libxml2_2.9.4+dfsg1-8ubuntu1 libxmu6_2:1.1.3-0ubuntu1 libxslt1.1_1.1.33-0ubuntu2 libxt6_1:1.1.5-1 libyaml-0-2_0.2.2-1 libyaml-cpp0.6_0.6.2-4fakesync1 libzstd1_1.4.4+dfsg-1 linux-libc-dev_5.3.0-24.26 lockfile-progs_0.1.18 login_1:4.5-1.1ubuntu4 logsave_1.45.3-4ubuntu2 lsb-base_11.1.0ubuntu2 m4_1.4.18-4 make_4.2.1-1.2 man-db_2.9.0-2 mawk_1.3.3-17ubuntu3 mime-support_3.64ubuntu1 mongodb_1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2 mongodb-clients_1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2 mongodb-server_1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2 mongodb-server-core_1:3.6.9+really3.6.8+90~g8e540c0b6d-0ubuntu2 mount_2.34-0.1ubuntu4 ncurses-base_6.1+20191019-1ubuntu1 ncurses-bin_6.1+20191019-1ubuntu1 netbase_5.6 openssl_1.1.1c-1ubuntu4 openstack-pkg-tools_99ubuntu1 optipng_0.7.7-1 passwd_1:4.5-1.1ubuntu4 patch_2.7.6-6 perl_5.30.0-9 perl-base_5.30.0-9 perl-modules-5.28_5.28.1-6build1 perl-modules-5.30_5.30.0-9 pinentry-curses_1.1.0-3 pkgbinarymangler_144 po-debconf_1.0.21 policyrcd-script-zg2_0.1-3 procps_2:3.3.15-2ubuntu3 pycadf-common_2.10.0-2 pyflakes3_2.1.1-1 python_2.7.17-1 python-all_2.7.17-1 python-babel-localedata_2.6.0+dfsg.1-1 python-minimal_2.7.17-1 python-os-api-ref-common_1.6.2+dfsg1-0ubuntu1 python-pastedeploy-tpl_2.0.1-1build1 python-pbr_5.4.4-0ubuntu1 python-pkg-resources_41.4.0-1 python-setuptools_41.4.0-1 python-six_1.12.0-2build1 python2_2.7.17-1 python2-minimal_2.7.17-1 python2.7_2.7.17-1 python2.7-minimal_2.7.17-1 python3_3.7.5-1ubuntu1 python3-alabaster_0.7.8-1build1 python3-alembic_1.1.0-1ubuntu1 python3-all_3.7.5-1ubuntu1 python3-amqp_2.5.2-0ubuntu1 python3-anyjson_0.3.3-2 python3-appdirs_1.4.3-1build1 python3-asn1crypto_0.24.0-1build1 python3-atomicwrites_1.1.5-2build1 python3-attr_18.2.0-1build1 python3-autobahn_17.10.1+dfsg1-6 python3-automat_0.6.0-1 python3-babel_2.6.0+dfsg.1-1 python3-bcrypt_3.1.7-2 python3-blinker_1.4+dfsg1-0.2build1 python3-bs4_4.8.2-1 python3-bson_3.7.1-1.1build1 python3-cachetools_3.1.1-3 python3-cbor_1.0.0-1.1 python3-certifi_2019.11.28-1 python3-cffi-backend_1.13.2-1 python3-chardet_3.0.4-4 python3-cliff_2.16.0-0ubuntu1 python3-cmd2_0.8.5-2.1 python3-colorama_0.3.7-1 python3-constantly_15.1.0-1build1 python3-coverage_4.5.2+dfsg.1-4 python3-cryptography_2.6.1-4 python3-dateutil_2.7.3-3 python3-dbus_1.2.14-1 python3-ddt_1.2.1-2ubuntu1 python3-debtcollector_1.21.0-2ubuntu1 python3-decorator_4.3.0-1.1build1 python3-deprecation_2.0.7-1 python3-distutils_3.8.0-1 python3-dnspython_1.16.0-1build1 python3-doc8_0.8.0-4 python3-docutils_0.15.2+dfsg-1 python3-dogpile.cache_0.7.1-1ubuntu1 python3-dulwich_0.19.11-2 python3-entrypoints_0.3-1build1 python3-eventlet_0.25.0-0ubuntu1 python3-extras_1.0.0-3 python3-falcon_1.4.1-2 python3-fasteners_0.14.1-2 python3-fixtures_3.0.0-2 python3-flake8_3.7.9-1 python3-funcsigs_1.0.2-4build1 python3-future_0.16.0-1 python3-futurist_1.9.0-2 python3-gabbi_1.44.0-0ubuntu3 python3-greenlet_0.4.15-3 python3-hacking_1.1.0-4 python3-hamcrest_1.9.0-2 python3-httplib2_0.11.3-2build1 python3-hyperlink_19.0.0-1 python3-idna_2.6-2build1 python3-imagesize_1.2.0-1 python3-importlib-metadata_0.23-2ubuntu1 python3-incremental_16.10.1-3.1 python3-iso8601_0.1.11-2 python3-jinja2_2.10-2ubuntu2 python3-jmespath_0.9.4-2 python3-json-pointer_1.10-2 python3-jsonpatch_1.23-3 python3-jsonpath-rw_1.4.0-4 python3-jsonpath-rw-ext_1.2.2-2 python3-jsonschema_2.6.0-4ubuntu2 python3-jwt_1.7.1-1 python3-keyring_18.0.1-1build1 python3-keystoneauth1_3.18.0-0ubuntu1 python3-keystoneclient_1:3.22.0-0ubuntu1 python3-keystonemiddleware_7.0.1-0ubuntu1 python3-kombu_4.2.1-4 python3-lib2to3_3.8.0-1 python3-linecache2_1.0.0-3build1 python3-logutils_0.3.3-7 python3-lxml_4.4.1-1build1 python3-lz4_3.0.2+dfsg-1 python3-mako_1.1.0+ds1-1 python3-markupsafe_1.1.0-1build1 python3-mccabe_0.6.1-2build1 python3-memcache_1.59-3build1 python3-migrate_0.12.0-3 python3-mimeparse_1.6.0-2 python3-minimal_3.7.5-1ubuntu1 python3-mock_3.0.5-1 python3-monotonic_1.5-0ubuntu2 python3-more-itertools_4.2.0-1build1 python3-mox3_0.28.0-2 python3-msgpack_0.5.6-2 python3-munch_2.3.2-2 python3-nacl_1.3.0-3 python3-netaddr_0.7.19-1 python3-netifaces_0.10.4-1ubuntu1 python3-neutron-lib_1.30.0-0ubuntu1 python3-neutron-tempest-plugin_0.2.0-1 python3-oauthlib_2.1.0-1 python3-openssl_19.0.0-1 python3-openstackdocstheme_1.31.1-0ubuntu2 python3-openstacksdk_0.38.0-0ubuntu1 python3-openvswitch_2.12.1~git20191107.7accd1302-0ubuntu1 python3-os-api-ref_1.6.2+dfsg1-0ubuntu1 python3-os-client-config_1.31.2-0ubuntu2 python3-os-ken_0.4.1-0ubuntu1 python3-os-service-types_1.7.0-0ubuntu1 python3-os-testr_1.0.0-5ubuntu3 python3-os-traits_2.1.0-0ubuntu1 python3-oslo.cache_1.38.0-0ubuntu2 python3-oslo.concurrency_3.30.0-0ubuntu1 python3-oslo.config_1:6.12.0-0ubuntu2 python3-oslo.context_1:2.23.0-0ubuntu1 python3-oslo.db_5.0.2-3ubuntu1 python3-oslo.i18n_3.25.0-0ubuntu1 python3-oslo.log_3.45.0-0ubuntu3 python3-oslo.messaging_9.7.1-0ubuntu3 python3-oslo.middleware_3.38.1-0ubuntu2 python3-oslo.policy_2.4.0-0ubuntu1 python3-oslo.reports_1.30.0-0ubuntu1 python3-oslo.serialization_2.29.2-0ubuntu2 python3-oslo.service_1.40.2-0ubuntu2 python3-oslo.upgradecheck_0.3.2-0ubuntu1 python3-oslo.utils_3.41.1-0ubuntu2 python3-oslo.versionedobjects_1.36.1-0ubuntu2 python3-oslotest_1:3.8.1-0ubuntu1 python3-osprofiler_2.8.2-0ubuntu2 python3-packaging_19.1-2 python3-paramiko_2.6.0-1 python3-paste_3.2.3+dfsg1-1 python3-pastedeploy_2.0.1-1build1 python3-pbr_5.4.4-0ubuntu1 python3-pecan_1.3.3-0ubuntu2 python3-pep8_1.7.1-8 python3-pkg-resources_41.4.0-1 python3-pluggy_0.13.0-2 python3-ply_3.11-3build1 python3-posix-ipc_0.9.8-3build3 python3-prettytable_0.7.2-5 python3-psutil_5.5.1-1ubuntu1 python3-py_1.8.0-1 python3-pyasn1_0.4.2-3build1 python3-pyasn1-modules_0.2.1-0.2build1 python3-pycadf_2.10.0-2 python3-pycodestyle_2.5.0-1 python3-pyflakes_2.1.1-1 python3-pygments_2.3.1+dfsg-1ubuntu2 python3-pyinotify_0.9.6-1.2build1 python3-pymongo_3.7.1-1.1build1 python3-pymysql_0.9.3-1 python3-pyparsing_2.4.2-1 python3-pyperclip_1.7.0-1 python3-pyqrcode_1.2.1-4 python3-pytest_4.6.6-1ubuntu4 python3-redis_3.3.11-1ubuntu1 python3-reno_2.11.2-2 python3-repoze.lru_0.7-1build1 python3-requests_2.21.0-1 python3-requestsexceptions_1.4.0-3 python3-restructuredtext-lint_1.3.0-2 python3-rfc3986_1.3.2-0ubuntu2 python3-roman_2.0.0-3build1 python3-routes_2.4.1-1 python3-secretstorage_2.3.1-2build1 python3-service-identity_18.1.0-5build1 python3-setproctitle_1.1.10-1build5 python3-setuptools_41.4.0-1 python3-simplegeneric_0.8.1-2build1 python3-singledispatch_3.4.0.3-2build1 python3-six_1.12.0-2build1 python3-snappy_0.5.3-1.1 python3-sortedcontainers_2.1.0-1build1 python3-soupsieve_1.9.5+dfsg-1 python3-sphinx_1.8.5-4 python3-sphinxcontrib.apidoc_0.3.0-2ubuntu1 python3-sqlalchemy_1.2.18+ds1-2ubuntu3 python3-sqlparse_0.2.4-1build1 python3-statsd_3.3.0-2build1 python3-stestr_2.4.0-2 python3-stevedore_1:1.31.0-0ubuntu1 python3-subunit_1.3.0-6build1 python3-swiftclient_1:3.8.1-0ubuntu1 python3-tempest_1:22.0.0-0ubuntu1 python3-tempita_0.5.2-5 python3-tenacity_6.0.0-0ubuntu2 python3-testrepository_0.0.20-5 python3-testresources_2.0.0-2build1 python3-testscenarios_0.5.0-3build1 python3-testtools_2.3.0-5 python3-tinyrpc_0.6-3 python3-traceback2_1.4.0-5build1 python3-trie_0.2+ds-2 python3-twisted_18.9.0-5 python3-twisted-bin_18.9.0-5 python3-txaio_2.10.0-1 python3-tz_2019.3-1 python3-u-msgpack_2.1-1build1 python3-ubjson_0.14.0-2 python3-unittest2_1.1.0-6.1build1 python3-urllib3_1.24.1-1ubuntu2 python3-vine_1.3.0+dfsg-1 python3-voluptuous_0.11.1-1build1 python3-waitress_1.4.1-1 python3-wcwidth_0.1.7+dfsg1-6build1 python3-webob_1:1.8.5-1build1 python3-websocket_0.53.0-1 python3-webtest_2.0.32-1ubuntu1 python3-wrapt_1.11.2-2 python3-wsaccel_0.6.2-2 python3-wsgi-intercept_1.8.0-0ubuntu2 python3-yaml_5.1.2-1build1 python3-zipp_0.6.0-1 python3-zope.interface_4.6.0-1 python3.7_3.7.5-2 python3.7-minimal_3.7.5-2 python3.8_3.8.0-5 python3.8-minimal_3.8.0-5 readline-common_8.0-3 sbuild-build-depends-core-dummy_0.invalid.0 sbuild-build-depends-zaqar-dummy_0.invalid.0 sed_4.7-1 sensible-utils_0.0.12+nmu1 sgml-base_1.29.1 sphinx-common_1.8.5-4 subunit_1.3.0-6build1 systemd_244-3ubuntu1 systemd-sysv_244-3ubuntu1 sysvinit-utils_2.96-1ubuntu1 tar_1.30+dfsg-6 tempest_1:22.0.0-0ubuntu1 testrepository_0.0.20-5 tzdata_2019c-3 ubuntu-keyring_2018.09.18.1 util-linux_2.34-0.1ubuntu4 wget_1.20.3-1ubuntu1 x11-common_1:7.7+19ubuntu12 xclip_0.13-1 xml-core_0.18+nmu1 xz-utils_5.2.4-1 zlib1g_1:1.2.11.dfsg-1ubuntu3 +------------------------------------------------------------------------------+ | Build | +------------------------------------------------------------------------------+ Unpack source ------------- gpgv: Signature made Wed Oct 16 16:17:36 2019 UTC gpgv: using RSA key AB23E9A98422889E08C3838CBFECAECBA0E7D8C3 gpgv: Can't check signature: No public key dpkg-source: warning: failed to verify signature on ./zaqar_9.0.0-0ubuntu1.dsc dpkg-source: info: extracting zaqar in zaqar-9.0.0 dpkg-source: info: unpacking zaqar_9.0.0.orig.tar.gz dpkg-source: info: unpacking zaqar_9.0.0-0ubuntu1.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying skip-test.patch dpkg-source: info: applying package-all-files.patch Check disc space ---------------- Sufficient free space for build User Environment ---------------- APT_CONFIG=/var/lib/sbuild/apt.conf DEB_BUILD_OPTIONS=noautodbgsym parallel=4 HOME=/sbuild-nonexistent LANG=C.UTF-8 LC_ALL=C.UTF-8 LOGNAME=buildd PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games SCHROOT_ALIAS_NAME=build-PACKAGEBUILD-18368205 SCHROOT_CHROOT_NAME=build-PACKAGEBUILD-18368205 SCHROOT_COMMAND=env SCHROOT_GID=2501 SCHROOT_GROUP=buildd SCHROOT_SESSION_ID=build-PACKAGEBUILD-18368205 SCHROOT_UID=2001 SCHROOT_USER=buildd SHELL=/bin/sh TERM=unknown USER=buildd V=1 dpkg-buildpackage ----------------- dpkg-buildpackage: info: source package zaqar dpkg-buildpackage: info: source version 9.0.0-0ubuntu1 dpkg-buildpackage: info: source distribution eoan dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 dpkg-source: info: using options from zaqar-9.0.0/debian/source/options: --extend-diff-ignore=^[.]gitreview$ fakeroot debian/rules clean pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions pyversions: missing debian/pyversions file, fall back to supported versions py3versions: no X-Python3-Version in control file, using supported versions dh clean --buildsystem=python_distutils --with python3,systemd debian/rules override_dh_auto_clean make[1]: Entering directory '/<>' pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions pyversions: missing debian/pyversions file, fall back to supported versions py3versions: no X-Python3-Version in control file, using supported versions python3 setup.py clean running clean make[1]: Leaving directory '/<>' dh_autoreconf_clean -O--buildsystem=python_distutils debian/rules override_dh_clean make[1]: Entering directory '/<>' pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions pyversions: missing debian/pyversions file, fall back to supported versions py3versions: no X-Python3-Version in control file, using supported versions dh_clean -O--buildsystem=python_distutils rm -rf build \ debian/zaqar-common.postinst \ debian/zaqar-common.config \ debian/zaqar-server.postinst \ debian/zaqar-server.config \ debian/*.service debian/*.init debian/*.upstart rm -rf debian/*.templates debian/po make[1]: Leaving directory '/<>' debian/rules build pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions pyversions: missing debian/pyversions file, fall back to supported versions py3versions: no X-Python3-Version in control file, using supported versions dh build --buildsystem=python_distutils --with python3,systemd dh_update_autotools_config -O--buildsystem=python_distutils dh_autoreconf -O--buildsystem=python_distutils dh_auto_configure -O--buildsystem=python_distutils dh_auto_configure: Please use the third-party "pybuild" build system instead of python-distutils dh_auto_configure: This feature will be removed in compat 12. debian/rules override_dh_auto_build make[1]: Entering directory '/<>' pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions pyversions: missing debian/pyversions file, fall back to supported versions py3versions: no X-Python3-Version in control file, using supported versions /usr/share/openstack-pkg-tools/pkgos_insert_include pkgos_func zaqar-common.config /usr/share/openstack-pkg-tools/pkgos_insert_include pkgos_func zaqar-common.postinst /usr/share/openstack-pkg-tools/pkgos_insert_include pkgos_func zaqar-server.config /usr/share/openstack-pkg-tools/pkgos_insert_include pkgos_func zaqar-server.postinst pkgos-merge-templates zaqar-server zaqar endpoint Merging cs.po... Merging da.po... Merging de.po... Merging es.po... Merging fr.po... Merging gl.po... Merging it.po... Merging ja.po... Merging nl.po... Merging pl.po... Merging pt.po... Merging pt_BR.po... Merging ru.po... Merging sv.po... Merging zh_CN.po... pkgos-merge-templates zaqar-common zaqar rabbit ksat Merging cs.po... Merging da.po... Merging de.po... Merging es.po... Merging fr.po... Merging gl.po... Merging it.po... Merging ja.po... Merging nl.po... Merging pl.po... Merging pt.po... Merging pt_BR.po... Merging ru.po... Merging sv.po... Merging zh_CN.po... make[1]: Leaving directory '/<>' debian/rules override_dh_auto_test make[1]: Entering directory '/<>' pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions pyversions: missing debian/pyversions file, fall back to supported versions py3versions: no X-Python3-Version in control file, using supported versions echo "Do nothing..." Do nothing... make[1]: Leaving directory '/<>' create-stamp debian/debhelper-build-stamp fakeroot debian/rules binary pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions pyversions: missing debian/pyversions file, fall back to supported versions py3versions: no X-Python3-Version in control file, using supported versions dh binary --buildsystem=python_distutils --with python3,systemd dh_testroot -O--buildsystem=python_distutils dh_prep -O--buildsystem=python_distutils debian/rules override_dh_auto_install make[1]: Entering directory '/<>' pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions pyversions: missing debian/pyversions file, fall back to supported versions py3versions: no X-Python3-Version in control file, using supported versions echo "Do nothing..." Do nothing... make[1]: Leaving directory '/<>' debian/rules override_dh_install make[1]: Entering directory '/<>' pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions pyversions: missing debian/pyversions file, fall back to supported versions py3versions: no X-Python3-Version in control file, using supported versions pkgos-dh_auto_install --no-py2 + PKGOS_USE_PY2=yes + PKGOS_USE_PY3=yes + PKGOS_IN_TMP=no + PKGOS_USE_PY2=no + shift + dpkg-parsechangelog -SSource + SRC_PKG_NAME=zaqar + echo zaqar + sed s/python-// + PY_MODULE_NAME=zaqar + [ no = yes ] + [ yes = yes ] + py3versions -vr + PYTHON3S=3.8 3.7 + [ no = yes ] + [ yes = yes ] + [ no = yes ] + TARGET_DIR=python3-zaqar + pwd + python3.8 setup.py install --install-layout=deb --root /<>/debian/python3-zaqar running install [pbr] Generating AUTHORS [pbr] AUTHORS complete (0.0s) running build running build_py creating build creating build/lib creating build/lib/zaqar creating build/lib/zaqar/storage creating build/lib/zaqar/storage/redis copying zaqar/storage/redis/messages.py -> build/lib/zaqar/storage/redis copying zaqar/storage/redis/flavors.py -> build/lib/zaqar/storage/redis copying zaqar/storage/redis/utils.py -> build/lib/zaqar/storage/redis copying zaqar/storage/redis/queues.py -> build/lib/zaqar/storage/redis copying zaqar/storage/redis/pools.py -> build/lib/zaqar/storage/redis copying zaqar/storage/redis/models.py -> build/lib/zaqar/storage/redis copying zaqar/storage/redis/scripting.py -> build/lib/zaqar/storage/redis copying zaqar/storage/redis/__init__.py -> build/lib/zaqar/storage/redis copying zaqar/storage/redis/subscriptions.py -> build/lib/zaqar/storage/redis copying zaqar/storage/redis/driver.py -> build/lib/zaqar/storage/redis copying zaqar/storage/redis/controllers.py -> build/lib/zaqar/storage/redis copying zaqar/storage/redis/catalogue.py -> build/lib/zaqar/storage/redis copying zaqar/storage/redis/claims.py -> build/lib/zaqar/storage/redis creating build/lib/zaqar/tests creating build/lib/zaqar/tests/unit copying zaqar/tests/unit/__init__.py -> build/lib/zaqar/tests/unit copying zaqar/tests/unit/test_bootstrap.py -> build/lib/zaqar/tests/unit creating build/lib/zaqar/common creating build/lib/zaqar/common/policies copying zaqar/common/policies/messages.py -> build/lib/zaqar/common/policies copying zaqar/common/policies/flavors.py -> build/lib/zaqar/common/policies copying zaqar/common/policies/queues.py -> build/lib/zaqar/common/policies copying zaqar/common/policies/base.py -> build/lib/zaqar/common/policies copying zaqar/common/policies/pools.py -> build/lib/zaqar/common/policies copying zaqar/common/policies/subscription.py -> build/lib/zaqar/common/policies copying zaqar/common/policies/topics.py -> build/lib/zaqar/common/policies copying zaqar/common/policies/__init__.py -> build/lib/zaqar/common/policies copying zaqar/common/policies/health.py -> build/lib/zaqar/common/policies copying zaqar/common/policies/claims.py -> build/lib/zaqar/common/policies creating build/lib/zaqar/api creating build/lib/zaqar/api/v1_1 copying zaqar/api/v1_1/__init__.py -> build/lib/zaqar/api/v1_1 copying zaqar/api/v1_1/request.py -> build/lib/zaqar/api/v1_1 copying zaqar/api/v1_1/response.py -> build/lib/zaqar/api/v1_1 creating build/lib/zaqar/transport creating build/lib/zaqar/transport/middleware copying zaqar/transport/middleware/__init__.py -> build/lib/zaqar/transport/middleware copying zaqar/transport/middleware/cors.py -> build/lib/zaqar/transport/middleware copying zaqar/transport/middleware/auth.py -> build/lib/zaqar/transport/middleware copying zaqar/transport/middleware/profile.py -> build/lib/zaqar/transport/middleware creating build/lib/zaqar/tests/unit/storage copying zaqar/tests/unit/storage/test_impl_redis.py -> build/lib/zaqar/tests/unit/storage copying zaqar/tests/unit/storage/test_impl_swift.py -> build/lib/zaqar/tests/unit/storage copying zaqar/tests/unit/storage/base.py -> build/lib/zaqar/tests/unit/storage copying zaqar/tests/unit/storage/test_pool_catalog_new.py -> build/lib/zaqar/tests/unit/storage copying zaqar/tests/unit/storage/__init__.py -> build/lib/zaqar/tests/unit/storage copying zaqar/tests/unit/storage/test_impl_sqlalchemy.py -> build/lib/zaqar/tests/unit/storage copying zaqar/tests/unit/storage/test_utils.py -> build/lib/zaqar/tests/unit/storage copying zaqar/tests/unit/storage/test_impl_mongodb.py -> build/lib/zaqar/tests/unit/storage creating build/lib/zaqar/transport/wsgi creating build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/messages.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/flavors.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/stats.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/queues.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/topic_stats.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/pools.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/ping.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/homedoc.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/urls.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/topic_purge.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/topic.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/__init__.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/subscriptions.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/purge.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/health.py -> build/lib/zaqar/transport/wsgi/v2_0 copying zaqar/transport/wsgi/v2_0/claims.py -> build/lib/zaqar/transport/wsgi/v2_0 creating build/lib/zaqar/api/v1 copying zaqar/api/v1/__init__.py -> build/lib/zaqar/api/v1 copying zaqar/api/v1/request.py -> build/lib/zaqar/api/v1 copying zaqar/api/v1/response.py -> build/lib/zaqar/api/v1 creating build/lib/zaqar/tests/functional creating build/lib/zaqar/tests/functional/wsgi creating build/lib/zaqar/tests/functional/wsgi/v2 copying zaqar/tests/functional/wsgi/v2/test_subscriptions.py -> build/lib/zaqar/tests/functional/wsgi/v2 copying zaqar/tests/functional/wsgi/v2/__init__.py -> build/lib/zaqar/tests/functional/wsgi/v2 creating build/lib/zaqar/common/api copying zaqar/common/api/utils.py -> build/lib/zaqar/common/api copying zaqar/common/api/errors.py -> build/lib/zaqar/common/api copying zaqar/common/api/__init__.py -> build/lib/zaqar/common/api copying zaqar/common/api/request.py -> build/lib/zaqar/common/api copying zaqar/common/api/api.py -> build/lib/zaqar/common/api copying zaqar/common/api/response.py -> build/lib/zaqar/common/api creating build/lib/zaqar/storage/swift copying zaqar/storage/swift/messages.py -> build/lib/zaqar/storage/swift copying zaqar/storage/swift/utils.py -> build/lib/zaqar/storage/swift copying zaqar/storage/swift/__init__.py -> build/lib/zaqar/storage/swift copying zaqar/storage/swift/subscriptions.py -> build/lib/zaqar/storage/swift copying zaqar/storage/swift/driver.py -> build/lib/zaqar/storage/swift copying zaqar/storage/swift/controllers.py -> build/lib/zaqar/storage/swift copying zaqar/storage/swift/claims.py -> build/lib/zaqar/storage/swift copying zaqar/common/cache.py -> build/lib/zaqar/common copying zaqar/common/utils.py -> build/lib/zaqar/common copying zaqar/common/consts.py -> build/lib/zaqar/common copying zaqar/common/urls.py -> build/lib/zaqar/common copying zaqar/common/errors.py -> build/lib/zaqar/common copying zaqar/common/access.py -> build/lib/zaqar/common copying zaqar/common/__init__.py -> build/lib/zaqar/common copying zaqar/common/pipeline.py -> build/lib/zaqar/common copying zaqar/common/cli.py -> build/lib/zaqar/common copying zaqar/common/auth.py -> build/lib/zaqar/common copying zaqar/common/decorators.py -> build/lib/zaqar/common creating build/lib/zaqar/tests/functional/wsgi/v1 copying zaqar/tests/functional/wsgi/v1/test_messages.py -> build/lib/zaqar/tests/functional/wsgi/v1 copying zaqar/tests/functional/wsgi/v1/test_queues.py -> build/lib/zaqar/tests/functional/wsgi/v1 copying zaqar/tests/functional/wsgi/v1/__init__.py -> build/lib/zaqar/tests/functional/wsgi/v1 copying zaqar/tests/functional/wsgi/v1/test_claims.py -> build/lib/zaqar/tests/functional/wsgi/v1 creating build/lib/zaqar/conf copying zaqar/conf/default.py -> build/lib/zaqar/conf copying zaqar/conf/notification.py -> build/lib/zaqar/conf copying zaqar/conf/transport.py -> build/lib/zaqar/conf copying zaqar/conf/drivers_management_store_redis.py -> build/lib/zaqar/conf copying zaqar/conf/pooling_catalog.py -> build/lib/zaqar/conf copying zaqar/conf/drivers.py -> build/lib/zaqar/conf copying zaqar/conf/__init__.py -> build/lib/zaqar/conf copying zaqar/conf/storage.py -> build/lib/zaqar/conf copying zaqar/conf/drivers_transport_wsgi.py -> build/lib/zaqar/conf copying zaqar/conf/drivers_message_store_redis.py -> build/lib/zaqar/conf copying zaqar/conf/profiler.py -> build/lib/zaqar/conf copying zaqar/conf/drivers_message_store_mongodb.py -> build/lib/zaqar/conf copying zaqar/conf/drivers_management_store_mongodb.py -> build/lib/zaqar/conf copying zaqar/conf/drivers_message_store_swift.py -> build/lib/zaqar/conf copying zaqar/conf/drivers_transport_websocket.py -> build/lib/zaqar/conf copying zaqar/conf/opts.py -> build/lib/zaqar/conf copying zaqar/conf/signed_url.py -> build/lib/zaqar/conf copying zaqar/conf/drivers_management_store_sqlalchemy.py -> build/lib/zaqar/conf copying zaqar/tests/functional/wsgi/test_versions.py -> build/lib/zaqar/tests/functional/wsgi copying zaqar/tests/functional/wsgi/__init__.py -> build/lib/zaqar/tests/functional/wsgi creating build/lib/zaqar/transport/websocket copying zaqar/transport/websocket/factory.py -> build/lib/zaqar/transport/websocket copying zaqar/transport/websocket/__init__.py -> build/lib/zaqar/transport/websocket copying zaqar/transport/websocket/driver.py -> build/lib/zaqar/transport/websocket copying zaqar/transport/websocket/protocol.py -> build/lib/zaqar/transport/websocket creating build/lib/zaqar/tests/unit/transport creating build/lib/zaqar/tests/unit/transport/wsgi creating build/lib/zaqar/tests/unit/transport/wsgi/v1 copying zaqar/tests/unit/transport/wsgi/v1/test_home.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1 copying zaqar/tests/unit/transport/wsgi/v1/test_messages.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1 copying zaqar/tests/unit/transport/wsgi/v1/test_pools.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1 copying zaqar/tests/unit/transport/wsgi/v1/test_validation.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1 copying zaqar/tests/unit/transport/wsgi/v1/test_health.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1 copying zaqar/tests/unit/transport/wsgi/v1/test_media_type.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1 copying zaqar/tests/unit/transport/wsgi/v1/__init__.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1 copying zaqar/tests/unit/transport/wsgi/v1/test_default_limits.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1 copying zaqar/tests/unit/transport/wsgi/v1/test_queue_lifecycle.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1 copying zaqar/tests/unit/transport/wsgi/v1/test_auth.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1 copying zaqar/tests/unit/transport/wsgi/v1/test_claims.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1 creating build/lib/zaqar/notification copying zaqar/notification/notifier.py -> build/lib/zaqar/notification copying zaqar/notification/__init__.py -> build/lib/zaqar/notification creating build/lib/zaqar/tests/unit/transport/websocket creating build/lib/zaqar/tests/unit/transport/websocket/v2 copying zaqar/tests/unit/transport/websocket/v2/test_messages.py -> build/lib/zaqar/tests/unit/transport/websocket/v2 copying zaqar/tests/unit/transport/websocket/v2/test_subscriptions.py -> build/lib/zaqar/tests/unit/transport/websocket/v2 copying zaqar/tests/unit/transport/websocket/v2/__init__.py -> build/lib/zaqar/tests/unit/transport/websocket/v2 copying zaqar/tests/unit/transport/websocket/v2/test_queue_lifecycle.py -> build/lib/zaqar/tests/unit/transport/websocket/v2 copying zaqar/tests/unit/transport/websocket/v2/test_auth.py -> build/lib/zaqar/tests/unit/transport/websocket/v2 copying zaqar/tests/unit/transport/websocket/v2/test_claims.py -> build/lib/zaqar/tests/unit/transport/websocket/v2 creating build/lib/zaqar/common/storage copying zaqar/common/storage/__init__.py -> build/lib/zaqar/common/storage copying zaqar/common/storage/select.py -> build/lib/zaqar/common/storage copying zaqar/transport/wsgi/utils.py -> build/lib/zaqar/transport/wsgi copying zaqar/transport/wsgi/errors.py -> build/lib/zaqar/transport/wsgi copying zaqar/transport/wsgi/app.py -> build/lib/zaqar/transport/wsgi copying zaqar/transport/wsgi/__init__.py -> build/lib/zaqar/transport/wsgi copying zaqar/transport/wsgi/driver.py -> build/lib/zaqar/transport/wsgi copying zaqar/transport/wsgi/version.py -> build/lib/zaqar/transport/wsgi creating build/lib/zaqar/common/api/schemas creating build/lib/zaqar/common/api/schemas/v1_1 copying zaqar/common/api/schemas/v1_1/flavors.py -> build/lib/zaqar/common/api/schemas/v1_1 copying zaqar/common/api/schemas/v1_1/__init__.py -> build/lib/zaqar/common/api/schemas/v1_1 creating build/lib/zaqar/storage/sqlalchemy creating build/lib/zaqar/storage/sqlalchemy/migration copying zaqar/storage/sqlalchemy/migration/__init__.py -> build/lib/zaqar/storage/sqlalchemy/migration copying zaqar/storage/sqlalchemy/migration/cli.py -> build/lib/zaqar/storage/sqlalchemy/migration creating build/lib/zaqar/common/transport creating build/lib/zaqar/common/transport/wsgi copying zaqar/common/transport/wsgi/helpers.py -> build/lib/zaqar/common/transport/wsgi copying zaqar/common/transport/wsgi/__init__.py -> build/lib/zaqar/common/transport/wsgi copying zaqar/common/api/schemas/flavors.py -> build/lib/zaqar/common/api/schemas copying zaqar/common/api/schemas/pools.py -> build/lib/zaqar/common/api/schemas copying zaqar/common/api/schemas/__init__.py -> build/lib/zaqar/common/api/schemas copying zaqar/storage/sqlalchemy/flavors.py -> build/lib/zaqar/storage/sqlalchemy copying zaqar/storage/sqlalchemy/utils.py -> build/lib/zaqar/storage/sqlalchemy copying zaqar/storage/sqlalchemy/queues.py -> build/lib/zaqar/storage/sqlalchemy copying zaqar/storage/sqlalchemy/pools.py -> build/lib/zaqar/storage/sqlalchemy copying zaqar/storage/sqlalchemy/__init__.py -> build/lib/zaqar/storage/sqlalchemy copying zaqar/storage/sqlalchemy/driver.py -> build/lib/zaqar/storage/sqlalchemy copying zaqar/storage/sqlalchemy/controllers.py -> build/lib/zaqar/storage/sqlalchemy copying zaqar/storage/sqlalchemy/catalogue.py -> build/lib/zaqar/storage/sqlalchemy copying zaqar/storage/sqlalchemy/tables.py -> build/lib/zaqar/storage/sqlalchemy creating build/lib/zaqar/notification/tasks copying zaqar/notification/tasks/trust.py -> build/lib/zaqar/notification/tasks copying zaqar/notification/tasks/mailto.py -> build/lib/zaqar/notification/tasks copying zaqar/notification/tasks/__init__.py -> build/lib/zaqar/notification/tasks copying zaqar/notification/tasks/webhook.py -> build/lib/zaqar/notification/tasks creating build/lib/zaqar/tests/unit/cmd copying zaqar/tests/unit/cmd/__init__.py -> build/lib/zaqar/tests/unit/cmd copying zaqar/tests/unit/cmd/test_status.py -> build/lib/zaqar/tests/unit/cmd creating build/lib/zaqar/tests/unit/common copying zaqar/tests/unit/common/test_pipeline.py -> build/lib/zaqar/tests/unit/common copying zaqar/tests/unit/common/test_api.py -> build/lib/zaqar/tests/unit/common copying zaqar/tests/unit/common/__init__.py -> build/lib/zaqar/tests/unit/common copying zaqar/tests/unit/common/test_urls.py -> build/lib/zaqar/tests/unit/common copying zaqar/tests/unit/common/test_request.py -> build/lib/zaqar/tests/unit/common copying zaqar/tests/unit/common/test_decorators.py -> build/lib/zaqar/tests/unit/common creating build/lib/zaqar/hacking copying zaqar/hacking/__init__.py -> build/lib/zaqar/hacking copying zaqar/hacking/checks.py -> build/lib/zaqar/hacking creating build/lib/zaqar/tests/functional/websocket copying zaqar/tests/functional/websocket/test_queues.py -> build/lib/zaqar/tests/functional/websocket copying zaqar/tests/functional/websocket/__init__.py -> build/lib/zaqar/tests/functional/websocket creating build/lib/zaqar/transport/wsgi/v1_0 copying zaqar/transport/wsgi/v1_0/messages.py -> build/lib/zaqar/transport/wsgi/v1_0 copying zaqar/transport/wsgi/v1_0/stats.py -> build/lib/zaqar/transport/wsgi/v1_0 copying zaqar/transport/wsgi/v1_0/queues.py -> build/lib/zaqar/transport/wsgi/v1_0 copying zaqar/transport/wsgi/v1_0/pools.py -> build/lib/zaqar/transport/wsgi/v1_0 copying zaqar/transport/wsgi/v1_0/homedoc.py -> build/lib/zaqar/transport/wsgi/v1_0 copying zaqar/transport/wsgi/v1_0/metadata.py -> build/lib/zaqar/transport/wsgi/v1_0 copying zaqar/transport/wsgi/v1_0/__init__.py -> build/lib/zaqar/transport/wsgi/v1_0 copying zaqar/transport/wsgi/v1_0/health.py -> build/lib/zaqar/transport/wsgi/v1_0 copying zaqar/transport/wsgi/v1_0/claims.py -> build/lib/zaqar/transport/wsgi/v1_0 creating build/lib/zaqar/api/v2 copying zaqar/api/v2/__init__.py -> build/lib/zaqar/api/v2 copying zaqar/api/v2/request.py -> build/lib/zaqar/api/v2 copying zaqar/api/v2/response.py -> build/lib/zaqar/api/v2 copying zaqar/api/v2/endpoints.py -> build/lib/zaqar/api/v2 copying zaqar/tests/unit/transport/test_acl.py -> build/lib/zaqar/tests/unit/transport copying zaqar/tests/unit/transport/__init__.py -> build/lib/zaqar/tests/unit/transport creating build/lib/zaqar/storage/mongodb copying zaqar/storage/mongodb/messages.py -> build/lib/zaqar/storage/mongodb copying zaqar/storage/mongodb/flavors.py -> build/lib/zaqar/storage/mongodb copying zaqar/storage/mongodb/utils.py -> build/lib/zaqar/storage/mongodb copying zaqar/storage/mongodb/queues.py -> build/lib/zaqar/storage/mongodb copying zaqar/storage/mongodb/pools.py -> build/lib/zaqar/storage/mongodb copying zaqar/storage/mongodb/topics.py -> build/lib/zaqar/storage/mongodb copying zaqar/storage/mongodb/__init__.py -> build/lib/zaqar/storage/mongodb copying zaqar/storage/mongodb/subscriptions.py -> build/lib/zaqar/storage/mongodb copying zaqar/storage/mongodb/driver.py -> build/lib/zaqar/storage/mongodb copying zaqar/storage/mongodb/topic_messages.py -> build/lib/zaqar/storage/mongodb copying zaqar/storage/mongodb/controllers.py -> build/lib/zaqar/storage/mongodb copying zaqar/storage/mongodb/catalogue.py -> build/lib/zaqar/storage/mongodb copying zaqar/storage/mongodb/claims.py -> build/lib/zaqar/storage/mongodb creating build/lib/zaqar/cmd copying zaqar/cmd/__init__.py -> build/lib/zaqar/cmd copying zaqar/cmd/status.py -> build/lib/zaqar/cmd copying zaqar/cmd/gc.py -> build/lib/zaqar/cmd copying zaqar/cmd/server.py -> build/lib/zaqar/cmd copying zaqar/storage/utils.py -> build/lib/zaqar/storage copying zaqar/storage/configuration.py -> build/lib/zaqar/storage copying zaqar/storage/base.py -> build/lib/zaqar/storage copying zaqar/storage/errors.py -> build/lib/zaqar/storage copying zaqar/storage/__init__.py -> build/lib/zaqar/storage copying zaqar/storage/pipeline.py -> build/lib/zaqar/storage copying zaqar/storage/pooling.py -> build/lib/zaqar/storage creating build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_home.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_flavors_new.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_messages.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_subscriptions.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_validation.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_health.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_media_type.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/__init__.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_urls.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_default_limits.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_topic_lifecycle.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_queue_lifecycle.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_pools_new.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_purge.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_ping.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_auth.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/unit/transport/wsgi/v2_0/test_claims.py -> build/lib/zaqar/tests/unit/transport/wsgi/v2_0 copying zaqar/tests/functional/http.py -> build/lib/zaqar/tests/functional copying zaqar/tests/functional/helpers.py -> build/lib/zaqar/tests/functional copying zaqar/tests/functional/base.py -> build/lib/zaqar/tests/functional copying zaqar/tests/functional/config.py -> build/lib/zaqar/tests/functional copying zaqar/tests/functional/__init__.py -> build/lib/zaqar/tests/functional copying zaqar/tests/unit/transport/websocket/test_protocol.py -> build/lib/zaqar/tests/unit/transport/websocket copying zaqar/tests/unit/transport/websocket/utils.py -> build/lib/zaqar/tests/unit/transport/websocket copying zaqar/tests/unit/transport/websocket/base.py -> build/lib/zaqar/tests/unit/transport/websocket copying zaqar/tests/unit/transport/websocket/__init__.py -> build/lib/zaqar/tests/unit/transport/websocket creating build/lib/zaqar/tests/unit/transport/wsgi/v1_1 copying zaqar/tests/unit/transport/wsgi/v1_1/test_home.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1_1 copying zaqar/tests/unit/transport/wsgi/v1_1/test_messages.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1_1 copying zaqar/tests/unit/transport/wsgi/v1_1/test_validation.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1_1 copying zaqar/tests/unit/transport/wsgi/v1_1/test_health.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1_1 copying zaqar/tests/unit/transport/wsgi/v1_1/test_media_type.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1_1 copying zaqar/tests/unit/transport/wsgi/v1_1/__init__.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1_1 copying zaqar/tests/unit/transport/wsgi/v1_1/test_default_limits.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1_1 copying zaqar/tests/unit/transport/wsgi/v1_1/test_queue_lifecycle.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1_1 copying zaqar/tests/unit/transport/wsgi/v1_1/test_ping.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1_1 copying zaqar/tests/unit/transport/wsgi/v1_1/test_auth.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1_1 copying zaqar/tests/unit/transport/wsgi/v1_1/test_claims.py -> build/lib/zaqar/tests/unit/transport/wsgi/v1_1 copying zaqar/common/transport/__init__.py -> build/lib/zaqar/common/transport copying zaqar/tests/helpers.py -> build/lib/zaqar/tests copying zaqar/tests/base.py -> build/lib/zaqar/tests copying zaqar/tests/__init__.py -> build/lib/zaqar/tests copying zaqar/tests/faulty_storage.py -> build/lib/zaqar/tests copying zaqar/transport/utils.py -> build/lib/zaqar/transport copying zaqar/transport/base.py -> build/lib/zaqar/transport copying zaqar/transport/__init__.py -> build/lib/zaqar/transport copying zaqar/transport/validation.py -> build/lib/zaqar/transport copying zaqar/transport/acl.py -> build/lib/zaqar/transport creating build/lib/zaqar/tests/unit/storage/sqlalchemy_migration copying zaqar/tests/unit/storage/sqlalchemy_migration/test_migrations.py -> build/lib/zaqar/tests/unit/storage/sqlalchemy_migration copying zaqar/tests/unit/storage/sqlalchemy_migration/test_migrations_base.py -> build/lib/zaqar/tests/unit/storage/sqlalchemy_migration copying zaqar/tests/unit/storage/sqlalchemy_migration/__init__.py -> build/lib/zaqar/tests/unit/storage/sqlalchemy_migration copying zaqar/tests/unit/storage/sqlalchemy_migration/test_db_manage_cli.py -> build/lib/zaqar/tests/unit/storage/sqlalchemy_migration creating build/lib/zaqar/tests/unit/hacking copying zaqar/tests/unit/hacking/test_hacking.py -> build/lib/zaqar/tests/unit/hacking copying zaqar/tests/unit/hacking/__init__.py -> build/lib/zaqar/tests/unit/hacking copying zaqar/i18n.py -> build/lib/zaqar copying zaqar/bootstrap.py -> build/lib/zaqar copying zaqar/context.py -> build/lib/zaqar copying zaqar/__init__.py -> build/lib/zaqar copying zaqar/version.py -> build/lib/zaqar creating build/lib/zaqar/tests/unit/common/storage copying zaqar/tests/unit/common/storage/test_select.py -> build/lib/zaqar/tests/unit/common/storage copying zaqar/tests/unit/common/storage/__init__.py -> build/lib/zaqar/tests/unit/common/storage copying zaqar/tests/unit/common/storage/test_utils.py -> build/lib/zaqar/tests/unit/common/storage creating build/lib/zaqar/tests/functional/wsgi/v1_1 copying zaqar/tests/functional/wsgi/v1_1/test_messages.py -> build/lib/zaqar/tests/functional/wsgi/v1_1 copying zaqar/tests/functional/wsgi/v1_1/test_pools.py -> build/lib/zaqar/tests/functional/wsgi/v1_1 copying zaqar/tests/functional/wsgi/v1_1/test_queues.py -> build/lib/zaqar/tests/functional/wsgi/v1_1 copying zaqar/tests/functional/wsgi/v1_1/test_health.py -> build/lib/zaqar/tests/functional/wsgi/v1_1 copying zaqar/tests/functional/wsgi/v1_1/__init__.py -> build/lib/zaqar/tests/functional/wsgi/v1_1 copying zaqar/tests/functional/wsgi/v1_1/test_claims.py -> build/lib/zaqar/tests/functional/wsgi/v1_1 creating build/lib/zaqar/bench copying zaqar/bench/producer.py -> build/lib/zaqar/bench copying zaqar/bench/observer.py -> build/lib/zaqar/bench copying zaqar/bench/helpers.py -> build/lib/zaqar/bench copying zaqar/bench/consumer.py -> build/lib/zaqar/bench copying zaqar/bench/config.py -> build/lib/zaqar/bench copying zaqar/bench/__init__.py -> build/lib/zaqar/bench copying zaqar/bench/conductor.py -> build/lib/zaqar/bench creating build/lib/zaqar/transport/wsgi/v1_1 copying zaqar/transport/wsgi/v1_1/messages.py -> build/lib/zaqar/transport/wsgi/v1_1 copying zaqar/transport/wsgi/v1_1/flavors.py -> build/lib/zaqar/transport/wsgi/v1_1 copying zaqar/transport/wsgi/v1_1/stats.py -> build/lib/zaqar/transport/wsgi/v1_1 copying zaqar/transport/wsgi/v1_1/queues.py -> build/lib/zaqar/transport/wsgi/v1_1 copying zaqar/transport/wsgi/v1_1/pools.py -> build/lib/zaqar/transport/wsgi/v1_1 copying zaqar/transport/wsgi/v1_1/ping.py -> build/lib/zaqar/transport/wsgi/v1_1 copying zaqar/transport/wsgi/v1_1/homedoc.py -> build/lib/zaqar/transport/wsgi/v1_1 copying zaqar/transport/wsgi/v1_1/__init__.py -> build/lib/zaqar/transport/wsgi/v1_1 copying zaqar/transport/wsgi/v1_1/health.py -> build/lib/zaqar/transport/wsgi/v1_1 copying zaqar/transport/wsgi/v1_1/claims.py -> build/lib/zaqar/transport/wsgi/v1_1 copying zaqar/tests/unit/transport/wsgi/test_version.py -> build/lib/zaqar/tests/unit/transport/wsgi copying zaqar/tests/unit/transport/wsgi/base.py -> build/lib/zaqar/tests/unit/transport/wsgi copying zaqar/tests/unit/transport/wsgi/__init__.py -> build/lib/zaqar/tests/unit/transport/wsgi copying zaqar/tests/unit/transport/wsgi/test_utils.py -> build/lib/zaqar/tests/unit/transport/wsgi creating build/lib/zaqar/tests/unit/notification copying zaqar/tests/unit/notification/test_notifier.py -> build/lib/zaqar/tests/unit/notification copying zaqar/tests/unit/notification/__init__.py -> build/lib/zaqar/tests/unit/notification copying zaqar/api/handler.py -> build/lib/zaqar/api copying zaqar/api/__init__.py -> build/lib/zaqar/api running egg_info writing zaqar.egg-info/PKG-INFO writing dependency_links to zaqar.egg-info/dependency_links.txt writing entry points to zaqar.egg-info/entry_points.txt writing requirements to zaqar.egg-info/requires.txt writing top-level names to zaqar.egg-info/top_level.txt [pbr] Reusing existing SOURCES.txt creating build/lib/zaqar/storage/redis/scripts copying zaqar/storage/redis/scripts/claim_messages.lua -> build/lib/zaqar/storage/redis/scripts copying zaqar/storage/redis/scripts/index_messages.lua -> build/lib/zaqar/storage/redis/scripts copying zaqar/storage/sqlalchemy/migration/alembic.ini -> build/lib/zaqar/storage/sqlalchemy/migration creating build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations copying zaqar/storage/sqlalchemy/migration/alembic_migrations/README.md -> build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations copying zaqar/storage/sqlalchemy/migration/alembic_migrations/env.py -> build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations copying zaqar/storage/sqlalchemy/migration/alembic_migrations/script.py.mako -> build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations creating build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/001_liberty.py -> build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/002_placeholder.py -> build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/003_placeholder.py -> build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/004_placeholder.py -> build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/005_placeholder.py -> build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/006_queens.py -> build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/007_stein.py -> build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions creating build/lib/zaqar/tests/etc copying zaqar/tests/etc/drivers_storage_invalid.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/drivers_transport_invalid.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/functional-tests.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/functional-zaqar.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/keystone_auth.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/policy.json -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/websocket_mongodb.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/websocket_mongodb_keystone_auth.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/websocket_mongodb_subscriptions.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/wsgi_faulty.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/wsgi_fifo_mongodb.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/wsgi_mongodb.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/wsgi_mongodb_default_limits.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/wsgi_mongodb_pooled.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/wsgi_mongodb_pooled_disable_virtual_pool.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/wsgi_mongodb_validation.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/wsgi_redis.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/wsgi_redis_pooled.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/wsgi_sqlalchemy.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/wsgi_sqlalchemy_pooled.conf -> build/lib/zaqar/tests/etc copying zaqar/tests/etc/wsgi_swift.conf -> build/lib/zaqar/tests/etc creating build/lib/zaqar/locale creating build/lib/zaqar/locale/de creating build/lib/zaqar/locale/de/LC_MESSAGES copying zaqar/locale/de/LC_MESSAGES/zaqar.po -> build/lib/zaqar/locale/de/LC_MESSAGES creating build/lib/zaqar/locale/en_GB creating build/lib/zaqar/locale/en_GB/LC_MESSAGES copying zaqar/locale/en_GB/LC_MESSAGES/zaqar.po -> build/lib/zaqar/locale/en_GB/LC_MESSAGES creating build/lib/zaqar/locale/es creating build/lib/zaqar/locale/es/LC_MESSAGES copying zaqar/locale/es/LC_MESSAGES/zaqar.po -> build/lib/zaqar/locale/es/LC_MESSAGES creating build/lib/zaqar/locale/id creating build/lib/zaqar/locale/id/LC_MESSAGES copying zaqar/locale/id/LC_MESSAGES/zaqar.po -> build/lib/zaqar/locale/id/LC_MESSAGES running install_lib creating /<>/debian/python3-zaqar creating /<>/debian/python3-zaqar/usr creating /<>/debian/python3-zaqar/usr/lib creating /<>/debian/python3-zaqar/usr/lib/python3 creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis copying build/lib/zaqar/storage/redis/messages.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis copying build/lib/zaqar/storage/redis/flavors.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/scripts copying build/lib/zaqar/storage/redis/scripts/index_messages.lua -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/scripts copying build/lib/zaqar/storage/redis/scripts/claim_messages.lua -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/scripts copying build/lib/zaqar/storage/redis/utils.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis copying build/lib/zaqar/storage/redis/queues.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis copying build/lib/zaqar/storage/redis/pools.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis copying build/lib/zaqar/storage/redis/models.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis copying build/lib/zaqar/storage/redis/scripting.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis copying build/lib/zaqar/storage/redis/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis copying build/lib/zaqar/storage/redis/subscriptions.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis copying build/lib/zaqar/storage/redis/driver.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis copying build/lib/zaqar/storage/redis/controllers.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis copying build/lib/zaqar/storage/redis/catalogue.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis copying build/lib/zaqar/storage/redis/claims.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis copying build/lib/zaqar/storage/utils.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy copying build/lib/zaqar/storage/sqlalchemy/flavors.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy copying build/lib/zaqar/storage/sqlalchemy/utils.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy copying build/lib/zaqar/storage/sqlalchemy/queues.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy copying build/lib/zaqar/storage/sqlalchemy/pools.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy copying build/lib/zaqar/storage/sqlalchemy/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy copying build/lib/zaqar/storage/sqlalchemy/driver.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration copying build/lib/zaqar/storage/sqlalchemy/migration/alembic.ini -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration copying build/lib/zaqar/storage/sqlalchemy/migration/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration copying build/lib/zaqar/storage/sqlalchemy/migration/cli.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations copying build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/env.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations copying build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/README.md -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/002_placeholder.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/005_placeholder.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/007_stein.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/006_queens.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/003_placeholder.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/001_liberty.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/004_placeholder.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions copying build/lib/zaqar/storage/sqlalchemy/migration/alembic_migrations/script.py.mako -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations copying build/lib/zaqar/storage/sqlalchemy/controllers.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy copying build/lib/zaqar/storage/sqlalchemy/catalogue.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy copying build/lib/zaqar/storage/sqlalchemy/tables.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy copying build/lib/zaqar/storage/configuration.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage copying build/lib/zaqar/storage/base.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage copying build/lib/zaqar/storage/errors.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift copying build/lib/zaqar/storage/swift/messages.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift copying build/lib/zaqar/storage/swift/utils.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift copying build/lib/zaqar/storage/swift/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift copying build/lib/zaqar/storage/swift/subscriptions.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift copying build/lib/zaqar/storage/swift/driver.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift copying build/lib/zaqar/storage/swift/controllers.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift copying build/lib/zaqar/storage/swift/claims.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift copying build/lib/zaqar/storage/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage copying build/lib/zaqar/storage/pipeline.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage copying build/lib/zaqar/storage/pooling.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb copying build/lib/zaqar/storage/mongodb/messages.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb copying build/lib/zaqar/storage/mongodb/flavors.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb copying build/lib/zaqar/storage/mongodb/utils.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb copying build/lib/zaqar/storage/mongodb/queues.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb copying build/lib/zaqar/storage/mongodb/pools.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb copying build/lib/zaqar/storage/mongodb/topics.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb copying build/lib/zaqar/storage/mongodb/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb copying build/lib/zaqar/storage/mongodb/subscriptions.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb copying build/lib/zaqar/storage/mongodb/driver.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb copying build/lib/zaqar/storage/mongodb/topic_messages.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb copying build/lib/zaqar/storage/mongodb/controllers.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb copying build/lib/zaqar/storage/mongodb/catalogue.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb copying build/lib/zaqar/storage/mongodb/claims.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench copying build/lib/zaqar/bench/producer.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench copying build/lib/zaqar/bench/observer.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench copying build/lib/zaqar/bench/helpers.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench copying build/lib/zaqar/bench/consumer.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench copying build/lib/zaqar/bench/config.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench copying build/lib/zaqar/bench/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench copying build/lib/zaqar/bench/conductor.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench copying build/lib/zaqar/i18n.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar copying build/lib/zaqar/bootstrap.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport copying build/lib/zaqar/transport/utils.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport copying build/lib/zaqar/transport/base.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport copying build/lib/zaqar/transport/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport copying build/lib/zaqar/transport/validation.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/websocket copying build/lib/zaqar/transport/websocket/factory.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/websocket copying build/lib/zaqar/transport/websocket/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/websocket copying build/lib/zaqar/transport/websocket/driver.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/websocket copying build/lib/zaqar/transport/websocket/protocol.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/websocket creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi copying build/lib/zaqar/transport/wsgi/utils.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi copying build/lib/zaqar/transport/wsgi/errors.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi copying build/lib/zaqar/transport/wsgi/app.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi copying build/lib/zaqar/transport/wsgi/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi copying build/lib/zaqar/transport/wsgi/driver.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0 copying build/lib/zaqar/transport/wsgi/v1_0/messages.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0 copying build/lib/zaqar/transport/wsgi/v1_0/stats.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0 copying build/lib/zaqar/transport/wsgi/v1_0/queues.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0 copying build/lib/zaqar/transport/wsgi/v1_0/pools.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0 copying build/lib/zaqar/transport/wsgi/v1_0/homedoc.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0 copying build/lib/zaqar/transport/wsgi/v1_0/metadata.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0 copying build/lib/zaqar/transport/wsgi/v1_0/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0 copying build/lib/zaqar/transport/wsgi/v1_0/health.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0 copying build/lib/zaqar/transport/wsgi/v1_0/claims.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0 copying build/lib/zaqar/transport/wsgi/version.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/messages.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/flavors.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/stats.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/queues.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/topic_stats.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/pools.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/ping.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/homedoc.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/urls.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/topic_purge.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/topic.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/subscriptions.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/purge.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/health.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 copying build/lib/zaqar/transport/wsgi/v2_0/claims.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0 creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1 copying build/lib/zaqar/transport/wsgi/v1_1/messages.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1 copying build/lib/zaqar/transport/wsgi/v1_1/flavors.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1 copying build/lib/zaqar/transport/wsgi/v1_1/stats.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1 copying build/lib/zaqar/transport/wsgi/v1_1/queues.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1 copying build/lib/zaqar/transport/wsgi/v1_1/pools.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1 copying build/lib/zaqar/transport/wsgi/v1_1/ping.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1 copying build/lib/zaqar/transport/wsgi/v1_1/homedoc.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1 copying build/lib/zaqar/transport/wsgi/v1_1/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1 copying build/lib/zaqar/transport/wsgi/v1_1/health.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1 copying build/lib/zaqar/transport/wsgi/v1_1/claims.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1 copying build/lib/zaqar/transport/acl.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/middleware copying build/lib/zaqar/transport/middleware/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/middleware copying build/lib/zaqar/transport/middleware/cors.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/middleware copying build/lib/zaqar/transport/middleware/auth.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/middleware copying build/lib/zaqar/transport/middleware/profile.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/middleware copying build/lib/zaqar/context.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api copying build/lib/zaqar/api/handler.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v2 copying build/lib/zaqar/api/v2/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v2 copying build/lib/zaqar/api/v2/request.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v2 copying build/lib/zaqar/api/v2/response.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v2 copying build/lib/zaqar/api/v2/endpoints.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v2 copying build/lib/zaqar/api/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1 copying build/lib/zaqar/api/v1/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1 copying build/lib/zaqar/api/v1/request.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1 copying build/lib/zaqar/api/v1/response.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1 creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1_1 copying build/lib/zaqar/api/v1_1/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1_1 copying build/lib/zaqar/api/v1_1/request.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1_1 copying build/lib/zaqar/api/v1_1/response.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1_1 creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/hacking copying build/lib/zaqar/hacking/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/hacking copying build/lib/zaqar/hacking/checks.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/hacking creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/cmd copying build/lib/zaqar/cmd/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/cmd copying build/lib/zaqar/cmd/status.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/cmd copying build/lib/zaqar/cmd/gc.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/cmd copying build/lib/zaqar/cmd/server.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/cmd creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests copying build/lib/zaqar/tests/helpers.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests copying build/lib/zaqar/tests/base.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/wsgi_redis_pooled.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/wsgi_mongodb.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/policy.json -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/wsgi_sqlalchemy.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/drivers_storage_invalid.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/wsgi_mongodb_pooled.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/functional-tests.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/drivers_transport_invalid.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/websocket_mongodb.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/websocket_mongodb_subscriptions.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/wsgi_redis.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/wsgi_faulty.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/websocket_mongodb_keystone_auth.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/wsgi_swift.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/keystone_auth.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/wsgi_fifo_mongodb.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/wsgi_mongodb_default_limits.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/wsgi_mongodb_validation.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/wsgi_mongodb_pooled_disable_virtual_pool.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/functional-zaqar.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/etc/wsgi_sqlalchemy_pooled.conf -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/etc copying build/lib/zaqar/tests/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional copying build/lib/zaqar/tests/functional/http.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional copying build/lib/zaqar/tests/functional/helpers.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional copying build/lib/zaqar/tests/functional/base.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional copying build/lib/zaqar/tests/functional/config.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional copying build/lib/zaqar/tests/functional/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/websocket copying build/lib/zaqar/tests/functional/websocket/test_queues.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/websocket copying build/lib/zaqar/tests/functional/websocket/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/websocket creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v2 copying build/lib/zaqar/tests/functional/wsgi/v2/test_subscriptions.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v2 copying build/lib/zaqar/tests/functional/wsgi/v2/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v2 copying build/lib/zaqar/tests/functional/wsgi/test_versions.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi copying build/lib/zaqar/tests/functional/wsgi/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1 copying build/lib/zaqar/tests/functional/wsgi/v1/test_messages.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1 copying build/lib/zaqar/tests/functional/wsgi/v1/test_queues.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1 copying build/lib/zaqar/tests/functional/wsgi/v1/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1 copying build/lib/zaqar/tests/functional/wsgi/v1/test_claims.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1 creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1 copying build/lib/zaqar/tests/functional/wsgi/v1_1/test_messages.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1 copying build/lib/zaqar/tests/functional/wsgi/v1_1/test_pools.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1 copying build/lib/zaqar/tests/functional/wsgi/v1_1/test_queues.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1 copying build/lib/zaqar/tests/functional/wsgi/v1_1/test_health.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1 copying build/lib/zaqar/tests/functional/wsgi/v1_1/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1 copying build/lib/zaqar/tests/functional/wsgi/v1_1/test_claims.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1 copying build/lib/zaqar/tests/faulty_storage.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage copying build/lib/zaqar/tests/unit/storage/test_impl_redis.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage copying build/lib/zaqar/tests/unit/storage/test_impl_swift.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage copying build/lib/zaqar/tests/unit/storage/base.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage copying build/lib/zaqar/tests/unit/storage/test_pool_catalog_new.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage copying build/lib/zaqar/tests/unit/storage/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage copying build/lib/zaqar/tests/unit/storage/test_impl_sqlalchemy.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage copying build/lib/zaqar/tests/unit/storage/test_utils.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage copying build/lib/zaqar/tests/unit/storage/test_impl_mongodb.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/sqlalchemy_migration copying build/lib/zaqar/tests/unit/storage/sqlalchemy_migration/test_migrations.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/sqlalchemy_migration copying build/lib/zaqar/tests/unit/storage/sqlalchemy_migration/test_migrations_base.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/sqlalchemy_migration copying build/lib/zaqar/tests/unit/storage/sqlalchemy_migration/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/sqlalchemy_migration copying build/lib/zaqar/tests/unit/storage/sqlalchemy_migration/test_db_manage_cli.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/sqlalchemy_migration creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport copying build/lib/zaqar/tests/unit/transport/test_acl.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport copying build/lib/zaqar/tests/unit/transport/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket copying build/lib/zaqar/tests/unit/transport/websocket/test_protocol.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket copying build/lib/zaqar/tests/unit/transport/websocket/utils.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket copying build/lib/zaqar/tests/unit/transport/websocket/base.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2 copying build/lib/zaqar/tests/unit/transport/websocket/v2/test_messages.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2 copying build/lib/zaqar/tests/unit/transport/websocket/v2/test_subscriptions.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2 copying build/lib/zaqar/tests/unit/transport/websocket/v2/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2 copying build/lib/zaqar/tests/unit/transport/websocket/v2/test_queue_lifecycle.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2 copying build/lib/zaqar/tests/unit/transport/websocket/v2/test_auth.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2 copying build/lib/zaqar/tests/unit/transport/websocket/v2/test_claims.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2 copying build/lib/zaqar/tests/unit/transport/websocket/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi copying build/lib/zaqar/tests/unit/transport/wsgi/test_version.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi copying build/lib/zaqar/tests/unit/transport/wsgi/base.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi copying build/lib/zaqar/tests/unit/transport/wsgi/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi copying build/lib/zaqar/tests/unit/transport/wsgi/test_utils.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1/test_home.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1/test_messages.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1/test_pools.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1/test_validation.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1/test_health.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1/test_media_type.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1/test_default_limits.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1/test_queue_lifecycle.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1/test_auth.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1/test_claims.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1 creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_home.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_flavors_new.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_messages.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_subscriptions.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_validation.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_health.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_media_type.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_urls.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_default_limits.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_topic_lifecycle.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_queue_lifecycle.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_pools_new.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_purge.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_ping.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_auth.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 copying build/lib/zaqar/tests/unit/transport/wsgi/v2_0/test_claims.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0 creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1_1/test_home.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1_1/test_messages.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1_1/test_validation.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1_1/test_health.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1_1/test_media_type.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1_1/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1_1/test_default_limits.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1_1/test_queue_lifecycle.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1_1/test_ping.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1_1/test_auth.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1 copying build/lib/zaqar/tests/unit/transport/wsgi/v1_1/test_claims.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1 creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/hacking copying build/lib/zaqar/tests/unit/hacking/test_hacking.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/hacking copying build/lib/zaqar/tests/unit/hacking/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/hacking creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/cmd copying build/lib/zaqar/tests/unit/cmd/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/cmd copying build/lib/zaqar/tests/unit/cmd/test_status.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/cmd copying build/lib/zaqar/tests/unit/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/notification copying build/lib/zaqar/tests/unit/notification/test_notifier.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/notification copying build/lib/zaqar/tests/unit/notification/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/notification creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/storage copying build/lib/zaqar/tests/unit/common/storage/test_select.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/storage copying build/lib/zaqar/tests/unit/common/storage/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/storage copying build/lib/zaqar/tests/unit/common/storage/test_utils.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/storage copying build/lib/zaqar/tests/unit/common/test_pipeline.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common copying build/lib/zaqar/tests/unit/common/test_api.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common copying build/lib/zaqar/tests/unit/common/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common copying build/lib/zaqar/tests/unit/common/test_urls.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common copying build/lib/zaqar/tests/unit/common/test_request.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common copying build/lib/zaqar/tests/unit/common/test_decorators.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common copying build/lib/zaqar/tests/unit/test_bootstrap.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit copying build/lib/zaqar/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification copying build/lib/zaqar/notification/notifier.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification copying build/lib/zaqar/notification/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/tasks copying build/lib/zaqar/notification/tasks/trust.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/tasks copying build/lib/zaqar/notification/tasks/mailto.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/tasks copying build/lib/zaqar/notification/tasks/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/tasks copying build/lib/zaqar/notification/tasks/webhook.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/tasks creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies copying build/lib/zaqar/common/policies/messages.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies copying build/lib/zaqar/common/policies/flavors.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies copying build/lib/zaqar/common/policies/queues.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies copying build/lib/zaqar/common/policies/base.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies copying build/lib/zaqar/common/policies/pools.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies copying build/lib/zaqar/common/policies/subscription.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies copying build/lib/zaqar/common/policies/topics.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies copying build/lib/zaqar/common/policies/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies copying build/lib/zaqar/common/policies/health.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies copying build/lib/zaqar/common/policies/claims.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/storage copying build/lib/zaqar/common/storage/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/storage copying build/lib/zaqar/common/storage/select.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/storage copying build/lib/zaqar/common/cache.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common copying build/lib/zaqar/common/utils.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common copying build/lib/zaqar/common/consts.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common copying build/lib/zaqar/common/urls.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/transport copying build/lib/zaqar/common/transport/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/transport creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/transport/wsgi copying build/lib/zaqar/common/transport/wsgi/helpers.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/transport/wsgi copying build/lib/zaqar/common/transport/wsgi/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/transport/wsgi copying build/lib/zaqar/common/errors.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common copying build/lib/zaqar/common/access.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api copying build/lib/zaqar/common/api/utils.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api copying build/lib/zaqar/common/api/errors.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas copying build/lib/zaqar/common/api/schemas/flavors.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas copying build/lib/zaqar/common/api/schemas/pools.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas copying build/lib/zaqar/common/api/schemas/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas/v1_1 copying build/lib/zaqar/common/api/schemas/v1_1/flavors.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas/v1_1 copying build/lib/zaqar/common/api/schemas/v1_1/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas/v1_1 copying build/lib/zaqar/common/api/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api copying build/lib/zaqar/common/api/request.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api copying build/lib/zaqar/common/api/api.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api copying build/lib/zaqar/common/api/response.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api copying build/lib/zaqar/common/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common copying build/lib/zaqar/common/pipeline.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common copying build/lib/zaqar/common/cli.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common copying build/lib/zaqar/common/auth.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common copying build/lib/zaqar/common/decorators.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common copying build/lib/zaqar/version.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/locale creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/locale/en_GB creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/locale/en_GB/LC_MESSAGES copying build/lib/zaqar/locale/en_GB/LC_MESSAGES/zaqar.po -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/locale/en_GB/LC_MESSAGES creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/locale/id creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/locale/id/LC_MESSAGES copying build/lib/zaqar/locale/id/LC_MESSAGES/zaqar.po -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/locale/id/LC_MESSAGES creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/locale/es creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/locale/es/LC_MESSAGES copying build/lib/zaqar/locale/es/LC_MESSAGES/zaqar.po -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/locale/es/LC_MESSAGES creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/locale/de creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/locale/de/LC_MESSAGES copying build/lib/zaqar/locale/de/LC_MESSAGES/zaqar.po -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/locale/de/LC_MESSAGES creating /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/default.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/notification.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/transport.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/drivers_management_store_redis.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/pooling_catalog.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/drivers.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/__init__.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/storage.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/drivers_transport_wsgi.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/drivers_message_store_redis.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/profiler.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/drivers_message_store_mongodb.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/drivers_management_store_mongodb.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/drivers_message_store_swift.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/drivers_transport_websocket.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/opts.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/signed_url.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf copying build/lib/zaqar/conf/drivers_management_store_sqlalchemy.py -> /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/messages.py to messages.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/flavors.py to flavors.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/utils.py to utils.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/queues.py to queues.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/pools.py to pools.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/models.py to models.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/scripting.py to scripting.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/subscriptions.py to subscriptions.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/driver.py to driver.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/controllers.py to controllers.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/catalogue.py to catalogue.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/claims.py to claims.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/utils.py to utils.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/flavors.py to flavors.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/utils.py to utils.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/queues.py to queues.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/pools.py to pools.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/driver.py to driver.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/cli.py to cli.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/env.py to env.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/002_placeholder.py to 002_placeholder.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/005_placeholder.py to 005_placeholder.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/007_stein.py to 007_stein.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/006_queens.py to 006_queens.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/003_placeholder.py to 003_placeholder.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/001_liberty.py to 001_liberty.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/004_placeholder.py to 004_placeholder.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/controllers.py to controllers.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/catalogue.py to catalogue.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/tables.py to tables.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/configuration.py to configuration.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/base.py to base.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/errors.py to errors.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift/messages.py to messages.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift/utils.py to utils.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift/subscriptions.py to subscriptions.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift/driver.py to driver.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift/controllers.py to controllers.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift/claims.py to claims.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/pipeline.py to pipeline.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/pooling.py to pooling.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/messages.py to messages.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/flavors.py to flavors.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/utils.py to utils.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/queues.py to queues.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/pools.py to pools.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/topics.py to topics.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/subscriptions.py to subscriptions.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/driver.py to driver.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/topic_messages.py to topic_messages.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/controllers.py to controllers.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/catalogue.py to catalogue.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/claims.py to claims.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench/producer.py to producer.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench/observer.py to observer.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench/helpers.py to helpers.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench/consumer.py to consumer.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench/config.py to config.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench/conductor.py to conductor.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/i18n.py to i18n.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bootstrap.py to bootstrap.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/utils.py to utils.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/base.py to base.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/validation.py to validation.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/websocket/factory.py to factory.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/websocket/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/websocket/driver.py to driver.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/websocket/protocol.py to protocol.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/utils.py to utils.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/errors.py to errors.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/app.py to app.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/driver.py to driver.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/messages.py to messages.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/stats.py to stats.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/queues.py to queues.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/pools.py to pools.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/homedoc.py to homedoc.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/metadata.py to metadata.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/health.py to health.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/claims.py to claims.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/version.py to version.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/messages.py to messages.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/flavors.py to flavors.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/stats.py to stats.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/queues.py to queues.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/topic_stats.py to topic_stats.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/pools.py to pools.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/ping.py to ping.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/homedoc.py to homedoc.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/urls.py to urls.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/topic_purge.py to topic_purge.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/topic.py to topic.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/subscriptions.py to subscriptions.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/purge.py to purge.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/health.py to health.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/claims.py to claims.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/messages.py to messages.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/flavors.py to flavors.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/stats.py to stats.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/queues.py to queues.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/pools.py to pools.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/ping.py to ping.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/homedoc.py to homedoc.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/health.py to health.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/claims.py to claims.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/acl.py to acl.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/middleware/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/middleware/cors.py to cors.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/middleware/auth.py to auth.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/middleware/profile.py to profile.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/context.py to context.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/handler.py to handler.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v2/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v2/request.py to request.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v2/response.py to response.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v2/endpoints.py to endpoints.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1/request.py to request.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1/response.py to response.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1_1/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1_1/request.py to request.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1_1/response.py to response.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/hacking/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/hacking/checks.py to checks.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/cmd/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/cmd/status.py to status.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/cmd/gc.py to gc.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/cmd/server.py to server.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/helpers.py to helpers.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/base.py to base.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/http.py to http.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/helpers.py to helpers.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/base.py to base.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/config.py to config.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/websocket/test_queues.py to test_queues.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/websocket/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v2/test_subscriptions.py to test_subscriptions.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v2/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/test_versions.py to test_versions.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1/test_messages.py to test_messages.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1/test_queues.py to test_queues.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1/test_claims.py to test_claims.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1/test_messages.py to test_messages.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1/test_pools.py to test_pools.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1/test_queues.py to test_queues.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1/test_health.py to test_health.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1/test_claims.py to test_claims.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/faulty_storage.py to faulty_storage.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/test_impl_redis.py to test_impl_redis.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/test_impl_swift.py to test_impl_swift.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/base.py to base.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/test_pool_catalog_new.py to test_pool_catalog_new.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/test_impl_sqlalchemy.py to test_impl_sqlalchemy.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/test_utils.py to test_utils.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/test_impl_mongodb.py to test_impl_mongodb.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/sqlalchemy_migration/test_migrations.py to test_migrations.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/sqlalchemy_migration/test_migrations_base.py to test_migrations_base.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/sqlalchemy_migration/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/sqlalchemy_migration/test_db_manage_cli.py to test_db_manage_cli.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/test_acl.py to test_acl.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/test_protocol.py to test_protocol.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/utils.py to utils.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/base.py to base.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2/test_messages.py to test_messages.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2/test_subscriptions.py to test_subscriptions.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2/test_queue_lifecycle.py to test_queue_lifecycle.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2/test_auth.py to test_auth.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2/test_claims.py to test_claims.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/test_version.py to test_version.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/base.py to base.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/test_utils.py to test_utils.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_home.py to test_home.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_messages.py to test_messages.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_pools.py to test_pools.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_validation.py to test_validation.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_health.py to test_health.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_media_type.py to test_media_type.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_default_limits.py to test_default_limits.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_queue_lifecycle.py to test_queue_lifecycle.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_auth.py to test_auth.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_claims.py to test_claims.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_home.py to test_home.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_flavors_new.py to test_flavors_new.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_messages.py to test_messages.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_subscriptions.py to test_subscriptions.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_validation.py to test_validation.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_health.py to test_health.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_media_type.py to test_media_type.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_urls.py to test_urls.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_default_limits.py to test_default_limits.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_topic_lifecycle.py to test_topic_lifecycle.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_queue_lifecycle.py to test_queue_lifecycle.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_pools_new.py to test_pools_new.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_purge.py to test_purge.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_ping.py to test_ping.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_auth.py to test_auth.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_claims.py to test_claims.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_home.py to test_home.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_messages.py to test_messages.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_validation.py to test_validation.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_health.py to test_health.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_media_type.py to test_media_type.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_default_limits.py to test_default_limits.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_queue_lifecycle.py to test_queue_lifecycle.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_ping.py to test_ping.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_auth.py to test_auth.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_claims.py to test_claims.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/hacking/test_hacking.py to test_hacking.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/hacking/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/cmd/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/cmd/test_status.py to test_status.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/notification/test_notifier.py to test_notifier.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/notification/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/storage/test_select.py to test_select.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/storage/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/storage/test_utils.py to test_utils.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/test_pipeline.py to test_pipeline.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/test_api.py to test_api.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/test_urls.py to test_urls.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/test_request.py to test_request.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/test_decorators.py to test_decorators.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/test_bootstrap.py to test_bootstrap.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/notifier.py to notifier.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/tasks/trust.py to trust.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/tasks/mailto.py to mailto.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/tasks/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/tasks/webhook.py to webhook.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/messages.py to messages.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/flavors.py to flavors.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/queues.py to queues.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/base.py to base.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/pools.py to pools.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/subscription.py to subscription.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/topics.py to topics.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/health.py to health.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/claims.py to claims.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/storage/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/storage/select.py to select.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/cache.py to cache.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/utils.py to utils.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/consts.py to consts.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/urls.py to urls.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/transport/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/transport/wsgi/helpers.py to helpers.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/transport/wsgi/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/errors.py to errors.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/access.py to access.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/utils.py to utils.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/errors.py to errors.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas/flavors.py to flavors.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas/pools.py to pools.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas/v1_1/flavors.py to flavors.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas/v1_1/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/request.py to request.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/api.py to api.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/response.py to response.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/pipeline.py to pipeline.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/cli.py to cli.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/auth.py to auth.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/decorators.py to decorators.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/version.py to version.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/default.py to default.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/notification.py to notification.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/transport.py to transport.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_management_store_redis.py to drivers_management_store_redis.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/pooling_catalog.py to pooling_catalog.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers.py to drivers.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/__init__.py to __init__.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/storage.py to storage.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_transport_wsgi.py to drivers_transport_wsgi.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_message_store_redis.py to drivers_message_store_redis.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/profiler.py to profiler.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_message_store_mongodb.py to drivers_message_store_mongodb.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_management_store_mongodb.py to drivers_management_store_mongodb.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_message_store_swift.py to drivers_message_store_swift.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_transport_websocket.py to drivers_transport_websocket.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/opts.py to opts.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/signed_url.py to signed_url.cpython-38.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_management_store_sqlalchemy.py to drivers_management_store_sqlalchemy.cpython-38.pyc running install_egg_info Copying zaqar.egg-info to /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar-9.0.0.egg-info Skipping SOURCES.txt running install_scripts Installing zaqar-bench script to /<>/debian/python3-zaqar/usr/bin Installing zaqar-gc script to /<>/debian/python3-zaqar/usr/bin Installing zaqar-server script to /<>/debian/python3-zaqar/usr/bin Installing zaqar-sql-db-manage script to /<>/debian/python3-zaqar/usr/bin Installing zaqar-status script to /<>/debian/python3-zaqar/usr/bin /usr/lib/python3/dist-packages/pbr/packaging.py:436: EasyInstallDeprecationWarning: Use get_header header = easy_install.get_script_header("", executable, is_wininst) + pwd + python3.7 setup.py install --install-layout=deb --root /<>/debian/python3-zaqar running install [pbr] Generating AUTHORS [pbr] AUTHORS complete (0.0s) running build running build_py running egg_info writing zaqar.egg-info/PKG-INFO writing dependency_links to zaqar.egg-info/dependency_links.txt writing entry points to zaqar.egg-info/entry_points.txt writing requirements to zaqar.egg-info/requires.txt writing top-level names to zaqar.egg-info/top_level.txt [pbr] Reusing existing SOURCES.txt running install_lib byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/messages.py to messages.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/flavors.py to flavors.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/utils.py to utils.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/queues.py to queues.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/pools.py to pools.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/models.py to models.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/scripting.py to scripting.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/subscriptions.py to subscriptions.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/driver.py to driver.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/controllers.py to controllers.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/catalogue.py to catalogue.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/redis/claims.py to claims.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/utils.py to utils.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/flavors.py to flavors.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/utils.py to utils.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/queues.py to queues.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/pools.py to pools.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/driver.py to driver.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/cli.py to cli.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/env.py to env.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/002_placeholder.py to 002_placeholder.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/005_placeholder.py to 005_placeholder.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/007_stein.py to 007_stein.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/006_queens.py to 006_queens.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/003_placeholder.py to 003_placeholder.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/001_liberty.py to 001_liberty.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/migration/alembic_migrations/versions/004_placeholder.py to 004_placeholder.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/controllers.py to controllers.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/catalogue.py to catalogue.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/sqlalchemy/tables.py to tables.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/configuration.py to configuration.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/base.py to base.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/errors.py to errors.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift/messages.py to messages.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift/utils.py to utils.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift/subscriptions.py to subscriptions.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift/driver.py to driver.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift/controllers.py to controllers.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/swift/claims.py to claims.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/pipeline.py to pipeline.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/pooling.py to pooling.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/messages.py to messages.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/flavors.py to flavors.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/utils.py to utils.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/queues.py to queues.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/pools.py to pools.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/topics.py to topics.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/subscriptions.py to subscriptions.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/driver.py to driver.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/topic_messages.py to topic_messages.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/controllers.py to controllers.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/catalogue.py to catalogue.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/storage/mongodb/claims.py to claims.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench/producer.py to producer.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench/observer.py to observer.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench/helpers.py to helpers.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench/consumer.py to consumer.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench/config.py to config.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bench/conductor.py to conductor.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/i18n.py to i18n.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/bootstrap.py to bootstrap.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/utils.py to utils.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/base.py to base.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/validation.py to validation.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/websocket/factory.py to factory.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/websocket/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/websocket/driver.py to driver.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/websocket/protocol.py to protocol.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/utils.py to utils.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/errors.py to errors.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/app.py to app.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/driver.py to driver.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/messages.py to messages.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/stats.py to stats.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/queues.py to queues.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/pools.py to pools.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/homedoc.py to homedoc.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/metadata.py to metadata.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/health.py to health.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_0/claims.py to claims.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/version.py to version.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/messages.py to messages.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/flavors.py to flavors.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/stats.py to stats.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/queues.py to queues.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/topic_stats.py to topic_stats.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/pools.py to pools.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/ping.py to ping.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/homedoc.py to homedoc.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/urls.py to urls.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/topic_purge.py to topic_purge.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/topic.py to topic.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/subscriptions.py to subscriptions.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/purge.py to purge.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/health.py to health.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v2_0/claims.py to claims.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/messages.py to messages.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/flavors.py to flavors.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/stats.py to stats.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/queues.py to queues.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/pools.py to pools.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/ping.py to ping.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/homedoc.py to homedoc.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/health.py to health.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/wsgi/v1_1/claims.py to claims.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/acl.py to acl.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/middleware/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/middleware/cors.py to cors.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/middleware/auth.py to auth.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/transport/middleware/profile.py to profile.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/context.py to context.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/handler.py to handler.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v2/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v2/request.py to request.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v2/response.py to response.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v2/endpoints.py to endpoints.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1/request.py to request.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1/response.py to response.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1_1/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1_1/request.py to request.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/api/v1_1/response.py to response.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/hacking/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/hacking/checks.py to checks.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/cmd/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/cmd/status.py to status.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/cmd/gc.py to gc.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/cmd/server.py to server.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/helpers.py to helpers.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/base.py to base.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/http.py to http.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/helpers.py to helpers.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/base.py to base.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/config.py to config.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/websocket/test_queues.py to test_queues.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/websocket/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v2/test_subscriptions.py to test_subscriptions.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v2/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/test_versions.py to test_versions.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1/test_messages.py to test_messages.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1/test_queues.py to test_queues.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1/test_claims.py to test_claims.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1/test_messages.py to test_messages.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1/test_pools.py to test_pools.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1/test_queues.py to test_queues.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1/test_health.py to test_health.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/functional/wsgi/v1_1/test_claims.py to test_claims.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/faulty_storage.py to faulty_storage.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/test_impl_redis.py to test_impl_redis.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/test_impl_swift.py to test_impl_swift.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/base.py to base.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/test_pool_catalog_new.py to test_pool_catalog_new.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/test_impl_sqlalchemy.py to test_impl_sqlalchemy.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/test_utils.py to test_utils.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/test_impl_mongodb.py to test_impl_mongodb.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/sqlalchemy_migration/test_migrations.py to test_migrations.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/sqlalchemy_migration/test_migrations_base.py to test_migrations_base.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/sqlalchemy_migration/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/storage/sqlalchemy_migration/test_db_manage_cli.py to test_db_manage_cli.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/test_acl.py to test_acl.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/test_protocol.py to test_protocol.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/utils.py to utils.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/base.py to base.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2/test_messages.py to test_messages.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2/test_subscriptions.py to test_subscriptions.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2/test_queue_lifecycle.py to test_queue_lifecycle.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2/test_auth.py to test_auth.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/v2/test_claims.py to test_claims.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/websocket/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/test_version.py to test_version.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/base.py to base.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/test_utils.py to test_utils.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_home.py to test_home.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_messages.py to test_messages.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_pools.py to test_pools.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_validation.py to test_validation.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_health.py to test_health.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_media_type.py to test_media_type.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_default_limits.py to test_default_limits.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_queue_lifecycle.py to test_queue_lifecycle.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_auth.py to test_auth.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1/test_claims.py to test_claims.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_home.py to test_home.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_flavors_new.py to test_flavors_new.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_messages.py to test_messages.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_subscriptions.py to test_subscriptions.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_validation.py to test_validation.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_health.py to test_health.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_media_type.py to test_media_type.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_urls.py to test_urls.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_default_limits.py to test_default_limits.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_topic_lifecycle.py to test_topic_lifecycle.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_queue_lifecycle.py to test_queue_lifecycle.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_pools_new.py to test_pools_new.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_purge.py to test_purge.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_ping.py to test_ping.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_auth.py to test_auth.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v2_0/test_claims.py to test_claims.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_home.py to test_home.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_messages.py to test_messages.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_validation.py to test_validation.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_health.py to test_health.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_media_type.py to test_media_type.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_default_limits.py to test_default_limits.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_queue_lifecycle.py to test_queue_lifecycle.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_ping.py to test_ping.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_auth.py to test_auth.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/transport/wsgi/v1_1/test_claims.py to test_claims.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/hacking/test_hacking.py to test_hacking.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/hacking/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/cmd/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/cmd/test_status.py to test_status.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/notification/test_notifier.py to test_notifier.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/notification/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/storage/test_select.py to test_select.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/storage/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/storage/test_utils.py to test_utils.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/test_pipeline.py to test_pipeline.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/test_api.py to test_api.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/test_urls.py to test_urls.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/test_request.py to test_request.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/common/test_decorators.py to test_decorators.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/tests/unit/test_bootstrap.py to test_bootstrap.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/notifier.py to notifier.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/tasks/trust.py to trust.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/tasks/mailto.py to mailto.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/tasks/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/notification/tasks/webhook.py to webhook.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/messages.py to messages.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/flavors.py to flavors.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/queues.py to queues.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/base.py to base.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/pools.py to pools.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/subscription.py to subscription.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/topics.py to topics.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/health.py to health.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/policies/claims.py to claims.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/storage/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/storage/select.py to select.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/cache.py to cache.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/utils.py to utils.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/consts.py to consts.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/urls.py to urls.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/transport/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/transport/wsgi/helpers.py to helpers.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/transport/wsgi/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/errors.py to errors.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/access.py to access.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/utils.py to utils.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/errors.py to errors.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas/flavors.py to flavors.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas/pools.py to pools.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas/v1_1/flavors.py to flavors.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/schemas/v1_1/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/request.py to request.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/api.py to api.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/api/response.py to response.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/pipeline.py to pipeline.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/cli.py to cli.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/auth.py to auth.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/common/decorators.py to decorators.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/version.py to version.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/default.py to default.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/notification.py to notification.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/transport.py to transport.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_management_store_redis.py to drivers_management_store_redis.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/pooling_catalog.py to pooling_catalog.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers.py to drivers.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/__init__.py to __init__.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/storage.py to storage.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_transport_wsgi.py to drivers_transport_wsgi.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_message_store_redis.py to drivers_message_store_redis.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/profiler.py to profiler.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_message_store_mongodb.py to drivers_message_store_mongodb.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_management_store_mongodb.py to drivers_management_store_mongodb.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_message_store_swift.py to drivers_message_store_swift.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_transport_websocket.py to drivers_transport_websocket.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/opts.py to opts.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/signed_url.py to signed_url.cpython-37.pyc byte-compiling /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar/conf/drivers_management_store_sqlalchemy.py to drivers_management_store_sqlalchemy.cpython-37.pyc running install_egg_info removing '/<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar-9.0.0.egg-info' (and everything under it) Copying zaqar.egg-info to /<>/debian/python3-zaqar/usr/lib/python3/dist-packages/zaqar-9.0.0.egg-info Skipping SOURCES.txt running install_scripts Installing zaqar-bench script to /<>/debian/python3-zaqar/usr/bin Installing zaqar-gc script to /<>/debian/python3-zaqar/usr/bin Installing zaqar-server script to /<>/debian/python3-zaqar/usr/bin Installing zaqar-sql-db-manage script to /<>/debian/python3-zaqar/usr/bin Installing zaqar-status script to /<>/debian/python3-zaqar/usr/bin /usr/lib/python3/dist-packages/pbr/packaging.py:436: EasyInstallDeprecationWarning: Use get_header header = easy_install.get_script_header("", executable, is_wininst) + pwd + rm -rf /<>/debian/python*/usr/lib/python*/dist-packages/*.pth + pwd + rm -rf /<>/debian/tmp/usr/lib/python*/dist-packages/*.pth + pwd + [ -d /<>/debian/python-zaqar/usr/bin ] bash -x ./debian/setup-test-env-mongodb.sh pkgos-dh_auto_test --no-py2 'zaqar\.tests\.unit.(?!(.*transport\.websocket\.v2\.test_messages\.MessagesBaseTest\.test_post_multiple_2_False.*|.*transport\.websocket\.v2\.test_claims.*|.*transport\.websocket\.v2\.test_queue_lifecycle\.QueueLifecycleBaseTest\.test_list.*|.*transport\.websocket\.v2\.test_subscriptions\.SubscriptionTest\.test_subscription.*|.*transport\.websocket\.v2\.test_messages\.MessagesBaseTest.*))' + set -e + '[' pkgos-dh_auto_test = --coverage ']' + export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/sbin:/usr/sbin + PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/sbin:/usr/sbin + check_for_cmd mongod + which mongod ++ mktemp -d /tmp/CEILO-MONGODB-XXXXX + MONGO_DATA=/tmp/CEILO-MONGODB-7Xlh4 + MONGO_PORT=27011 + trap 'clean_exit /tmp/CEILO-MONGODB-7Xlh4' EXIT + mkfifo /tmp/CEILO-MONGODB-7Xlh4/out + wait_for_line 'waiting for connections on port 27011' /tmp/CEILO-MONGODB-7Xlh4/out + mongod --maxConns 32 --nojournal --noprealloc --smallfiles --quiet --noauth --port 27011 --dbpath /tmp/CEILO-MONGODB-7Xlh4 --bind_ip localhost --config /dev/null + read line + echo '2020-01-05T10:24:04.234+0000 I CONTROL [main] note: noprealloc may hurt performance in many applications' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:04.269+0000 I CONTROL [initandlisten] MongoDB starting : pid=11430 port=27011 dbpath=/tmp/CEILO-MONGODB-7Xlh4 64-bit host=lcy01-amd64-005' + grep -q 'waiting for connections on port 27011' + read line + grep -q 'waiting for connections on port 27011' + echo '2020-01-05T10:24:04.269+0000 I CONTROL [initandlisten] db version v3.6.8' + read line + echo '2020-01-05T10:24:04.269+0000 I CONTROL [initandlisten] git version: 8e540c0b6db93ce994cc548f000900bdc740f80a' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:04.269+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.1.1c 28 May 2019' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:04.269+0000 I CONTROL [initandlisten] allocator: tcmalloc' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:04.269+0000 I CONTROL [initandlisten] modules: none' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:04.269+0000 I CONTROL [initandlisten] build environment:' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:04.269+0000 I CONTROL [initandlisten] distarch: x86_64' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:04.269+0000 I CONTROL [initandlisten] target_arch: x86_64' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:04.269+0000 I CONTROL [initandlisten] options: { config: "/dev/null", net: { bindIp: "localhost", maxIncomingConnections: 32, port: 27011 }, security: { authorization: "disabled" }, storage: { dbPath: "/tmp/CEILO-MONGODB-7Xlh4", journal: { enabled: false }, mmapv1: { preallocDataFiles: false, smallFiles: true } }, systemLog: { quiet: true } }' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:04.270+0000 I STORAGE [initandlisten]' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:04.270+0000 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:04.270+0000 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:04.270+0000 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=3479M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),cache_cursors=false,compatibility=(release="3.0",require_max="3.0"),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),,log=(enabled=false),' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:05.053+0000 I STORAGE [initandlisten] WiredTiger message [1578219845:53109][11430:0x7f98e6ce4a40], txn-recover: Set global recovery timestamp: 0' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:05.074+0000 W STORAGE [initandlisten] Detected configuration for non-active storage engine mmapv1 when current storage engine is wiredTiger' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:05.074+0000 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:05.074+0000 I CONTROL [initandlisten]' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:05.076+0000 I CONTROL [initandlisten]' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:05.076+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is '\''always'\''.' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:05.076+0000 I CONTROL [initandlisten] ** We suggest setting it to '\''never'\''' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:05.076+0000 I CONTROL [initandlisten]' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:05.077+0000 I STORAGE [initandlisten] createCollection: admin.system.version with provided UUID: 02bfe8d8-f41e-4500-a139-ac10b9d078b2' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:05.088+0000 I COMMAND [initandlisten] setting featureCompatibilityVersion to 3.6' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:05.095+0000 I STORAGE [initandlisten] createCollection: local.startup_log with generated UUID: 55634ae0-af38-4b9e-9a15-cb1b23462b58' + grep -q 'waiting for connections on port 27011' + read line + echo '2020-01-05T10:24:05.106+0000 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '\''/tmp/CEILO-MONGODB-7Xlh4/diagnostic.data'\''' + grep -q 'waiting for connections on port 27011' + read line + grep -q 'waiting for connections on port 27011' + echo '2020-01-05T10:24:05.106+0000 I NETWORK [initandlisten] waiting for connections on port 27011' + break + cat /tmp/CEILO-MONGODB-7Xlh4/out + cat /tmp/CEILO-MONGODB-7Xlh4/out ++ pwd + export ZAQAR_TESTS_CONFIGS_DIR=/<>/zaqar/tests/etc + ZAQAR_TESTS_CONFIGS_DIR=/<>/zaqar/tests/etc + export ZAQAR_TEST_MONGODB_URL=mongodb://localhost:27011 + ZAQAR_TEST_MONGODB_URL=mongodb://localhost:27011 + pkgos-dh_auto_test --no-py2 'zaqar\.tests\.unit.(?!(.*transport\.websocket\.v2\.test_messages\.MessagesBaseTest\.test_post_multiple_2_False.*|.*transport\.websocket\.v2\.test_claims.*|.*transport\.websocket\.v2\.test_queue_lifecycle\.QueueLifecycleBaseTest\.test_list.*|.*transport\.websocket\.v2\.test_subscriptions\.SubscriptionTest\.test_subscription.*|.*transport\.websocket\.v2\.test_messages\.MessagesBaseTest.*))' + PKGOS_USE_PY2=yes + PKGOS_USE_PY3=yes + PKGOS_TEST_PARALLEL=yes + PYTHONS=disabled + PYTHON3S=disabled + TEST_PARALLEL_OPT=--parallel + PKGOS_USE_PY2=no + shift + [ no = yes ] + [ yes = yes ] + py3versions -vr + PYTHON3S=3.8 3.7 + [ yes = no ] + [ disabled = disabled ] + continue + [ 3.8 = disabled ] + echo 3.8 + cut -d. -f1 + PYMAJOR=3 + echo ===> Testing with python (python3) ===> Testing with python (python3) + [ 3 = 3 ] + pwd + [ -d /<>/debian/tmp/usr/lib/python3/dist-packages ] + [ -e .stestr.conf ] + [ -x /usr/bin/python3-stestr ] + STESTR=stestr + rm -rf .stestr + PYTHON=python3.8 stestr run --subunit zaqar\.tests\.unit.(?!(.*transport\.websocket\.v2\.test_messages\.MessagesBaseTest\.test_post_multiple_2_False.*|.*transport\.websocket\.v2\.test_claims.*|.*transport\.websocket\.v2\.test_queue_lifecycle\.QueueLifecycleBaseTest\.test_list.*|.*transport\.websocket\.v2\.test_subscriptions\.SubscriptionTest\.test_subscription.*|.*transport\.websocket\.v2\.test_messages\.MessagesBaseTest.*)) + subunit2pyunit zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_returns_an_object_it_was_given zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_returns_an_object_it_was_given ... ok zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_returns_first_if_selector_is_zero zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_returns_first_if_selector_is_zero ... ok zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_returns_none_if_selector_oob zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_returns_none_if_selector_oob ... ok zaqar.tests.unit.common.storage.test_utils.TestUtils.test_can_connect_fails_if_bad_uri_mongodb zaqar.tests.unit.common.storage.test_utils.TestUtils.test_can_connect_fails_if_bad_uri_mongodb ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.common.storage.test_utils.TestUtils.test_can_connect_fails_if_bad_uri_redis zaqar.tests.unit.common.storage.test_utils.TestUtils.test_can_connect_fails_if_bad_uri_redis ... skipped 'Skipping tests that require Redis. Ensure Redis is running on localhost and then set ZAQAR_TEST_REDIS in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.common.storage.test_utils.TestUtils.test_can_connect_succeeds_if_good_uri_redis zaqar.tests.unit.common.storage.test_utils.TestUtils.test_can_connect_succeeds_if_good_uri_redis ... skipped 'Skipping tests that require Redis. Ensure Redis is running on localhost and then set ZAQAR_TEST_REDIS in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.common.test_api.TestApi.test_invalid_operation zaqar.tests.unit.common.test_api.TestApi.test_invalid_operation ... ok zaqar.tests.unit.common.test_pipeline.TestPipeLine.test_attribute_error zaqar.tests.unit.common.test_pipeline.TestPipeLine.test_attribute_error ... ok zaqar.tests.unit.common.test_pipeline.TestPipeLine.test_calls_the_latest zaqar.tests.unit.common.test_pipeline.TestPipeLine.test_calls_the_latest ... ok zaqar.tests.unit.common.test_pipeline.TestPipeLine.test_pipeline_context_manager zaqar.tests.unit.common.test_pipeline.TestPipeLine.test_pipeline_context_manager ... ok zaqar.tests.unit.notification.test_notifier.NotifierTest.test_send_confirm_notification zaqar.tests.unit.notification.test_notifier.NotifierTest.test_send_confirm_notification ... ok zaqar.tests.unit.notification.test_notifier.NotifierTest.test_webhook zaqar.tests.unit.notification.test_notifier.NotifierTest.test_webhook ... ok zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(stamp) zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(stamp) ... ok zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(sync_revision_autogenerate) zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(sync_revision_autogenerate) ... ok zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(upgrade-delta) zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(upgrade-delta) ... ok zaqar.tests.unit.storage.test_impl_mongodb.MongodbUtilsTest.test_calculate_backoff zaqar.tests.unit.storage.test_impl_mongodb.MongodbUtilsTest.test_calculate_backoff ... ok zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_normalize_none_str zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_normalize_none_str ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_exists zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_exists ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_get zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_get ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_update_raises_when_entry_does_not_exist zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_update_raises_when_entry_does_not_exist ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_delete_works zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_delete_works ... ok zaqar.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_placeholder zaqar.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_placeholder ... ok zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_returns_none_if_no_objs zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_returns_none_if_no_objs ... ok zaqar.tests.unit.common.storage.test_utils.TestUtils.test_can_connect_succeeds_if_good_uri_mongo zaqar.tests.unit.common.storage.test_utils.TestUtils.test_can_connect_succeeds_if_good_uri_mongo ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.common.test_decorators.TestDecorators.test_cached zaqar.tests.unit.common.test_decorators.TestDecorators.test_cached ... ok zaqar.tests.unit.common.test_pipeline.TestPipeLine.test_with_args zaqar.tests.unit.common.test_pipeline.TestPipeLine.test_with_args ... ok zaqar.tests.unit.common.test_pipeline.TestPipeLine.test_with_args_kwargs zaqar.tests.unit.common.test_pipeline.TestPipeLine.test_with_args_kwargs ... ok zaqar.tests.unit.common.test_urls.TestURLs.test_create_signed_url zaqar.tests.unit.common.test_urls.TestURLs.test_create_signed_url ... ok zaqar.tests.unit.notification.test_notifier.NotifierTest.test_post_no_subscriber zaqar.tests.unit.notification.test_notifier.NotifierTest.test_post_no_subscriber ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_exists zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_exists ... ok zaqar.tests.unit.notification.test_notifier.NotifierTest.test_send_confirm_notification_with_email_2_True zaqar.tests.unit.notification.test_notifier.NotifierTest.test_send_confirm_notification_with_email_2_True ... ok zaqar.tests.unit.notification.test_notifier.NotifierTest.test_webhook_post_data zaqar.tests.unit.notification.test_notifier.NotifierTest.test_webhook_post_data ... ok zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(current) zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(current) ... ok zaqar.tests.unit.storage.test_impl_mongodb.MongodbUtilsTest.test_scope_queue_name zaqar.tests.unit.storage.test_impl_mongodb.MongodbUtilsTest.test_scope_queue_name ... ok zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_descope_queue_name zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_descope_queue_name ... ok zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_msg_claimed_filter zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_msg_claimed_filter ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.MsgidTests.test_decode zaqar.tests.unit.storage.test_impl_sqlalchemy.MsgidTests.test_decode ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_get_returns_expected_content zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_get_returns_expected_content ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_update_works zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_update_works ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_catalogue_entry_life_cycle zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_catalogue_entry_life_cycle ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_delete_nonexistent_is_silent zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_delete_nonexistent_is_silent ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_detailed_get_returns_expected_content zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_detailed_get_returns_expected_content ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_get_raises_if_does_not_exist zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_get_raises_if_does_not_exist ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_create_replaces_on_duplicate_insert zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_create_replaces_on_duplicate_insert ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_mismatching_capabilities1 zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_mismatching_capabilities1 ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_delete_nonexistent_is_silent zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_delete_nonexistent_is_silent ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_drop_all_leads_to_empty_listing zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_drop_all_leads_to_empty_listing ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyQueueTests.test_list_1_None zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyQueueTests.test_list_1_None ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyQueueTests.test_list_2_project zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyQueueTests.test_list_2_project ... Could not load invalid Failed to load "zaqar.data.storage" driver for "invalid" No 'zaqar.data.storage' driver found, looking for 'invalid' Traceback (most recent call last): File "/<>/zaqar/storage/utils.py", line 136, in load_storage_driver mgr = driver.DriverManager(driver_type, File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 53, in __init__ super(DriverManager, self).__init__( File "/usr/lib/python3/dist-packages/stevedore/named.py", line 89, in __init__ self._init_plugins(extensions) File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 112, in _init_plugins raise NoMatches('No %r driver found, looking for %r' % stevedore.exception.NoMatches: No 'zaqar.data.storage' driver found, looking for 'invalid' ok zaqar.tests.unit.test_bootstrap.TestBootstrap.test_storage_invalid zaqar.tests.unit.test_bootstrap.TestBootstrap.test_storage_invalid ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_listing_simple zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_listing_simple ... Could not load localhost No 'zaqar.data.storage' driver found, looking for 'localhost' Traceback (most recent call last): File "/<>/zaqar/storage/utils.py", line 92, in load_storage_impl mgr = driver.DriverManager(driver_type, storage_type, File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 53, in __init__ super(DriverManager, self).__init__( File "/usr/lib/python3/dist-packages/stevedore/named.py", line 89, in __init__ self._init_plugins(extensions) File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 112, in _init_plugins raise NoMatches('No %r driver found, looking for %r' % stevedore.exception.NoMatches: No 'zaqar.data.storage' driver found, looking for 'localhost' ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_create_replaces_on_duplicate_insert zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_create_replaces_on_duplicate_insert ... Could not load localhost No 'zaqar.data.storage' driver found, looking for 'localhost' Traceback (most recent call last): File "/<>/zaqar/storage/utils.py", line 92, in load_storage_impl mgr = driver.DriverManager(driver_type, storage_type, File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 53, in __init__ super(DriverManager, self).__init__( File "/usr/lib/python3/dist-packages/stevedore/named.py", line 89, in __init__ self._init_plugins(extensions) File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 112, in _init_plugins raise NoMatches('No %r driver found, looking for %r' % stevedore.exception.NoMatches: No 'zaqar.data.storage' driver found, looking for 'localhost' Could not load sqlalchemy Failed to load "zaqar.data.storage" driver for "sqlalchemy" No 'zaqar.data.storage' driver found, looking for 'sqlalchemy' Traceback (most recent call last): File "/<>/zaqar/storage/utils.py", line 136, in load_storage_driver mgr = driver.DriverManager(driver_type, File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 53, in __init__ super(DriverManager, self).__init__( File "/usr/lib/python3/dist-packages/stevedore/named.py", line 89, in __init__ self._init_plugins(extensions) File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 112, in _init_plugins raise NoMatches('No %r driver found, looking for %r' % stevedore.exception.NoMatches: No 'zaqar.data.storage' driver found, looking for 'sqlalchemy' FAIL zaqar.tests.unit.test_bootstrap.TestBootstrap.test_storage_mongodb_pooled zaqar.tests.unit.test_bootstrap.TestBootstrap.test_storage_mongodb_pooled ... ok zaqar.tests.unit.test_bootstrap.TestBootstrap.test_transport_invalid zaqar.tests.unit.test_bootstrap.TestBootstrap.test_transport_invalid ... ok zaqar.tests.unit.transport.test_acl.TestAcl.test_policy_allow zaqar.tests.unit.transport.test_acl.TestAcl.test_policy_allow ... ok zaqar.tests.unit.transport.test_acl.TestAcl.test_policy_deny zaqar.tests.unit.transport.test_acl.TestAcl.test_policy_deny ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_create_succeeds zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_create_succeeds ... FAIL zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_drop_all_leads_to_empty_listing zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_drop_all_leads_to_empty_listing ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_exists zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_exists ... ok zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_ignores_zero_weight_objs zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_ignores_zero_weight_objs ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_get_returns_expected_content zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_get_returns_expected_content ... ok zaqar.tests.unit.common.storage.test_utils.TestUtils.test_can_connect_fails_if_bad_uri_missing_schema zaqar.tests.unit.common.storage.test_utils.TestUtils.test_can_connect_fails_if_bad_uri_missing_schema ... ok zaqar.tests.unit.common.test_api.TestApi.test_invalid_params zaqar.tests.unit.common.test_api.TestApi.test_invalid_params ... ok zaqar.tests.unit.common.test_api.TestApi.test_missing_params zaqar.tests.unit.common.test_api.TestApi.test_missing_params ... ok zaqar.tests.unit.common.test_decorators.TestDecorators.test_api_version_manager zaqar.tests.unit.common.test_decorators.TestDecorators.test_api_version_manager ... ok zaqar.tests.unit.common.test_decorators.TestDecorators.test_cached_with_cond zaqar.tests.unit.common.test_decorators.TestDecorators.test_cached_with_cond ... ok zaqar.tests.unit.common.test_decorators.TestDecorators.test_memoized_getattr zaqar.tests.unit.common.test_decorators.TestDecorators.test_memoized_getattr ... ok zaqar.tests.unit.common.test_pipeline.TestPipeLine.test_with_kwargs zaqar.tests.unit.common.test_pipeline.TestPipeLine.test_with_kwargs ... ok zaqar.tests.unit.hacking.test_hacking.HackingTestCase.test_no_log_translations zaqar.tests.unit.hacking.test_hacking.HackingTestCase.test_no_log_translations ... ok zaqar.tests.unit.notification.test_notifier.NotifierTest.test_mailto zaqar.tests.unit.notification.test_notifier.NotifierTest.test_mailto ... ok zaqar.tests.unit.notification.test_notifier.NotifierTest.test_proper_notification_data zaqar.tests.unit.notification.test_notifier.NotifierTest.test_proper_notification_data ... Caught ConnectionError, retrying the call to ._raises_connection_error at 0x7fcdc0e21040> ok zaqar.tests.unit.notification.test_notifier.NotifierTest.test_require_confirmation_false zaqar.tests.unit.notification.test_notifier.NotifierTest.test_require_confirmation_false ... ok zaqar.tests.unit.notification.test_notifier.NotifierTest.test_webhook_backoff_function zaqar.tests.unit.notification.test_notifier.NotifierTest.test_webhook_backoff_function ... ok zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(stamp-sql) zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(stamp-sql) ... ok zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_descope_messages_set zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_descope_messages_set ... ok zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_msg_echo_filter zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_msg_echo_filter ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_listing_simple zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_listing_simple ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_update_raises_assertion_error_on_bad_fields zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_update_raises_assertion_error_on_bad_fields ... Caught ConnectionError, retrying the call to ._raises_connection_error at 0x7fcdc0e21040> Response: API v2 txt, 400. Request: action "None", body {}. Response: API v2 txt, 400. Request: action "None", body {}. ok zaqar.tests.unit.test_bootstrap.TestBootstrap.test_transport_websocket zaqar.tests.unit.test_bootstrap.TestBootstrap.test_transport_websocket ... ok zaqar.tests.unit.transport.websocket.test_protocol.TestMessagingProtocol.test_on_message_with_invalid_input zaqar.tests.unit.transport.websocket.test_protocol.TestMessagingProtocol.test_on_message_with_invalid_input ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_boundaries zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_boundaries ... ok zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_returns_last_if_selector_is_sum_minus_one zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_returns_last_if_selector_is_sum_minus_one ... ok zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_returns_none_if_objs_have_zero_weight zaqar.tests.unit.common.storage.test_select.TestSelect.test_weighted_returns_none_if_objs_have_zero_weight ... ok zaqar.tests.unit.common.test_api.TestApi.test_valid_params zaqar.tests.unit.common.test_api.TestApi.test_valid_params ... ok zaqar.tests.unit.common.test_pipeline.TestPipeLine.test_does_nothing zaqar.tests.unit.common.test_pipeline.TestPipeLine.test_does_nothing ... ok zaqar.tests.unit.common.test_request.TestRequest.test_request zaqar.tests.unit.common.test_request.TestRequest.test_request ... ok zaqar.tests.unit.common.test_urls.TestURLs.test_create_signed_url_multiple_paths zaqar.tests.unit.common.test_urls.TestURLs.test_create_signed_url_multiple_paths ... ok zaqar.tests.unit.common.test_urls.TestURLs.test_create_signed_url_utc zaqar.tests.unit.common.test_urls.TestURLs.test_create_signed_url_utc ... ok zaqar.tests.unit.common.test_urls.TestURLs.test_create_signed_urls_validation zaqar.tests.unit.common.test_urls.TestURLs.test_create_signed_urls_validation ... ok zaqar.tests.unit.notification.test_notifier.NotifierTest.test_marker zaqar.tests.unit.notification.test_notifier.NotifierTest.test_marker ... Response: API v2 txt, 401. Request: action "authenticate", body {}. ok zaqar.tests.unit.notification.test_notifier.NotifierTest.test_send_confirm_notification_with_email_1_False zaqar.tests.unit.notification.test_notifier.NotifierTest.test_send_confirm_notification_with_email_1_False ... ok zaqar.tests.unit.notification.test_notifier.NotifierTest.test_send_confirm_notification_without_signed_url zaqar.tests.unit.notification.test_notifier.NotifierTest.test_send_confirm_notification_without_signed_url ... ok zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(history) zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(history) ... ok zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(check_migration) zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(check_migration) ... ok zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(sync_revision_sql) zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(sync_revision_sql) ... ok zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(upgrade-sql) zaqar.tests.unit.storage.sqlalchemy_migration.test_db_manage_cli.TestCli.test_cli(upgrade-sql) ... ok zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_failed_auth zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_failed_auth ... Caught ConnectionError, retrying the call to ._raises_connection_error at 0x7fcdc0e21040> The option "oslo-config-config" is not known to keystonemiddleware The option "oslo-config-project" is not known to keystonemiddleware AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True. Use of the auth_admin_prefix, auth_host, auth_port, auth_protocol, identity_uri, admin_token, admin_user, admin_password, and admin_tenant_name configuration options was deprecated in the Mitaka release in favor of an auth_plugin and its related options. This class may be removed in a future release. Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the Newton release, use 'identity_uri' instead. Configuring www_authenticate_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint The option "oslo-config-config" is not known to keystonemiddleware The option "oslo-config-project" is not known to keystonemiddleware AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True. Use of the auth_admin_prefix, auth_host, auth_port, auth_protocol, identity_uri, admin_token, admin_user, admin_password, and admin_tenant_name configuration options was deprecated in the Mitaka release in favor of an auth_plugin and its related options. This class may be removed in a future release. Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the Newton release, use 'identity_uri' instead. Configuring www_authenticate_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint ok zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_reauth zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_reauth ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. The option "oslo-config-config" is not known to keystonemiddleware The option "oslo-config-project" is not known to keystonemiddleware AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True. Use of the auth_admin_prefix, auth_host, auth_port, auth_protocol, identity_uri, admin_token, admin_user, admin_password, and admin_tenant_name configuration options was deprecated in the Mitaka release in favor of an auth_plugin and its related options. This class may be removed in a future release. Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the Newton release, use 'identity_uri' instead. Configuring www_authenticate_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint Response: API v2 txt, 401. Request: action "authenticate", body {}. The option "oslo-config-config" is not known to keystonemiddleware The option "oslo-config-project" is not known to keystonemiddleware AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True. Use of the auth_admin_prefix, auth_host, auth_port, auth_protocol, identity_uri, admin_token, admin_user, admin_password, and admin_tenant_name configuration options was deprecated in the Mitaka release in favor of an auth_plugin and its related options. This class may be removed in a future release. Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the Newton release, use 'identity_uri' instead. Configuring www_authenticate_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint Response: API v2 txt, 200. Request: action "authenticate", body {}. ok zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_reauth_after_auth_failure zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_reauth_after_auth_failure ... ok zaqar.tests.unit.test_bootstrap.TestBootstrap.test_transport_wsgi zaqar.tests.unit.test_bootstrap.TestBootstrap.test_transport_wsgi ... Response: API v2 txt, 403. Request: action "message_delete", body {"queue_name": "myqueue", "message_id": "123"}. ok zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_signed_url_wrong_method zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_signed_url_wrong_method ... Response: API v2 txt, 400. Request: action "queue_create", body {"queue_name": "fizbat", "metadata": "[]"}. ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_bad_metadata_2___ zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_bad_metadata_2___ ... Response: API v2 bin, 200. Request: action "queue_get", body {"queue_name": "beautiful-non-existing-queue"}. ok zaqar.tests.unit.transport.websocket.test_protocol.TestMessagingProtocol.test_on_message_with_input_in_different_format_1_True zaqar.tests.unit.transport.websocket.test_protocol.TestMessagingProtocol.test_on_message_with_input_in_different_format_1_True ... Response: API v2 txt, 400. Request: action "queue_create", body {"queue_name": "fizbat", "metadata": "."}. ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_bad_metadata_3__ zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_bad_metadata_3__ ... Response: API v2 txt, 200. Request: action "queue_get", body {"queue_name": "beautiful-non-existing-queue"}. ok zaqar.tests.unit.transport.websocket.test_protocol.TestMessagingProtocol.test_on_message_with_input_in_different_format_2_False zaqar.tests.unit.transport.websocket.test_protocol.TestMessagingProtocol.test_on_message_with_input_in_different_format_2_False ... Queue gummybears does not exist for project 480924 Traceback (most recent call last): File "/<>/zaqar/api/v2/endpoints.py", line 201, in queue_get_stats resp_dict = self._queue_controller.stats(queue_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/mongodb/utils.py", line 270, in wrapper return func(*args, **kwargs) File "/<>/zaqar/storage/mongodb/utils.py", line 302, in wrapper return func(self, *args, **kwargs) File "/<>/zaqar/storage/mongodb/messages.py", line 1052, in stats raise errors.QueueDoesNotExist(name, project) zaqar.storage.errors.QueueDoesNotExist: Queue gummybears does not exist for project 480924 Response: API v2 txt, 404. Request: action "queue_get_stats", body {"queue_name": "gummybears"}. Response: API v2 txt, 201. Request: action "queue_create", body {"queue_name": "gummybears", "metadata": {"key": {"key2": "value", "key3": [1, 2, 3, 4, 5]}, "messages": {"ttl": 600}}}. Response: API v2 txt, 200. Request: action "queue_get", body {"queue_name": "gummybears"}. Response: API v2 txt, 200. Request: action "queue_get_stats", body {"queue_name": "gummybears"}. Response: API v2 txt, 204. Request: action "queue_delete", body {"queue_name": "gummybears"}. Queue gummybears does not exist for project 480924 Traceback (most recent call last): File "/<>/zaqar/api/v2/endpoints.py", line 201, in queue_get_stats resp_dict = self._queue_controller.stats(queue_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/mongodb/utils.py", line 270, in wrapper return func(*args, **kwargs) File "/<>/zaqar/storage/mongodb/utils.py", line 302, in wrapper return func(self, *args, **kwargs) File "/<>/zaqar/storage/mongodb/messages.py", line 1052, in stats raise errors.QueueDoesNotExist(name, project) zaqar.storage.errors.QueueDoesNotExist: Queue gummybears does not exist for project 480924 Response: API v2 txt, 404. Request: action "queue_get_stats", body {"queue_name": "gummybears"}. ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_basics_thoroughly_1_480924 zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_basics_thoroughly_1_480924 ... The option "oslo-config-config" is not known to keystonemiddleware The option "oslo-config-project" is not known to keystonemiddleware AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True. Use of the auth_admin_prefix, auth_host, auth_port, auth_protocol, identity_uri, admin_token, admin_user, admin_password, and admin_tenant_name configuration options was deprecated in the Mitaka release in favor of an auth_plugin and its related options. This class may be removed in a future release. Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the Newton release, use 'identity_uri' instead. Configuring www_authenticate_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint Response: API v2 txt, 401. Request: action "authenticate", body {}. ok zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_auth_response_serialization_format_2_False zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_auth_response_serialization_format_2_False ... Queue gummybears does not exist for project foo Traceback (most recent call last): File "/<>/zaqar/api/v2/endpoints.py", line 201, in queue_get_stats resp_dict = self._queue_controller.stats(queue_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/mongodb/utils.py", line 270, in wrapper return func(*args, **kwargs) File "/<>/zaqar/storage/mongodb/utils.py", line 302, in wrapper return func(self, *args, **kwargs) File "/<>/zaqar/storage/mongodb/messages.py", line 1052, in stats raise errors.QueueDoesNotExist(name, project) zaqar.storage.errors.QueueDoesNotExist: Queue gummybears does not exist for project foo Response: API v2 txt, 404. Request: action "queue_get_stats", body {"queue_name": "gummybears"}. Response: API v2 txt, 201. Request: action "queue_create", body {"queue_name": "gummybears", "metadata": {"key": {"key2": "value", "key3": [1, 2, 3, 4, 5]}, "messages": {"ttl": 600}}}. Response: API v2 txt, 200. Request: action "queue_get", body {"queue_name": "gummybears"}. Response: API v2 txt, 200. Request: action "queue_get_stats", body {"queue_name": "gummybears"}. Response: API v2 txt, 204. Request: action "queue_delete", body {"queue_name": "gummybears"}. Queue gummybears does not exist for project foo Traceback (most recent call last): File "/<>/zaqar/api/v2/endpoints.py", line 201, in queue_get_stats resp_dict = self._queue_controller.stats(queue_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/mongodb/utils.py", line 270, in wrapper return func(*args, **kwargs) File "/<>/zaqar/storage/mongodb/utils.py", line 302, in wrapper return func(self, *args, **kwargs) File "/<>/zaqar/storage/mongodb/messages.py", line 1052, in stats raise errors.QueueDoesNotExist(name, project) zaqar.storage.errors.QueueDoesNotExist: Queue gummybears does not exist for project foo Response: API v2 txt, 404. Request: action "queue_get_stats", body {"queue_name": "gummybears"}. ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_basics_thoroughly_2_foo zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_basics_thoroughly_2_foo ... Response: API v2 txt, 201. Request: action "queue_create", body {"queue_name": "marsbar", "metadata": {"key": {"key2": "value", "key3": [1, 2, 3, 4, 5]}, "messages": {"ttl": 600}}}. Response: API v2 txt, 400. Request: action "queue_create", body {"queue_name": "m@rsb@r", "metadata": {"key": {"key2": "value", "key3": [1, 2, 3, 4, 5]}, "messages": {"ttl": 600}}}. Response: API v2 txt, 400. Request: action "queue_create", body {"queue_name": "marsbarmarsbarmarsbarmarsbarmarsbarmarsbarmarsbarmarsbarmarsbarmarsbar", "metadata": {"key": {"key2": "value", "key3": [1, 2, 3, 4, 5]}, "messages": {"ttl": 600}}}. ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_name_restrictions zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_name_restrictions ... ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_2___ zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_2___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_no_metadata zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_no_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_project_id_restriction zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_project_id_restriction ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_bad_doctype zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_bad_doctype ... ok zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_deserialize_and_sanitize_json_array zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_deserialize_and_sanitize_json_array ... ok zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_deserialize_and_sanitize_json_obj zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_deserialize_and_sanitize_json_obj ... ok zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_deserialize_bad_stream zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_deserialize_bad_stream ... ok zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_filter_missing zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_filter_missing ... ok zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_get_checked_field zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_get_checked_field ... ok zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_no_spec zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_no_spec ... Response: API v2 txt, 400. Request: action "queue_create", body {"queue_name": "kitkat", "metadata": {"key": {"key2": "value", "key3": [1, 2, 3, 4, 5]}}}. ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_empty_project_id zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_empty_project_id ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Response: API v2 txt, 400. Request: action "queue_create", body {"queue_name": ["/queues/non-ascii-n\u0153me", "utf-8"]}. Response: API v2 txt, 400. Request: action "queue_create", body {"queue_name": ["/queues/non-ascii-n\u00c4me", "iso8859-1"]}. ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_non_ascii_name zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_non_ascii_name ... Caught ConnectionError, maximum attempts to ._raises_connection_error at 0x7fcdc0e21040> exceeded. ok zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_retries_on_connection_error zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_retries_on_connection_error ... The option "oslo-config-config" is not known to keystonemiddleware The option "oslo-config-project" is not known to keystonemiddleware ok zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_scope_queue_name zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_scope_queue_name ... AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True. Use of the auth_admin_prefix, auth_host, auth_port, auth_protocol, identity_uri, admin_token, admin_user, admin_password, and admin_tenant_name configuration options was deprecated in the Mitaka release in favor of an auth_plugin and its related options. This class may be removed in a future release. Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the Newton release, use 'identity_uri' instead. ok zaqar.tests.unit.storage.test_impl_sqlalchemy.MsgidTests.test_encode zaqar.tests.unit.storage.test_impl_sqlalchemy.MsgidTests.test_encode ... Configuring www_authenticate_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint ok zaqar.tests.unit.transport.wsgi.v1.test_auth.TestAuth.test_auth_install zaqar.tests.unit.transport.wsgi.v1.test_auth.TestAuth.test_auth_install ... ok zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_bad_claim_2__ zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_bad_claim_2__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_bad_claim_4___ zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_bad_claim_4___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_3__60__59_ zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_3__60__59_ ... Response: API v2 txt, 201. Request: action "message_post", body {"queue_name": "myqueue", "messages": [{"body": 239, "ttl": 300}, {"body": 239, "ttl": 300}, {"body": 239, "ttl": 300}, {"body": 239, "ttl": 300}, {"body": 239, "ttl": 300}]}. Response: API v2 txt, 200. Request: action "message_get", body {"queue_name": "myqueue", "message_id": "5e11b94ea13a6a2d06cbd674"}. Response: API v2 txt, 200. Request: action "message_get", body {"queue_name": "myqueue", "message_id": "5e11b94ea13a6a2d06cbd675"}. Response: API v2 txt, 200. Request: action "message_get", body {"queue_name": "myqueue", "message_id": "5e11b94ea13a6a2d06cbd676"}. Response: API v2 txt, 200. Request: action "message_get", body {"queue_name": "myqueue", "message_id": "5e11b94ea13a6a2d06cbd677"}. Response: API v2 txt, 200. Request: action "message_get", body {"queue_name": "myqueue", "message_id": "5e11b94ea13a6a2d06cbd678"}. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_insert zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_insert ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_update_raises_assertion_error_on_bad_fields zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_update_raises_assertion_error_on_bad_fields ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_update_works zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_update_works ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.websocket.test_protocol.TestMessagingProtocol.test_ipv6_escaped zaqar.tests.unit.transport.websocket.test_protocol.TestMessagingProtocol.test_ipv6_escaped ... Response: API v2 txt, 204. Request: action "queue_purge", body {"queue_name": "myqueue", "resource_types": ["messages"]}. Response: API v2 txt, 404. Request: action "message_get", body {"queue_name": "myqueue", "message_id": "5e11b94ea13a6a2d06cbd674"}. Response: API v2 txt, 404. Request: action "message_get", body {"queue_name": "myqueue", "message_id": "5e11b94ea13a6a2d06cbd675"}. Response: API v2 txt, 404. Request: action "message_get", body {"queue_name": "myqueue", "message_id": "5e11b94ea13a6a2d06cbd676"}. Response: API v2 txt, 404. Request: action "message_get", body {"queue_name": "myqueue", "message_id": "5e11b94ea13a6a2d06cbd677"}. Response: API v2 txt, 404. Request: action "message_get", body {"queue_name": "myqueue", "message_id": "5e11b94ea13a6a2d06cbd678"}. ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_purge zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_purge ... Response: API v2 bin, 400. Request: action "None", body {}. Response: API v2 bin, 400. Request: action "None", body {}. Response: API v2 bin, 400. Request: action "queue_glorify", body {}. ok zaqar.tests.unit.transport.websocket.test_protocol.TestMessagingProtocol.test_on_message_with_invalid_input_binary zaqar.tests.unit.transport.websocket.test_protocol.TestMessagingProtocol.test_on_message_with_invalid_input_binary ... ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_update_metadata zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_update_metadata ... skipped 'Implement patch method' zaqar.tests.unit.transport.wsgi.v1.test_default_limits.TestDefaultLimits.test_message_listing zaqar.tests.unit.transport.wsgi.v1.test_default_limits.TestDefaultLimits.test_message_listing ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. The option "oslo-config-config" is not known to keystonemiddleware The option "oslo-config-project" is not known to keystonemiddleware AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True. Use of the auth_admin_prefix, auth_host, auth_port, auth_protocol, identity_uri, admin_token, admin_user, admin_password, and admin_tenant_name configuration options was deprecated in the Mitaka release in favor of an auth_plugin and its related options. This class may be removed in a future release. Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the Newton release, use 'identity_uri' instead. Configuring www_authenticate_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint Response: API v2 bin, 401. Request: action "authenticate", body {}. ok zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_auth_response_serialization_format_1_True zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_auth_response_serialization_format_1_True ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Response: API v2 txt, 400. Request: action "queue_create", body {"queue_name": "peppermint", "metadata": {"messages": {"ttl": 600}, "padding": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}}. ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_way_too_much_metadata zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_way_too_much_metadata ... ok zaqar.tests.unit.storage.sqlalchemy_migration.test_migrations.TestMigrationsMySQL.test_models_sync zaqar.tests.unit.storage.sqlalchemy_migration.test_migrations.TestMigrationsMySQL.test_models_sync ... skipped "Backend 'mysql+pymysql' is unavailable: Could not connect" zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_1__ zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_1__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_4___ zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_4___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_2_foo zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_2_foo ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_update_metadata zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_update_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.storage.sqlalchemy_migration.test_migrations.TestMigrationsMySQL.test_walk_versions zaqar.tests.unit.storage.sqlalchemy_migration.test_migrations.TestMigrationsMySQL.test_walk_versions ... The option "oslo-config-config" is not known to keystonemiddleware The option "oslo-config-project" is not known to keystonemiddleware AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True. Use of the auth_admin_prefix, auth_host, auth_port, auth_protocol, identity_uri, admin_token, admin_user, admin_password, and admin_tenant_name configuration options was deprecated in the Mitaka release in favor of an auth_plugin and its related options. This class may be removed in a future release. Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the Newton release, use 'identity_uri' instead. Configuring www_authenticate_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint Response: API v2 txt, 200. Request: action "None", body {}. skipped "Backend 'mysql+pymysql' is unavailable: Could not connect" zaqar.tests.unit.storage.test_impl_mongodb.MongodbUtilsTest.test_descope_queue_name zaqar.tests.unit.storage.test_impl_mongodb.MongodbUtilsTest.test_descope_queue_name ... ok zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_post zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_post ... WARNING [zaqar.storage.mongodb.utils] Caught AutoReconnect, retrying the call to ._raises_autoreconnect at 0x7f4eb542a700> WARNING [zaqar.storage.mongodb.utils] Caught AutoReconnect, retrying the call to ._raises_autoreconnect at 0x7f4eb542a700> WARNING [zaqar.storage.mongodb.utils] Caught AutoReconnect, retrying the call to ._raises_autoreconnect at 0x7f4eb542a700> ERROR [zaqar.storage.mongodb.utils] Caught AutoReconnect, maximum attempts to ._raises_autoreconnect at 0x7f4eb542a700> exceeded. ok zaqar.tests.unit.storage.test_impl_mongodb.MongodbUtilsTest.test_retries_on_autoreconnect zaqar.tests.unit.storage.test_impl_mongodb.MongodbUtilsTest.test_retries_on_autoreconnect ... WARNING [zaqar.storage.mongodb.utils] Caught AutoReconnect, retrying the call to ._raises_autoreconnect at 0x7f4eb542ac10> WARNING [zaqar.storage.mongodb.utils] Caught AutoReconnect, retrying the call to ._raises_autoreconnect at 0x7f4eb542ac10> ok zaqar.tests.unit.storage.test_impl_mongodb.MongodbUtilsTest.test_retries_on_autoreconnect_neg zaqar.tests.unit.storage.test_impl_mongodb.MongodbUtilsTest.test_retries_on_autoreconnect_neg ... ok zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_basic_message zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_basic_message ... ok zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_scope_messages_set zaqar.tests.unit.storage.test_impl_redis.RedisUtilsTest.test_scope_messages_set ... Response: API v2 txt, 201. Request: action "queue_create", body {"queue_name": "kitkat"}. No pools registered Traceback (most recent call last): File "/<>/zaqar/api/v2/endpoints.py", line 832, in subscription_list subscriptions = list(next(results)) File "/<>/zaqar/tests/unit/transport/websocket/v2/test_subscriptions.py", line 388, in fake_generator yield subscription_generator() File "/<>/zaqar/tests/unit/transport/websocket/v2/test_subscriptions.py", line 383, in subscription_generator raise storage_errors.NoPoolFound() zaqar.storage.errors.NoPoolFound: No pools registered Response: API v2 txt, 503. Request: action "subscription_list", body {"queue_name": "kitkat"}. Response: API v2 txt, 204. Request: action "queue_delete", body {"queue_name": "kitkat"}. ok zaqar.tests.unit.transport.websocket.v2.test_subscriptions.SubscriptionTest.test_list_returns_503_on_nopoolfound_exception zaqar.tests.unit.transport.websocket.v2.test_subscriptions.SubscriptionTest.test_list_returns_503_on_nopoolfound_exception ... ok zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_no_spec_array zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_no_spec_array ... ok zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_bad_claim_3___ zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_bad_claim_3___ ... Response: API v2 txt, 403. Request: action "message_list", body {"queue_name": "otherqueue"}. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_bad_claim_5__ zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_bad_claim_5__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_delete_nonexistent_claim_204s zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_delete_nonexistent_claim_204s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_signed_url_wrong_queue zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_signed_url_wrong_queue ... ok zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_exceeded_claim zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_exceeded_claim ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_1__1 zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_3_43201 zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_3_43201 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_1___1___1_ zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_1___1___1_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_2__59__60_ zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_2__59__60_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_5__43201__60_ zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_5__43201__60_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_bad_client_id_3_550893e0_2b6e_11e3_835a_5cf9dd72369 zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_bad_client_id_3_550893e0_2b6e_11e3_835a_5cf9dd72369 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_delete zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_delete ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_delete_multiple_invalid_messages_204s zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_delete_multiple_invalid_messages_204s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_exceeded_message_posting zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_exceeded_message_posting ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_exceeded_payloads zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_exceeded_payloads ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_get_multiple_invalid_messages_204s zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_get_multiple_invalid_messages_204s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_default_limits.TestDefaultLimits.test_queue_listing zaqar.tests.unit.transport.wsgi.v1.test_default_limits.TestDefaultLimits.test_queue_listing ... ok zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_2_59 zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_2_59 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_unsupported_json_1___overflow___9223372036854775808_ zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_unsupported_json_1___overflow___9223372036854775808_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_unsupported_json_2___underflow____9223372036854775809_ zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_unsupported_json_2___underflow____9223372036854775809_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_3_550893e0_2b6e_11e3_835a_5cf9dd72369 zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_3_550893e0_2b6e_11e3_835a_5cf9dd72369 ... Response: API v2 txt, 400. Request: action "queue_create", body {"queue_name": "fizbat", "metadata": "{"}. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_exceeded_message_posting zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_exceeded_message_posting ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_exceeded_payloads zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_exceeded_payloads ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_get_from_missing_queue zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_get_from_missing_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_bad_metadata_1__ zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_bad_metadata_1__ ... ok zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_get_multiple_invalid_messages_204s zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_get_multiple_invalid_messages_204s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_3___ zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_5__ zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_5__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_single zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_single ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_with_long_queue_name zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_with_long_queue_name ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_1__1 zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_get_nonexisting_raises_404 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_get_nonexisting_raises_404 ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_listing_marker_is_respected zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_listing_marker_is_respected ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_options_2_wee zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_options_2_wee ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_3___ zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_4_localhost_27017 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_4_localhost_27017 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_uri_1__1 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_uri_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_weight_1__1 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_weight_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_weight_3_big zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_weight_3_big ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_2_foo zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_2_foo ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_3_None zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_3_None ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_no_metadata zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_no_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_too_much_metadata zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_too_much_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_list zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_list ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Response: API v2 txt, 201. Request: action "queue_create", body {"queue_name": "fizbat"}. Response: API v2 txt, 204. Request: action "queue_create", body {"queue_name": "fizbat"}. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_no_metadata zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_no_metadata ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Response: API v2 txt, 400. Request: action "queue_create", body {"queue_name": "poptart"}. Response: API v2 txt, 201. Request: action "queue_create", body {"queue_name": "poptart"}. ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_project_id_restriction zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_project_id_restriction ... ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_3__ zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_3__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list_returns_503_on_nopoolfound_exception zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list_returns_503_on_nopoolfound_exception ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_way_too_much_metadata zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_way_too_much_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_filter zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_filter ... ok zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_filter_bad_type zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_filter_bad_type ... ok zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_filter_star zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_filter_star ... ok zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_get_checked_field_bad_type zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_get_checked_field_bad_type ... ok zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_bad_claim_1_None zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_bad_claim_1_None ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_get_claim_nonexistent_queue zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_get_claim_nonexistent_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_get_nonexistent_claim_404s zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_get_nonexistent_claim_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_lifecycle zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_lifecycle ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_post_claim_nonexistent_queue zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_post_claim_nonexistent_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_2_59 zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_2_59 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_home.TestHomeDocument.test_json_response zaqar.tests.unit.transport.wsgi.v1.test_home.TestHomeDocument.test_json_response ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v1.test_validation.TestValidation.test_request_without_client_id_if_resource_name_contains_v2_text zaqar.tests.unit.transport.wsgi.v1.test_validation.TestValidation.test_request_without_client_id_if_resource_name_contains_v2_text ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_update zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyCatalogueTest.test_update ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_create_succeeds zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_create_succeeds ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_detailed_get_returns_expected_content zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_detailed_get_returns_expected_content ... ok zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_get_raises_if_not_found zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyFlavorsTest1.test_get_raises_if_not_found ... Method create not found in any of the registered stages ok zaqar.tests.unit.transport.wsgi.v1.test_media_type.TestMediaType.test_request_with_body_and_urlencoded_contenttype_header_fails zaqar.tests.unit.transport.wsgi.v1.test_media_type.TestMediaType.test_request_with_body_and_urlencoded_contenttype_header_fails ... Method create not found in any of the registered stages Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_1/claims.py", line 79, in on_post cid, msgs = self._claim_controller.create( File "/<>/zaqar/common/pipeline.py", line 113, in consumer raise AttributeError(msg) AttributeError: Method create not found in any of the registered stages Method get not found in any of the registered stages ok zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_bad_client_id_2_0xdeadbeef zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_bad_client_id_2_0xdeadbeef ... Method get not found in any of the registered stages Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_1/claims.py", line 129, in on_get meta, msgs = self._claim_controller.get( File "/<>/zaqar/common/pipeline.py", line 113, in consumer raise AttributeError(msg) AttributeError: Method get not found in any of the registered stages skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_list zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_list ... Method update not found in any of the registered stages Method update not found in any of the registered stages Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_1/claims.py", line 168, in on_patch self._claim_controller.update(queue_name, File "/<>/zaqar/common/pipeline.py", line 113, in consumer raise AttributeError(msg) AttributeError: Method update not found in any of the registered stages skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_list_with_bad_marker zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_list_with_bad_marker ... Method delete not found in any of the registered stages Method delete not found in any of the registered stages Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_1/claims.py", line 191, in on_delete self._claim_controller.delete(queue_name, File "/<>/zaqar/common/pipeline.py", line 113, in consumer raise AttributeError(msg) AttributeError: Method delete not found in any of the registered stages skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_no_uuid zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_no_uuid ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_bad_message_3___ zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_bad_message_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_bad_message_4___ zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_bad_message_4___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_with_long_queue_name zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_with_long_queue_name ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_1__1 zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_1_ zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_1_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_bulk_delete zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_bulk_delete ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_delete_multiple_invalid_messages_204s zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_delete_multiple_invalid_messages_204s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_2__ zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_2__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_multiple zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_multiple ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_2_59 zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_2_59 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_delete_works zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_delete_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_listing_works zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_listing_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_listing_works_with_limit_1_1 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_listing_works_with_limit_1_1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_options_1__1 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_options_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_options_3___ zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_options_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_delete_works zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_delete_works ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsFaultyDriver.test_simple zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsFaultyDriver.test_simple ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_post_claim_nonexistent_queue zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_post_claim_nonexistent_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_health.TestHealthMongoDB.test_message_volume zaqar.tests.unit.transport.wsgi.v1_1.test_health.TestHealthMongoDB.test_message_volume ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_2_4294967297 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_2_4294967297 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_weight_3_big zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_weight_3_big ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_404_if_pool_not_found zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_404_if_pool_not_found ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_works zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_works ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_works_with_extra_fields zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_works_with_extra_fields ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_pool_works zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_pool_works ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_options_2_wee zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_options_2_wee ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_uri_3___ zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_uri_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_get_raises_if_not_found zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_get_raises_if_not_found ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_2___ zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_2___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_health.TestHealth.test_head zaqar.tests.unit.transport.wsgi.v1.test_health.TestHealth.test_head ... ok zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_4___ zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_4___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_empty_project_id zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_empty_project_id ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyQueueTests.test_queue_lifecycle zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyQueueTests.test_queue_lifecycle ... ok zaqar.tests.unit.storage.test_utils.StorageUtilsTest.test_can_connect zaqar.tests.unit.storage.test_utils.StorageUtilsTest.test_can_connect ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [keystonemiddleware._common.config] The option "oslo-config-config" is not known to keystonemiddleware WARNING [keystonemiddleware._common.config] The option "oslo-config-project" is not known to keystonemiddleware WARNING [keystonemiddleware.auth_token] AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True. WARNING [keystonemiddleware.auth_token] Use of the auth_admin_prefix, auth_host, auth_port, auth_protocol, identity_uri, admin_token, admin_user, admin_password, and admin_tenant_name configuration options was deprecated in the Mitaka release in favor of an auth_plugin and its related options. This class may be removed in a future release. WARNING [keystonemiddleware.auth_token] Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the Newton release, use 'identity_uri' instead. WARNING [keystonemiddleware.auth_token] Configuring www_authenticate_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint INFO [zaqar.transport.websocket.protocol] Response: API v2 txt, 403. Request: action "queue_list", body {}. ok zaqar.tests.unit.transport.wsgi.v1_1.test_media_type.TestMediaType.test_json_only_endpoints_with_wrong_accept_header zaqar.tests.unit.transport.wsgi.v1_1.test_media_type.TestMediaType.test_json_only_endpoints_with_wrong_accept_header ... post() got an unexpected keyword argument 'client_uuid' Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_0/messages.py", line 150, in on_post message_ids = self._message_controller.post( File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) TypeError: post() got an unexpected keyword argument 'client_uuid' Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_0/messages.py", line 85, in _get results = self._message_controller.list( File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/tests/faulty_storage.py", line 142, in list raise NotImplementedError() NotImplementedError Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_0/messages.py", line 243, in on_get message = self._message_controller.get( File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/tests/faulty_storage.py", line 135, in get raise NotImplementedError() NotImplementedError Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_0/messages.py", line 268, in on_delete self._message_controller.delete( File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/tests/faulty_storage.py", line 151, in delete raise NotImplementedError() NotImplementedError ok zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_post_between_auth zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_post_between_auth ... ok zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesFaultyDriver.test_simple zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesFaultyDriver.test_simple ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_bad_client_id_1_ zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_bad_client_id_1_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_bulk_delete zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_bulk_delete ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_get_nonexistent_message_404s zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_get_nonexistent_message_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_no_duplicated_messages_path_in_href zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_no_duplicated_messages_path_in_href ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_bad_message_2__ zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_bad_message_2__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_single zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_single ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_delete zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_delete ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_no_duplicated_messages_path_in_href zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_no_duplicated_messages_path_in_href ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_no_uuid zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_no_uuid ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_1_None zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_1_None ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_3_1209601 zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_3_1209601 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_empty_listing zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_empty_listing ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_listing_works_with_limit_4_15 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_listing_works_with_limit_4_15 ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_1__1 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_weight_1__1 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_weight_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_weight_2_4294967297 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_400_on_invalid_weight_2_4294967297 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_if_missing_fields zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_patch_raises_if_missing_fields ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_options_1__1 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_options_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_uri_2_4294967297 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_uri_2_4294967297 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_uri_4_localhost_27017 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_uri_4_localhost_27017 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_1__ zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_1__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_3__ zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_3__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_5_ zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_5_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_name_restrictions zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_name_restrictions ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_non_ascii_name zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_non_ascii_name ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_project_id_restriction zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_project_id_restriction ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_validation.TestValidation.test_request_without_client_id zaqar.tests.unit.transport.wsgi.v1.test_validation.TestValidation.test_request_without_client_id ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_default_ttl_and_grace zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_default_ttl_and_grace ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_get_claim_nonexistent_queue zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_get_claim_nonexistent_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_get_nonexistent_claim_404s zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_get_nonexistent_claim_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_4__60__43201_ zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_4__60__43201_ ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_media_type.TestMediaType.test_request_with_body_and_urlencoded_contenttype_header_fails zaqar.tests.unit.transport.wsgi.v1_1.test_media_type.TestMediaType.test_request_with_body_and_urlencoded_contenttype_header_fails ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. INFO [zaqar.transport.websocket.protocol] Response: API v2 txt, 200. Request: action "message_list", body {"queue_name": "myqueue"}. ok zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_signed_url zaqar.tests.unit.transport.websocket.v2.test_auth.AuthTest.test_signed_url ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. INFO [zaqar.transport.websocket.protocol] Response: API v2 txt, 400. Request: action "queue_create", body {"queue_name": "fizbat", "metadata": " "}. ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_bad_metadata_4___ zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_bad_metadata_4___ ... ok zaqar.tests.unit.transport.wsgi.v1.test_validation.TestValidation.test_message_deserialization zaqar.tests.unit.transport.wsgi.v1.test_validation.TestValidation.test_message_deserialization ... Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_1/messages.py", line 178, in on_post if not self._queue_controller.exists(queue_name, project_id): File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 395, in exists return self._exists(name, project) File "/<>/zaqar/tests/faulty_storage.py", line 115, in _exists raise NotImplementedError() NotImplementedError Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_1/messages.py", line 101, in _get results = self._message_controller.list( File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/tests/faulty_storage.py", line 142, in list raise NotImplementedError() NotImplementedError Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_1/messages.py", line 308, in on_get message = self._message_controller.get( File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/tests/faulty_storage.py", line 135, in get raise NotImplementedError() NotImplementedError Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_1/messages.py", line 336, in on_delete self._message_controller.delete( File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/tests/faulty_storage.py", line 151, in delete raise NotImplementedError() NotImplementedError ok zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesFaultyDriver.test_simple zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesFaultyDriver.test_simple ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_bulk_delete zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_bulk_delete ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_delete zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_delete ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_delete_multiple_invalid_messages_204s zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_delete_multiple_invalid_messages_204s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_get_multiple_invalid_messages_404s zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_get_multiple_invalid_messages_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_name_restrictions zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_name_restrictions ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_no_duplicated_messages_path_in_href zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_no_duplicated_messages_path_in_href ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_no_uuid zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_no_uuid ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_1_1 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_1_1 ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_3_10 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_3_10 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_invalid_1_ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_invalid_1_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_bad_message_3___ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_bad_message_3___ ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_multiple zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_multiple ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_optional_ttl zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_optional_ttl ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_to_missing_queue zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_to_missing_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_unsupported_json_1___overflow___9223372036854775808_ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_unsupported_json_1___overflow___9223372036854775808_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_when_claim_deleted_then_messages_unclaimed zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_when_claim_deleted_then_messages_unclaimed ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_3_550893e0_2b6e_11e3_835a_5cf9dd72369 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_3_550893e0_2b6e_11e3_835a_5cf9dd72369 ... INFO [zaqar.transport.websocket.protocol] Response: API v2 txt, 400. Request: action "queue_create", body {"queue_name": "buttertoffee", "metadata": {"messages": {"ttl": 600}, "padding": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}}. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_list_with_bad_marker zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_list_with_bad_marker ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_2_2 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_2_2 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_1_ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_1_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_multiple zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_multiple ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_to_non_ascii_queue zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_to_non_ascii_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_with_long_queue_name zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_with_long_queue_name ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_default_limits.TestDefaultLimits.test_message_listing_same_id zaqar.tests.unit.transport.wsgi.v1_1.test_default_limits.TestDefaultLimits.test_message_listing_same_id ... ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_too_much_metadata zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.QueueLifecycleBaseTest.test_too_much_metadata ... ok zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_1_480924 zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_1_480924 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_empty_project_id zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_empty_project_id ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_name_restrictions zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_name_restrictions ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_non_ascii_name zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_non_ascii_name ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_purge zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_purge ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_too_much_metadata zaqar.tests.unit.transport.websocket.v2.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_too_much_metadata ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_get_checked_field_missing zaqar.tests.unit.transport.wsgi.test_utils.TestUtils.test_get_checked_field_missing ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Deprecated: Option "metadata_size_uplimit" from group "limits:transport" is deprecated. Use option "max_queue_metadata" from group "transport". WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v1.test_validation.TestValidation.test_metadata_deserialization zaqar.tests.unit.transport.wsgi.v1.test_validation.TestValidation.test_metadata_deserialization ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_1/health.py", line 34, in on_get resp_dict = self._driver.health() File "/<>/zaqar/storage/base.py", line 121, in health backend_health = self._health() File "/<>/zaqar/storage/pipeline.py", line 121, in _health return self._storage._health() File "/<>/zaqar/tests/faulty_storage.py", line 46, in _health raise NotImplementedError() NotImplementedError ok zaqar.tests.unit.transport.wsgi.v1_1.test_health.TestHealthFaultyDriver.test_simple zaqar.tests.unit.transport.wsgi.v1_1.test_health.TestHealthFaultyDriver.test_simple ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_bad_client_id_2_0xdeadbeef zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_bad_client_id_2_0xdeadbeef ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_get_claimed_contains_claim_id_in_href zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_get_claimed_contains_claim_id_in_href ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_get_from_missing_queue zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_get_from_missing_queue ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_get_nonexistent_message_404s zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_get_nonexistent_message_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_list zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_list ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_list_with_bad_marker zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_list_with_bad_marker ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_2_2 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_2_2 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_empty_queue zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_empty_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_bad_message_1_None zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_bad_message_1_None ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_bad_message_5__ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_bad_message_5__ ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_single zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_single ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_unsupported_json_2___underflow____9223372036854775809_ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_unsupported_json_2___underflow____9223372036854775809_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_delete_message_with_invalid_claim_doesnt_delete_message zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_delete_message_with_invalid_claim_doesnt_delete_message ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_get_claimed_contains_claim_id_in_href zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_get_claimed_contains_claim_id_in_href ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_ping.TestPing.test_head zaqar.tests.unit.transport.wsgi.v1_1.test_ping.TestPing.test_head ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_get_from_missing_queue zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_get_from_missing_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_1__ zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_1__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_2_foo zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_2_foo ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_list zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_list ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_bad_claim_2___ zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_bad_claim_2___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_name_restrictions zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_name_restrictions ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_default_ttl_and_grace zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_default_ttl_and_grace ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_get_nonexistent_claim_404s zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_get_nonexistent_claim_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_no_uuid zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_no_uuid ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_empty_queue zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_empty_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_3_pop_10_ids_1 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_3_pop_10_ids_1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_optional_ttl zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_optional_ttl ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_to_missing_queue zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_to_missing_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_2_59 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_2_59 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_when_claim_deleted_then_messages_unclaimed zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_when_claim_deleted_then_messages_unclaimed ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.test_version.TestVersion.test_get zaqar.tests.unit.transport.wsgi.test_version.TestVersion.test_get ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v1.test_validation.TestValidation.test_queue_metadata_putting zaqar.tests.unit.transport.wsgi.v1.test_validation.TestValidation.test_queue_metadata_putting ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v1_1.test_ping.TestPing.test_get zaqar.tests.unit.transport.wsgi.v1_1.test_ping.TestPing.test_get ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_2___ zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_2___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_1_480924 zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_1_480924 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_no_metadata zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_no_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_project_id_restriction zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_project_id_restriction ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_too_much_metadata zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_too_much_metadata ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. The option "oslo-config-config" is not known to keystonemiddleware The option "oslo-config-project" is not known to keystonemiddleware AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True. Use of the auth_admin_prefix, auth_host, auth_port, auth_protocol, identity_uri, admin_token, admin_user, admin_password, and admin_tenant_name configuration options was deprecated in the Mitaka release in favor of an auth_plugin and its related options. This class may be removed in a future release. Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the Newton release, use 'identity_uri' instead. Configuring www_authenticate_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint Using the in-process token cache is deprecated as of the 4.2.0 release and may be removed in the 5.0.0 release or the 'O' development cycle. The in-process cache causes inconsistent results and high memory usage. When the feature is removed the auth_token middleware will not cache tokens by default which may result in performance issues. It is recommended to use memcache for the auth_token token cache by setting the memcached_servers option. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_auth.TestAuth.test_non_authenticated zaqar.tests.unit.transport.wsgi.v1_1.test_auth.TestAuth.test_non_authenticated ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_bad_claim_1__ zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_bad_claim_1__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_bad_claim_2___ zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_bad_claim_2___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_bad_claim_4__fail_ zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_bad_claim_4__fail_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_lifecycle zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_lifecycle ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_patch_nonexistent_claim_404s zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_patch_nonexistent_claim_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_1__1 zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_2_59 zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_2_59 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_default_limits.TestDefaultLimits.test_queue_listing zaqar.tests.unit.transport.wsgi.v2_0.test_default_limits.TestDefaultLimits.test_queue_listing ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_empty_listing zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_empty_listing ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_listing_works zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_listing_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_400_on_invalid_capabilities_1__1 zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_400_on_invalid_capabilities_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_400_on_invalid_pool_list_1__1 zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_400_on_invalid_pool_list_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_400_on_invalid_pool_list_2_4294967297 zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_400_on_invalid_pool_list_2_4294967297 ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_works zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_put_raises_if_invalid_pool_1_1 zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_put_raises_if_invalid_pool_1_1 ... WARNING [keystonemiddleware._common.config] The option "oslo-config-config" is not known to keystonemiddleware WARNING [keystonemiddleware._common.config] The option "oslo-config-project" is not known to keystonemiddleware WARNING [keystonemiddleware.auth_token] AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True. WARNING [keystonemiddleware.auth_token] Use of the auth_admin_prefix, auth_host, auth_port, auth_protocol, identity_uri, admin_token, admin_user, admin_password, and admin_tenant_name configuration options was deprecated in the Mitaka release in favor of an auth_plugin and its related options. This class may be removed in a future release. WARNING [keystonemiddleware.auth_token] Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the Newton release, use 'identity_uri' instead. WARNING [keystonemiddleware.auth_token] Configuring www_authenticate_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint WARNING [keystonemiddleware.auth_token] Using the in-process token cache is deprecated as of the 4.2.0 release and may be removed in the 5.0.0 release or the 'O' development cycle. The in-process cache causes inconsistent results and high memory usage. When the feature is removed the auth_token middleware will not cache tokens by default which may result in performance issues. It is recommended to use memcache for the auth_token token cache by setting the memcached_servers option. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_auth.TestAuth.test_non_authenticated zaqar.tests.unit.transport.wsgi.v1.test_auth.TestAuth.test_non_authenticated ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Deprecated: Option "metadata_size_uplimit" from group "limits:transport" is deprecated. Use option "max_queue_metadata" from group "transport". Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v1_1.test_validation.TestValidation.test_metadata_deserialization zaqar.tests.unit.transport.wsgi.v1_1.test_validation.TestValidation.test_metadata_deserialization ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ERROR [zaqar.common.pipeline] Method create not found in any of the registered stages ERROR [zaqar.transport.wsgi.v1_0.claims] Method create not found in any of the registered stages Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_0/claims.py", line 59, in on_post cid, msgs = self._claim_controller.create( File "/<>/zaqar/common/pipeline.py", line 113, in consumer raise AttributeError(msg) AttributeError: Method create not found in any of the registered stages ERROR [zaqar.common.pipeline] Method get not found in any of the registered stages ERROR [zaqar.transport.wsgi.v1_0.claims] Method get not found in any of the registered stages Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_0/claims.py", line 102, in on_get meta, msgs = self._claim_controller.get( File "/<>/zaqar/common/pipeline.py", line 113, in consumer raise AttributeError(msg) AttributeError: Method get not found in any of the registered stages ERROR [zaqar.common.pipeline] Method update not found in any of the registered stages ERROR [zaqar.transport.wsgi.v1_0.claims] Method update not found in any of the registered stages Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_0/claims.py", line 141, in on_patch self._claim_controller.update(queue_name, File "/<>/zaqar/common/pipeline.py", line 113, in consumer raise AttributeError(msg) AttributeError: Method update not found in any of the registered stages ERROR [zaqar.common.pipeline] Method delete not found in any of the registered stages ERROR [zaqar.transport.wsgi.v1_0.claims] Method delete not found in any of the registered stages Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_0/claims.py", line 164, in on_delete self._claim_controller.delete(queue_name, File "/<>/zaqar/common/pipeline.py", line 113, in consumer raise AttributeError(msg) AttributeError: Method delete not found in any of the registered stages ok zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsFaultyDriver.test_simple zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsFaultyDriver.test_simple ... ok zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_bad_claim_6__fail_ zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_bad_claim_6__fail_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_patch_nonexistent_claim_404s zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_patch_nonexistent_claim_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_4__60__43201_ zaqar.tests.unit.transport.wsgi.v1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_4__60__43201_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_home.TestHomeDocument.test_json_response zaqar.tests.unit.transport.wsgi.v2_0.test_home.TestHomeDocument.test_json_response ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_bad_client_id_2_0xdeadbeef zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_bad_client_id_2_0xdeadbeef ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_exceeded_payloads zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_exceeded_payloads ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_get_from_missing_queue zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_get_from_missing_queue ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. The option "oslo-config-config" is not known to keystonemiddleware The option "oslo-config-project" is not known to keystonemiddleware skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_no_uuid zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_no_uuid ... AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_1_1 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_1_1 ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_invalid_1_ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_invalid_1_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_bad_message_1_None zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_bad_message_1_None ... Use of the auth_admin_prefix, auth_host, auth_port, auth_protocol, identity_uri, admin_token, admin_user, admin_password, and admin_tenant_name configuration options was deprecated in the Mitaka release in favor of an auth_plugin and its related options. This class may be removed in a future release. Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the Newton release, use 'identity_uri' instead. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_bad_message_2__ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_bad_message_2__ ... Configuring www_authenticate_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_bad_message_3___ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_bad_message_3___ ... Using the in-process token cache is deprecated as of the 4.2.0 release and may be removed in the 5.0.0 release or the 'O' development cycle. The in-process cache causes inconsistent results and high memory usage. When the feature is removed the auth_token middleware will not cache tokens by default which may result in performance issues. It is recommended to use memcache for the auth_token token cache by setting the memcached_servers option. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_bad_message_5__ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_bad_message_5__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_multiple zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_multiple ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_to_non_ascii_queue zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_to_non_ascii_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_with_long_queue_name zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_with_long_queue_name ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_2_59 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_2_59 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_when_claim_deleted_then_messages_unclaimed zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_when_claim_deleted_then_messages_unclaimed ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_bulk_delete zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_bulk_delete ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_get_from_missing_queue zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_get_from_missing_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_list_with_bad_marker zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_list_with_bad_marker ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_1_1 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_1_1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_3_pop_10_ids_1 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_3_pop_10_ids_1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_4_pop__1 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_4_pop__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_2__ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_2__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_4___ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_4___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_5__ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_5__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_using_queue_max_messages_post_size zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_using_queue_max_messages_post_size ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_1__1 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_2_59 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_2_59 ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_default_limits.TestDefaultLimits.test_queue_listing zaqar.tests.unit.transport.wsgi.v1_1.test_default_limits.TestDefaultLimits.test_queue_listing ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_bad_client_id_1_ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_bad_client_id_1_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_bad_client_id_3_550893e0_2b6e_11e3_835a_5cf9dd72369 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_bad_client_id_3_550893e0_2b6e_11e3_835a_5cf9dd72369 ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_exceeded_payloads zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_exceeded_payloads ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_invalid_2_pop_1000000 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_invalid_2_pop_1000000 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_3_1209601 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_3_1209601 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_unsupported_json_2___underflow____9223372036854775809_ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_unsupported_json_2___underflow____9223372036854775809_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_bad_message_2__ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_bad_message_2__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_1_ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_1_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_2_0xdeadbeef zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_2_0xdeadbeef ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_bulk_delete zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_bulk_delete ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_get_multiple_invalid_messages_404s zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_get_multiple_invalid_messages_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_1_1 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_1_1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_single_message zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_single_message ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_1_None zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_1_None ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_2__ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_2__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_3___ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_5__ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_5__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_single zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_single ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_1__1 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_3_1209601 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_unacceptable_ttl_3_1209601 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_unsupported_json_1___overflow___9223372036854775808_ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_unsupported_json_1___overflow___9223372036854775808_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_unsupported_json_2___underflow____9223372036854775809_ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_unsupported_json_2___underflow____9223372036854775809_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_auth.TestAuth.test_non_authenticated zaqar.tests.unit.transport.wsgi.v2_0.test_auth.TestAuth.test_non_authenticated ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_bad_claim_4__fail_ zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_bad_claim_4__fail_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_get_claim_nonexistent_queue zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_get_claim_nonexistent_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_patch_nonexistent_claim_404s zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_patch_nonexistent_claim_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_post_claim_nonexistent_queue zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_post_claim_nonexistent_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_2_59 zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_2_59 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_4__60__43201_ zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_4__60__43201_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_create_flavor_no_pool_list zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_create_flavor_no_pool_list ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_listing_marker_is_respected zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_listing_marker_is_respected ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_listing_works_with_limit_2_5 zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_listing_works_with_limit_2_5 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_listing_works_with_limit_4_15 zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_listing_works_with_limit_4_15 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_400_on_invalid_capabilities_2_wee zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_400_on_invalid_capabilities_2_wee ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_if_missing_fields zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_if_missing_fields ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_works_with_extra_fields zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_works_with_extra_fields ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_put_auto_get_capabilities zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_put_auto_get_capabilities ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_put_flavor_works zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_put_flavor_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_put_raises_if_invalid_pool_2_4294967297 zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_put_raises_if_invalid_pool_2_4294967297 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_bad_client_id_1_ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_bad_client_id_1_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_delete zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_delete ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_list zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_list ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_no_duplicated_messages_path_in_href zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_no_duplicated_messages_path_in_href ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_3_10 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_3_10 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_invalid_2_pop_1000000 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_invalid_2_pop_1000000 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_invalid_4_pop__1 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_invalid_4_pop__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_single_message zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_single_message ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_bad_message_4___ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_bad_message_4___ ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_3_550893e0_2b6e_11e3_835a_5cf9dd72369 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_3_550893e0_2b6e_11e3_835a_5cf9dd72369 ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_exceeded_payloads zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_exceeded_payloads ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_get_nonexistent_message_404s zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_get_nonexistent_message_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_name_restrictions zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_name_restrictions ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_no_duplicated_messages_path_in_href zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_no_duplicated_messages_path_in_href ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_no_uuid zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_no_uuid ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_3_10 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_3_10 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_3___ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_6_123 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_6_123 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_multiple zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_multiple ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_using_queue_default_message_ttl zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_using_queue_default_message_ttl ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_with_long_queue_name zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_with_long_queue_name ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_unsupported_json_1___overflow___9223372036854775808_ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_unsupported_json_1___overflow___9223372036854775808_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_get_works zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_get_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_listing_error_with_invalid_limit zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_listing_error_with_invalid_limit ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_listing_works_with_limit_2_5 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_listing_works_with_limit_2_5 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_listing_works_with_limit_4_15 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_listing_works_with_limit_4_15 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_2_4294967297 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_2_4294967297 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_weight_3_big zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_weight_3_big ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_works zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_options_2_wee zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_options_2_wee ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_uri_1__1 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_uri_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_uri_3___ zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_uri_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_uri_4_localhost_27017 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_uri_4_localhost_27017 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_weight_3_big zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_weight_3_big ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_ping.TestPing.test_head zaqar.tests.unit.transport.wsgi.v2_0.test_ping.TestPing.test_head ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_listing_works_with_limit_3_10 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_listing_works_with_limit_3_10 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_options_2_wee zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_options_2_wee ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_404_if_pool_not_found zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_404_if_pool_not_found ... Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_1/queues.py", line 79, in on_put created = self._queue_controller.create(queue_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 383, in create return self._create(name, metadata, project) File "/<>/zaqar/tests/faulty_storage.py", line 112, in _create raise NotImplementedError() NotImplementedError Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_1/queues.py", line 44, in on_get resp_dict = self._queue_controller.get(queue_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 350, in get return self._get(name, project) File "/<>/zaqar/tests/faulty_storage.py", line 106, in _get raise NotImplementedError() NotImplementedError skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_pool_works zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_pool_works ... Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_1/stats.py", line 37, in on_get resp_dict = self._queue_ctrl.stats(queue_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 417, in stats return self._stats(name, project) File "/<>/zaqar/tests/faulty_storage.py", line 124, in _stats raise NotImplementedError() NotImplementedError _list() takes from 1 to 2 positional arguments but 7 were given Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_1/queues.py", line 128, in on_get results = self._queue_controller.list(project=project_id, **kwargs) File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 337, in list return self._list(project, kfilter, marker, limit, detailed, name) TypeError: _list() takes from 1 to 2 positional arguments but 7 were given Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_1/queues.py", line 98, in on_delete self._queue_controller.delete(queue_name, project=project_id) File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 405, in delete return self._delete(name, project) File "/<>/zaqar/tests/faulty_storage.py", line 121, in _delete raise NotImplementedError() NotImplementedError skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_options_1__1 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_options_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_weight_2_4294967297 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_weight_2_4294967297 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_4___ zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_4___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_1_480924 zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_1_480924 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_2_foo zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_2_foo ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_custom_metadata zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_custom_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_empty_project_id zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_empty_project_id ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list_with_filter zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list_with_filter ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_too_much_metadata zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_too_much_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_confirm_with_non_subscription zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_confirm_with_non_subscription ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_no_body zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_no_body ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_get_nonexisting_raise_404 zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_get_nonexisting_raise_404 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_get_works zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_get_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_listing_marker_is_respected zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_listing_marker_is_respected ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_patch_invalid_body zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_patch_invalid_body ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_bad_metadata_1__ zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_bad_metadata_1__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_bad_metadata_2___ zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_bad_metadata_2___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_basics_thoroughly_1_480924 zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_basics_thoroughly_1_480924 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_too_much_metadata zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_too_much_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleFaultyDriver.test_simple zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleFaultyDriver.test_simple ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_custom_metadata zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_custom_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_update_metadata zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_update_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_way_too_much_metadata zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_way_too_much_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_default_limits.TestDefaultLimits.test_claim_creation zaqar.tests.unit.transport.wsgi.v1.test_default_limits.TestDefaultLimits.test_claim_creation ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/queues.py", line 97, in on_put created = self._queue_controller.create(queue_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 383, in create return self._create(name, metadata, project) File "/<>/zaqar/tests/faulty_storage.py", line 112, in _create raise NotImplementedError() NotImplementedError ok zaqar.tests.unit.transport.wsgi.v2_0.test_urls.TestURL.test_url_bad_request zaqar.tests.unit.transport.wsgi.v2_0.test_urls.TestURL.test_url_bad_request ... Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/queues.py", line 62, in on_get resp_dict = self._queue_controller.get(queue_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 350, in get return self._get(name, project) File "/<>/zaqar/tests/faulty_storage.py", line 106, in _get raise NotImplementedError() NotImplementedError Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/stats.py", line 41, in on_get resp_dict = self._queue_ctrl.stats(queue_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 417, in stats return self._stats(name, project) File "/<>/zaqar/tests/faulty_storage.py", line 124, in _stats raise NotImplementedError() NotImplementedError _list() takes from 1 to 2 positional arguments but 7 were given Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/queues.py", line 259, in _queue_list results = self._queue_controller.list(project=project_id, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 337, in list return self._list(project, kfilter, marker, limit, detailed, name) TypeError: _list() takes from 1 to 2 positional arguments but 7 were given Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/queues.py", line 119, in on_delete self._queue_controller.delete(queue_name, project=project_id) File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 405, in delete return self._delete(name, project) File "/<>/zaqar/tests/faulty_storage.py", line 121, in _delete raise NotImplementedError() NotImplementedError Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleFaultyDriver.test_simple zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleFaultyDriver.test_simple ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_3__ zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_3__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_with_different_client_id_2_11111111111111111111111111111111111 zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_with_different_client_id_2_11111111111111111111111111111111111 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_name_restrictions zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_name_restrictions ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_project_id_restriction zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_project_id_restriction ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_update_metadata zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_update_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_way_too_much_metadata zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_way_too_much_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_confirm_with_invalid_body zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_confirm_with_invalid_body ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_confirm_without_boolean_body zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_confirm_without_boolean_body ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_invalid_body_400 zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_invalid_body_400 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_invalid_subscriber_400 zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_invalid_subscriber_400 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_unsupported_subscriber_400 zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_unsupported_subscriber_400 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_with_trust zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_with_trust ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_list_returns_503_on_nopoolfound_exception zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_list_returns_503_on_nopoolfound_exception ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_list_works zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_list_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_listing_works_with_limit_1_1 zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_listing_works_with_limit_1_1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_listing_works_with_limit_2_5 zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_listing_works_with_limit_2_5 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_listing_works_with_limit_4_15 zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_listing_works_with_limit_4_15 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_patch_works zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_patch_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_bad_metadata_4___ zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_bad_metadata_4___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_list_with_filter zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_list_with_filter ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_non_ascii_name zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_non_ascii_name ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_update_metadata zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_update_metadata ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_health.TestHealth.test_get zaqar.tests.unit.transport.wsgi.v1.test_health.TestHealth.test_get ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_way_too_much_metadata zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_way_too_much_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_without_project_id zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_without_project_id ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_validation.TestValidation.test_queue_metadata_putting zaqar.tests.unit.transport.wsgi.v1_1.test_validation.TestValidation.test_queue_metadata_putting ... WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v2_0.test_urls.TestURL.test_url_generation zaqar.tests.unit.transport.wsgi.v2_0.test_urls.TestURL.test_url_generation ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v2_0.test_urls.TestURL.test_url_paths zaqar.tests.unit.transport.wsgi.v2_0.test_urls.TestURL.test_url_paths ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v1.test_home.TestHomeDocument.test_href_template zaqar.tests.unit.transport.wsgi.v1.test_home.TestHomeDocument.test_href_template ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. The option "oslo-config-config" is not known to keystonemiddleware The option "oslo-config-project" is not known to keystonemiddleware AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True. Use of the auth_admin_prefix, auth_host, auth_port, auth_protocol, identity_uri, admin_token, admin_user, admin_password, and admin_tenant_name configuration options was deprecated in the Mitaka release in favor of an auth_plugin and its related options. This class may be removed in a future release. Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the Newton release, use 'identity_uri' instead. Configuring www_authenticate_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v2_0.test_auth.TestAuth.test_auth_install zaqar.tests.unit.transport.wsgi.v2_0.test_auth.TestAuth.test_auth_install ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_bad_claim_1__ zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_bad_claim_1__ ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_delete_nonexistent_claim_204s zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_delete_nonexistent_claim_204s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_lifecycle zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_lifecycle ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_3_43201 zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_3_43201 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_2__59__60_ zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_2__59__60_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_3__60__59_ zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_3__60__59_ ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_validation.TestValidation.test_message_deserialization zaqar.tests.unit.transport.wsgi.v2_0.test_validation.TestValidation.test_message_deserialization ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v1.test_media_type.TestMediaType.test_json_only_endpoints_with_wrong_accept_header zaqar.tests.unit.transport.wsgi.v1.test_media_type.TestMediaType.test_json_only_endpoints_with_wrong_accept_header ... ok zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_delete_message_with_invalid_claim_doesnt_delete_message zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_delete_message_with_invalid_claim_doesnt_delete_message ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_get_from_missing_queue zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_get_from_missing_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_bad_message_1_None zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_bad_message_1_None ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_bad_message_5__ zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_bad_message_5__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_multiple zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_multiple ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_to_missing_queue zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_to_missing_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_to_non_ascii_queue zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_post_to_non_ascii_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_3_1209601 zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_3_1209601 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_when_claim_deleted_then_messages_unclaimed zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDB.test_when_claim_deleted_then_messages_unclaimed ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_2_0xdeadbeef zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_2_0xdeadbeef ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_delete_message_with_invalid_claim_doesnt_delete_message zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_delete_message_with_invalid_claim_doesnt_delete_message ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_get_nonexistent_message_404s zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_get_nonexistent_message_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_list zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_list ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_list_with_bad_marker zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_list_with_bad_marker ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_4___ zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_4___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_to_missing_queue zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_to_missing_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_to_non_ascii_queue zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_post_to_non_ascii_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_unsupported_json_1___overflow___9223372036854775808_ zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_unsupported_json_1___overflow___9223372036854775808_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_unsupported_json_2___underflow____9223372036854775809_ zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_unsupported_json_2___underflow____9223372036854775809_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_when_claim_deleted_then_messages_unclaimed zaqar.tests.unit.transport.wsgi.v1.test_messages.TestMessagesMongoDBPooled.test_when_claim_deleted_then_messages_unclaimed ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_detailed_get_works zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_detailed_get_works ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_detailed_listing_works zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_detailed_listing_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_get_works zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_get_works ... WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_listing_works_with_limit_2_5 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_listing_works_with_limit_2_5 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_listing_works_with_limit_3_10 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_listing_works_with_limit_3_10 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_existing_overwrites zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_existing_overwrites ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_options_3___ zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_options_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_weight_2_4294967297 zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_invalid_weight_2_4294967297 ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_missing_fields zaqar.tests.unit.transport.wsgi.v1.test_pools.TestPoolsMongoDB.test_put_raises_if_missing_fields ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_default_limits.TestDefaultLimits.test_claim_creation zaqar.tests.unit.transport.wsgi.v2_0.test_default_limits.TestDefaultLimits.test_claim_creation ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Deprecated: Option "metadata_size_uplimit" from group "limits:transport" is deprecated. Use option "max_queue_metadata" from group "transport". Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v2_0.test_validation.TestValidation.test_queue_purge zaqar.tests.unit.transport.wsgi.v2_0.test_validation.TestValidation.test_queue_purge ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ERROR [zaqar.transport.wsgi.v1_0.queues] Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_0/queues.py", line 41, in on_put created = self._queue_controller.create( File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 383, in create return self._create(name, metadata, project) File "/<>/zaqar/tests/faulty_storage.py", line 112, in _create raise NotImplementedError() NotImplementedError ERROR [zaqar.transport.wsgi.v1_0.metadata] Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_0/metadata.py", line 43, in on_get resp_dict = self._queue_ctrl.get_metadata(queue_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/tests/faulty_storage.py", line 109, in get_metadata raise NotImplementedError() NotImplementedError ok zaqar.tests.unit.transport.wsgi.v2_0.test_validation.TestValidation.test_queue_patching zaqar.tests.unit.transport.wsgi.v2_0.test_validation.TestValidation.test_queue_patching ... ERROR [zaqar.transport.wsgi.v1_0.stats] Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_0/stats.py", line 37, in on_get resp_dict = self._queue_ctrl.stats(queue_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 417, in stats return self._stats(name, project) File "/<>/zaqar/tests/faulty_storage.py", line 124, in _stats raise NotImplementedError() NotImplementedError ERROR [zaqar.transport.wsgi.v1_0.queues] _list() takes from 1 to 2 positional arguments but 7 were given Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_0/queues.py", line 97, in on_get results = self._queue_controller.list(project=project_id, **kwargs) File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 337, in list return self._list(project, kfilter, marker, limit, detailed, name) TypeError: _list() takes from 1 to 2 positional arguments but 7 were given ERROR [zaqar.transport.wsgi.v1_0.queues] Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v1_0/queues.py", line 66, in on_delete self._queue_controller.delete(queue_name, project=project_id) File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 405, in delete return self._delete(name, project) File "/<>/zaqar/tests/faulty_storage.py", line 121, in _delete raise NotImplementedError() NotImplementedError ok zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleFaultyDriver.test_simple zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleFaultyDriver.test_simple ... ok zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_1_480924 zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_1_480924 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_custom_metadata zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_custom_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list_returns_503_on_nopoolfound_exception zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list_returns_503_on_nopoolfound_exception ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_update_metadata zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_update_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_way_too_much_metadata zaqar.tests.unit.transport.wsgi.v1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_way_too_much_metadata ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_default_limits.TestDefaultLimits.test_message_listing_different_id zaqar.tests.unit.transport.wsgi.v2_0.test_default_limits.TestDefaultLimits.test_message_listing_different_id ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_delete_works zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_delete_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_detailed_listing_works zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_detailed_listing_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_get_nonexisting_raises_404 zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_get_nonexisting_raises_404 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_listing_works_with_limit_1_1 zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_listing_works_with_limit_1_1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_listing_works_with_limit_3_10 zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_listing_works_with_limit_3_10 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_400_on_invalid_capabilities_3___ zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_400_on_invalid_capabilities_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_400_on_invalid_pool_list_3___ zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_400_on_invalid_pool_list_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_404_if_flavor_not_found zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_patch_raises_404_if_flavor_not_found ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_put_existing_overwrites zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_put_existing_overwrites ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_put_raises_if_invalid_pool_3___ zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_put_raises_if_invalid_pool_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_queue_create_no_flavor zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_queue_create_no_flavor ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [keystonemiddleware._common.config] The option "oslo-config-config" is not known to keystonemiddleware WARNING [keystonemiddleware._common.config] The option "oslo-config-project" is not known to keystonemiddleware WARNING [keystonemiddleware.auth_token] AuthToken middleware is set with keystone_authtoken.service_token_roles_required set to False. This is backwards compatible but deprecated behaviour. Please set this to True. WARNING [keystonemiddleware.auth_token] Use of the auth_admin_prefix, auth_host, auth_port, auth_protocol, identity_uri, admin_token, admin_user, admin_password, and admin_tenant_name configuration options was deprecated in the Mitaka release in favor of an auth_plugin and its related options. This class may be removed in a future release. WARNING [keystonemiddleware.auth_token] Configuring admin URI using auth fragments was deprecated in the Kilo release, and will be removed in the Newton release, use 'identity_uri' instead. WARNING [keystonemiddleware.auth_token] Configuring www_authenticate_uri to point to the public identity endpoint is required; clients may not be able to authenticate against an admin endpoint skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_validation.TestValidation.test_request_without_client_id zaqar.tests.unit.transport.wsgi.v2_0.test_validation.TestValidation.test_request_without_client_id ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_auth.TestAuth.test_auth_install zaqar.tests.unit.transport.wsgi.v1_1.test_auth.TestAuth.test_auth_install ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_bad_claim_3__ zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_bad_claim_3__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_delete_nonexistent_claim_204s zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_delete_nonexistent_claim_204s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_exceeded_claim zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_exceeded_claim ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_3_43201 zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_3_43201 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_1___1___1_ zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_1___1___1_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_2__59__60_ zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_2__59__60_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_3__60__59_ zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_3__60__59_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_5__43201__60_ zaqar.tests.unit.transport.wsgi.v1_1.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_5__43201__60_ ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/health.py", line 38, in on_get resp_dict = self._driver.health() File "/<>/zaqar/storage/base.py", line 121, in health backend_health = self._health() File "/<>/zaqar/storage/pipeline.py", line 121, in _health return self._storage._health() File "/<>/zaqar/tests/faulty_storage.py", line 46, in _health raise NotImplementedError() NotImplementedError skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_health.TestHealthFaultyDriver.test_simple zaqar.tests.unit.transport.wsgi.v2_0.test_health.TestHealthFaultyDriver.test_simple ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_health.TestHealthMongoDB.test_operation_status zaqar.tests.unit.transport.wsgi.v2_0.test_health.TestHealthMongoDB.test_operation_status ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_validation.TestValidation.test_subscription_ttl zaqar.tests.unit.transport.wsgi.v2_0.test_validation.TestValidation.test_subscription_ttl ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v1_1.test_default_limits.TestDefaultLimits.test_claim_creation zaqar.tests.unit.transport.wsgi.v1_1.test_default_limits.TestDefaultLimits.test_claim_creation ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v2_0.test_home.TestHomeDocument.test_href_template zaqar.tests.unit.transport.wsgi.v2_0.test_home.TestHomeDocument.test_href_template ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_bulk_delete_with_claim_ids zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_bulk_delete_with_claim_ids ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_delete_message_with_invalid_claim_doesnt_delete_message zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_delete_message_with_invalid_claim_doesnt_delete_message ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_delete_multiple_invalid_messages_204s zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_delete_multiple_invalid_messages_204s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_get_multiple_invalid_messages_404s zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_get_multiple_invalid_messages_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_get_nonexistent_message_404s zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_get_nonexistent_message_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_list_with_bad_marker zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_list_with_bad_marker ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_name_restrictions zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_name_restrictions ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_optional_ttl zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_optional_ttl ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_to_missing_queue zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_to_missing_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_using_queue_max_messages_post_size zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_using_queue_max_messages_post_size ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_3_1209601 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_3_1209601 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_unsupported_json_1___overflow___9223372036854775808_ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_unsupported_json_1___overflow___9223372036854775808_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_unsupported_json_2___underflow____9223372036854775809_ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_unsupported_json_2___underflow____9223372036854775809_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_2_0xdeadbeef zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_2_0xdeadbeef ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_bulk_delete_with_claim_ids zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_bulk_delete_with_claim_ids ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_bulk_delete_without_claim_ids zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_bulk_delete_without_claim_ids ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_delete zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_delete ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_delete_multiple_invalid_messages_204s zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_delete_multiple_invalid_messages_204s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_exceeded_message_posting zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_exceeded_message_posting ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_get_multiple_invalid_messages_404s zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_get_multiple_invalid_messages_404s ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_empty_queue zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_empty_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_2_pop_1000000 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_2_pop_1000000 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_single_message zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_single_message ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_1_None zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_1_None ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_to_missing_queue zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_to_missing_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_empty_listing zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_empty_listing ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_get_nonexisting_raises_404 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_get_nonexisting_raises_404 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_listing_marker_is_respected zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_listing_marker_is_respected ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_listing_works zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_listing_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_listing_works_with_limit_1_1 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_listing_works_with_limit_1_1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_options_3___ zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_options_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_1__1 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_3___ zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_4_localhost_27017 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_uri_4_localhost_27017 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_weight_1__1 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_weight_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_weight_2_4294967297 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_weight_2_4294967297 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_capabilities_mismatch_pool zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_capabilities_mismatch_pool ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_existing_overwrites zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_existing_overwrites ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_options_3___ zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_options_3___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_uri_2_4294967297 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_uri_2_4294967297 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_missing_fields zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_missing_fields ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_same_database_uri zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_same_database_uri ... Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_default_limits.TestDefaultLimits.test_message_listing_different_id zaqar.tests.unit.transport.wsgi.v1_1.test_default_limits.TestDefaultLimits.test_message_listing_different_id ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_health.TestHealthMongoDB.test_basic zaqar.tests.unit.transport.wsgi.v1_1.test_health.TestHealthMongoDB.test_basic ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_health.TestHealthMongoDB.test_operation_status zaqar.tests.unit.transport.wsgi.v1_1.test_health.TestHealthMongoDB.test_operation_status ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_home.TestHomeDocument.test_href_template zaqar.tests.unit.transport.wsgi.v1_1.test_home.TestHomeDocument.test_href_template ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v2_0.test_purge.TestPurge.test_purge_by_default zaqar.tests.unit.transport.wsgi.v2_0.test_purge.TestPurge.test_purge_by_default ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_2___ zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_2___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list_returns_503_on_nopoolfound_exception zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list_returns_503_on_nopoolfound_exception ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_no_metadata zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_no_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_non_ascii_name zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_non_ascii_name ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_without_project_id zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_without_project_id ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_duplicate_409 zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_duplicate_409 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_invalid_options_400 zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_invalid_options_400 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_works zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_listing_works_with_limit_3_10 zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_listing_works_with_limit_3_10 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_patch_no_body zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_patch_no_body ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_patch_nonexisting_raise_404 zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_patch_nonexisting_raise_404 ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_home.TestHomeDocument.test_json_response zaqar.tests.unit.transport.wsgi.v1_1.test_home.TestHomeDocument.test_json_response ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_delete_message_with_invalid_claim_doesnt_delete_message zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_delete_message_with_invalid_claim_doesnt_delete_message ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_exceeded_message_posting zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_exceeded_message_posting ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_invalid_3_pop_10_ids_1 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_invalid_3_pop_10_ids_1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_invalid_4_pop__1 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_invalid_4_pop__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_single_message zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_pop_single_message ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_bad_message_4___ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_bad_message_4___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_to_non_ascii_queue zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_to_non_ascii_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_with_long_queue_name zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_post_with_long_queue_name ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_1__1 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_2_59 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_2_59 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_3_1209601 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_3_1209601 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_delete zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_delete ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_delete_multiple_invalid_messages_204s zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_delete_multiple_invalid_messages_204s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_exceeded_message_posting zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_exceeded_message_posting ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_exceeded_payloads zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_exceeded_payloads ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_get_nonexistent_message_404s zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_get_nonexistent_message_404s ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_no_duplicated_messages_path_in_href zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_no_duplicated_messages_path_in_href ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_3_10 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_3_10 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_2_pop_1000000 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_2_pop_1000000 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_4_pop__1 zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_4_pop__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_4___ zaqar.tests.unit.transport.wsgi.v1_1.test_messages.TestMessagesMongoDBPooled.test_post_bad_message_4___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_3__ zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_3__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_4___ zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_4___ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_empty_project_id zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_empty_project_id ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list_returns_503_on_nopoolfound_exception zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_list_returns_503_on_nopoolfound_exception ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_name_restrictions zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_name_restrictions ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_non_ascii_name zaqar.tests.unit.transport.wsgi.v1_1.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_non_ascii_name ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/topic.py", line 94, in on_put created = self._topic_controller.create(topic_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 1181, in create return self._create(name, metadata, project) File "/<>/zaqar/tests/faulty_storage.py", line 171, in _create raise NotImplementedError() NotImplementedError Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/topic.py", line 59, in on_get resp_dict = self._topic_controller.get(topic_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 1148, in get return self._get(name, project) File "/<>/zaqar/tests/faulty_storage.py", line 165, in _get raise NotImplementedError() NotImplementedError Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/topic_stats.py", line 41, in on_get resp_dict = self._topic_ctrl.stats(topic_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 1215, in stats return self._stats(name, project) File "/<>/zaqar/tests/faulty_storage.py", line 183, in _stats raise NotImplementedError() NotImplementedError _list() takes from 1 to 2 positional arguments but 7 were given Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/topic.py", line 256, in _topic_list results = self._topic_controller.list(project=project_id, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 1135, in list return self._list(project, kfilter, marker, limit, detailed, name) TypeError: _list() takes from 1 to 2 positional arguments but 7 were given Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/topic.py", line 116, in on_delete self._topic_controller.delete(topic_name, project=project_id) File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/storage/base.py", line 1203, in delete return self._delete(name, project) File "/<>/zaqar/tests/faulty_storage.py", line 180, in _delete raise NotImplementedError() NotImplementedError skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleFaultyDriver.test_simple zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleFaultyDriver.test_simple ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_basics_thoroughly_with_different_client_id_1_1234567890 zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_basics_thoroughly_with_different_client_id_1_1234567890 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_basics_thoroughly_with_different_client_id_2_11111111111111111111111111111111111 zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_basics_thoroughly_with_different_client_id_2_11111111111111111111111111111111111 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_custom_metadata zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_custom_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_list zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_list ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_no_metadata zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_no_metadata ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_project_id_restriction zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_project_id_restriction ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v1_1.test_validation.TestValidation.test_message_deserialization zaqar.tests.unit.transport.wsgi.v1_1.test_validation.TestValidation.test_message_deserialization ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v2_0.test_urls.TestURL.test_url_verification_bad_request zaqar.tests.unit.transport.wsgi.v2_0.test_urls.TestURL.test_url_verification_bad_request ... ok zaqar.tests.unit.transport.wsgi.v1_1.test_validation.TestValidation.test_request_without_client_id zaqar.tests.unit.transport.wsgi.v1_1.test_validation.TestValidation.test_request_without_client_id ... Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ERROR [zaqar.common.pipeline] Method create not found in any of the registered stages ERROR [zaqar.transport.wsgi.v2_0.claims] Method create not found in any of the registered stages Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/claims.py", line 81, in on_post cid, msgs = self._claim_controller.create( File "/<>/zaqar/common/pipeline.py", line 113, in consumer raise AttributeError(msg) AttributeError: Method create not found in any of the registered stages ERROR [zaqar.common.pipeline] Method get not found in any of the registered stages ERROR [zaqar.transport.wsgi.v2_0.claims] Method get not found in any of the registered stages Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/claims.py", line 132, in on_get meta, msgs = self._claim_controller.get( File "/<>/zaqar/common/pipeline.py", line 113, in consumer raise AttributeError(msg) AttributeError: Method get not found in any of the registered stages ERROR [zaqar.common.pipeline] Method update not found in any of the registered stages ERROR [zaqar.transport.wsgi.v2_0.claims] Method update not found in any of the registered stages Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/claims.py", line 172, in on_patch self._claim_controller.update(queue_name, File "/<>/zaqar/common/pipeline.py", line 113, in consumer raise AttributeError(msg) AttributeError: Method update not found in any of the registered stages ERROR [zaqar.common.pipeline] Method delete not found in any of the registered stages ERROR [zaqar.transport.wsgi.v2_0.claims] Method delete not found in any of the registered stages Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/claims.py", line 196, in on_delete self._claim_controller.delete(queue_name, File "/<>/zaqar/common/pipeline.py", line 113, in consumer raise AttributeError(msg) AttributeError: Method delete not found in any of the registered stages ok zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsFaultyDriver.test_simple zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsFaultyDriver.test_simple ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_bad_claim_3__ zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_bad_claim_3__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_exceeded_claim zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_exceeded_claim ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_1__1 zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_new_ttl_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_1___1___1_ zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_1___1___1_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_5__43201__60_ zaqar.tests.unit.transport.wsgi.v2_0.test_claims.TestClaimsMongoDB.test_unacceptable_ttl_or_grace_5__43201__60_ ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_urls.TestURL.test_url_verification_bad_with_message_id zaqar.tests.unit.transport.wsgi.v2_0.test_urls.TestURL.test_url_verification_bad_with_message_id ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v2_0.test_default_limits.TestDefaultLimits.test_message_listing_same_id zaqar.tests.unit.transport.wsgi.v2_0.test_default_limits.TestDefaultLimits.test_message_listing_same_id ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_get_works zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_get_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_listing_error_with_invalid_limit zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_listing_error_with_invalid_limit ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_put_raises_if_missing_fields zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_put_raises_if_missing_fields ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_queue_create_works zaqar.tests.unit.transport.wsgi.v2_0.test_flavors_new.TestFlavorsMongoDB.test_queue_create_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_health.TestHealthMongoDB.test_basic zaqar.tests.unit.transport.wsgi.v2_0.test_health.TestHealthMongoDB.test_basic ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_health.TestHealthMongoDB.test_message_volume zaqar.tests.unit.transport.wsgi.v2_0.test_health.TestHealthMongoDB.test_message_volume ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_urls.TestURL.test_url_verification_success_with_message_id zaqar.tests.unit.transport.wsgi.v2_0.test_urls.TestURL.test_url_verification_success_with_message_id ... WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v2_0.test_media_type.TestMediaType.test_json_only_endpoints_with_wrong_accept_header zaqar.tests.unit.transport.wsgi.v2_0.test_media_type.TestMediaType.test_json_only_endpoints_with_wrong_accept_header ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ok zaqar.tests.unit.transport.wsgi.v2_0.test_validation.TestValidation.test_queue_metadata_putting zaqar.tests.unit.transport.wsgi.v2_0.test_validation.TestValidation.test_queue_metadata_putting ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_media_type.TestMediaType.test_request_with_body_and_urlencoded_contenttype_header_fails zaqar.tests.unit.transport.wsgi.v2_0.test_media_type.TestMediaType.test_request_with_body_and_urlencoded_contenttype_header_fails ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. ERROR [zaqar.transport.wsgi.driver] Traceback (most recent call last): File "falcon/api.py", line 244, in falcon.api.API.__call__ File "/<>/zaqar/common/decorators.py", line 48, in wrapper return func(*args, **kwargs) File "/<>/zaqar/transport/acl.py", line 48, in handler return func(*args, **kwargs) File "/<>/zaqar/transport/wsgi/v2_0/messages.py", line 178, in on_post queue_meta = self._queue_controller.get_metadata(queue_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/tests/faulty_storage.py", line 109, in get_metadata raise NotImplementedError() NotImplementedError ERROR [zaqar.transport.wsgi.v2_0.messages] Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/messages.py", line 104, in _get queue_meta = self._queue_controller.get_metadata(queue_name, File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/tests/faulty_storage.py", line 109, in get_metadata raise NotImplementedError() NotImplementedError ERROR [zaqar.transport.wsgi.v2_0.messages] Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/messages.py", line 355, in on_get message = self._message_controller.get( File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/tests/faulty_storage.py", line 135, in get raise NotImplementedError() NotImplementedError ERROR [zaqar.transport.wsgi.v2_0.messages] Traceback (most recent call last): File "/<>/zaqar/transport/wsgi/v2_0/messages.py", line 384, in on_delete self._message_controller.delete( File "/<>/zaqar/common/pipeline.py", line 97, in consumer tmp = target(*args, **kwargs) File "/<>/zaqar/tests/faulty_storage.py", line 151, in delete raise NotImplementedError() NotImplementedError ok zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesFaultyDriver.test_simple zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesFaultyDriver.test_simple ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_bad_client_id_3_550893e0_2b6e_11e3_835a_5cf9dd72369 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_bad_client_id_3_550893e0_2b6e_11e3_835a_5cf9dd72369 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_bulk_delete zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_bulk_delete ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_bulk_delete_without_claim_ids zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_bulk_delete_without_claim_ids ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_exceeded_message_posting zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_exceeded_message_posting ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_get_claimed_contains_claim_id_in_href zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_get_claimed_contains_claim_id_in_href ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_2_2 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_2_2 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_empty_queue zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_empty_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_invalid_3_pop_10_ids_1 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_pop_invalid_3_pop_10_ids_1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_bad_message_6_123 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_bad_message_6_123 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_single zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_single ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_using_queue_default_message_ttl zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_post_using_queue_default_message_ttl ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_1__1 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDB.test_unacceptable_ttl_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_1_ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_bad_client_id_1_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_delete_message_with_invalid_claim_doesnt_delete_message zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_delete_message_with_invalid_claim_doesnt_delete_message ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_get_claimed_contains_claim_id_in_href zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_get_claimed_contains_claim_id_in_href ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_list zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_list ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_2_2 zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_2_2 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_1_ zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_pop_invalid_1_ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_optional_ttl zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_optional_ttl ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_single zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_single ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_to_non_ascii_queue zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_post_to_non_ascii_queue ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_when_claim_deleted_then_messages_unclaimed zaqar.tests.unit.transport.wsgi.v2_0.test_messages.TestMessagesMongoDBPooled.test_when_claim_deleted_then_messages_unclaimed ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_ping.TestPing.test_get zaqar.tests.unit.transport.wsgi.v2_0.test_ping.TestPing.test_get ... ok zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_delete_works zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_delete_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_detailed_get_works zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_detailed_get_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_detailed_listing_works zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_detailed_listing_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_options_1__1 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_400_on_invalid_options_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_if_missing_fields zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_raises_if_missing_fields ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_works_with_extra_fields zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_patch_works_with_extra_fields ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_weight_1__1 zaqar.tests.unit.transport.wsgi.v2_0.test_pools_new.TestPoolsMongoDB.test_put_raises_if_invalid_weight_1__1 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_purge.TestPurge.test_purge_particular_resource zaqar.tests.unit.transport.wsgi.v2_0.test_purge.TestPurge.test_purge_particular_resource ... skipped 'Skipped by Ubuntu due to, bug 1786517' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_1__ zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_bad_metadata_1__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_with_different_client_id_1_1234567890 zaqar.tests.unit.transport.wsgi.v2_0.test_queue_lifecycle.TestQueueLifecycleMongoDB.test_basics_thoroughly_with_different_client_id_1_1234567890 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_confirm zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_confirm ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_and_send_notification zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_and_send_notification ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_invalid_ttl zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_create_invalid_ttl ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_delete_works zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_delete_works ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_list_empty zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_list_empty ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_patch_invalid_ttl zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_patch_invalid_ttl ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_patch_to_duplicate_raise_409 zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_patch_to_duplicate_raise_409 ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_recreate zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_recreate ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_recreate_after_confirmed zaqar.tests.unit.transport.wsgi.v2_0.test_subscriptions.TestSubscriptionsMongoDB.test_recreate_after_confirmed ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_bad_metadata_3__ zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_bad_metadata_3__ ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_basics_thoroughly_2_foo zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_basics_thoroughly_2_foo ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_empty_project_id zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_empty_project_id ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_list_returns_503_on_nopoolfound_exception zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_list_returns_503_on_nopoolfound_exception ... skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_name_restrictions zaqar.tests.unit.transport.wsgi.v2_0.test_topic_lifecycle.TestTopicLifecycleMongoDB.test_name_restrictions ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. skipped 'Skipping tests that require MongoDB. Ensure mongod is running on localhost and then set ZAQAR_TEST_MONGODB in order to enable tests that are specific to this storage backend. ' zaqar.tests.unit.transport.wsgi.v2_0.test_urls.TestURL.test_url_verification_success zaqar.tests.unit.transport.wsgi.v2_0.test_urls.TestURL.test_url_verification_success ... WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1. This version was marked as deprecated in 2014-9-11T17:47:05Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [zaqar.common.decorators] Enabling API version 1.1. This version was marked as deprecated in 2016-7-29T02:22:47Z. Using it may expose security issues, unexpected behavior or damage your data. WARNING [oslo_config.cfg] Deprecated: Option "metadata_size_uplimit" from group "limits:transport" is deprecated. Use option "max_queue_metadata" from group "transport". ok zaqar.tests.unit.transport.wsgi.v2_0.test_validation.TestValidation.test_metadata_deserialization zaqar.tests.unit.transport.wsgi.v2_0.test_validation.TestValidation.test_metadata_deserialization ... ok ====================================================================== FAIL: zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_create_replaces_on_duplicate_insert zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_create_replaces_on_duplicate_insert ---------------------------------------------------------------------- testtools.testresult.real._StringException: pythonlogging:'zaqar': {{{ No 'zaqar.data.storage' driver found, looking for 'localhost' Traceback (most recent call last): File "/<>/zaqar/storage/utils.py", line 92, in load_storage_impl mgr = driver.DriverManager(driver_type, storage_type, File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 53, in __init__ super(DriverManager, self).__init__( File "/usr/lib/python3/dist-packages/stevedore/named.py", line 89, in __init__ self._init_plugins(extensions) File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 112, in _init_plugins raise NoMatches('No %r driver found, looking for %r' % stevedore.exception.NoMatches: No 'zaqar.data.storage' driver found, looking for 'localhost' }}} Traceback (most recent call last): File "/<>/zaqar/storage/utils.py", line 92, in load_storage_impl mgr = driver.DriverManager(driver_type, storage_type, File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 53, in __init__ super(DriverManager, self).__init__( File "/usr/lib/python3/dist-packages/stevedore/named.py", line 89, in __init__ self._init_plugins(extensions) File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 112, in _init_plugins raise NoMatches('No %r driver found, looking for %r' % stevedore.exception.NoMatches: No 'zaqar.data.storage' driver found, looking for 'localhost' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/<>/zaqar/tests/unit/storage/base.py", line 1550, in test_create_replaces_on_duplicate_insert self.pools_controller.create(name, File "/<>/zaqar/storage/base.py", line 830, in create if not self._check_capabilities(uri, flavor=flavor_obj): File "/<>/zaqar/storage/base.py", line 761, in _check_capabilities new_store = utils.load_storage_impl(uri, File "/<>/zaqar/storage/utils.py", line 99, in load_storage_impl raise errors.InvalidDriver(exc) zaqar.common.errors.InvalidDriver: No 'zaqar.data.storage' driver found, looking for 'localhost' ====================================================================== FAIL: zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_create_succeeds zaqar.tests.unit.storage.test_impl_sqlalchemy.SqlalchemyPoolsTest.test_create_succeeds ---------------------------------------------------------------------- testtools.testresult.real._StringException: pythonlogging:'zaqar': {{{ No 'zaqar.data.storage' driver found, looking for 'localhost' Traceback (most recent call last): File "/<>/zaqar/storage/utils.py", line 92, in load_storage_impl mgr = driver.DriverManager(driver_type, storage_type, File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 53, in __init__ super(DriverManager, self).__init__( File "/usr/lib/python3/dist-packages/stevedore/named.py", line 89, in __init__ self._init_plugins(extensions) File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 112, in _init_plugins raise NoMatches('No %r driver found, looking for %r' % stevedore.exception.NoMatches: No 'zaqar.data.storage' driver found, looking for 'localhost' }}} Traceback (most recent call last): File "/<>/zaqar/storage/utils.py", line 92, in load_storage_impl mgr = driver.DriverManager(driver_type, storage_type, File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 53, in __init__ super(DriverManager, self).__init__( File "/usr/lib/python3/dist-packages/stevedore/named.py", line 89, in __init__ self._init_plugins(extensions) File "/usr/lib/python3/dist-packages/stevedore/driver.py", line 112, in _init_plugins raise NoMatches('No %r driver found, looking for %r' % stevedore.exception.NoMatches: No 'zaqar.data.storage' driver found, looking for 'localhost' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/<>/zaqar/tests/unit/storage/base.py", line 1544, in test_create_succeeds self.pools_controller.create(str(uuid.uuid1()), File "/<>/zaqar/storage/base.py", line 830, in create if not self._check_capabilities(uri, flavor=flavor_obj): File "/<>/zaqar/storage/base.py", line 761, in _check_capabilities new_store = utils.load_storage_impl(uri, File "/<>/zaqar/storage/utils.py", line 99, in load_storage_impl raise errors.InvalidDriver(exc) zaqar.common.errors.InvalidDriver: No 'zaqar.data.storage' driver found, looking for 'localhost' ---------------------------------------------------------------------- Ran 793 tests in 14.230s FAILED (failures=2, skipped=566) + clean_exit /tmp/CEILO-MONGODB-7Xlh4 + local error_code=1 + rm -rf /tmp/CEILO-MONGODB-7Xlh4 ++ jobs -p + kill 11430 11505 11506 + return 1 make[1]: *** [debian/rules:37: override_dh_install] Error 1 make[1]: Leaving directory '/<>' make: *** [debian/rules:6: binary] Error 2 dpkg-buildpackage: error: fakeroot debian/rules binary subprocess returned exit status 2 -------------------------------------------------------------------------------- Build finished at 20200105-1024 Finished -------- E: Build failure (dpkg-buildpackage died) +------------------------------------------------------------------------------+ | Cleanup | +------------------------------------------------------------------------------+ Purging /<> Not removing build depends: as requested +------------------------------------------------------------------------------+ | Summary | +------------------------------------------------------------------------------+ Build Architecture: amd64 Build-Space: 18916 Build-Time: 24 Distribution: focal Fail-Stage: build Host Architecture: amd64 Install-Time: 146 Job: zaqar_9.0.0-0ubuntu1.dsc Machine Architecture: amd64 Package: zaqar Package-Time: 171 Source-Version: 9.0.0-0ubuntu1 Space: 18916 Status: attempted Version: 9.0.0-0ubuntu1 -------------------------------------------------------------------------------- Finished at 20200105-1024 Build needed 00:02:51, 18916k disc space RUN: /usr/share/launchpad-buildd/bin/in-target scan-for-processes --backend=chroot --series=focal --arch=amd64 PACKAGEBUILD-18368205 Scanning for processes to kill in build PACKAGEBUILD-18368205