pax_global_header00006660000000000000000000000064127720676270014532gustar00rootroot0000000000000052 comment=53299d1dc9ceadf185810b981cd123eab89ab90c q3c-1.5.0/000077500000000000000000000000001277206762700122235ustar00rootroot00000000000000q3c-1.5.0/.gitignore000066400000000000000000000000541277206762700142120ustar00rootroot00000000000000*~ *.o *.so dump.c gen_data prepare results/q3c-1.5.0/.travis.yml000066400000000000000000000017111277206762700143340ustar00rootroot00000000000000language: c before_install: - sudo apt-get -qq update - sudo apt-get install -y libxml2-dev - sudo apt-get install postgresql-server-dev-9.1 postgresql-common # -dev-all possible services: - postgresql install: make && sudo make install script: if [ ${COVERITY_SCAN_BRANCH} != 1 ]; then make test ; fi compiler: - clang - gcc env: global: # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created # via the "travis encrypt" command using the project repo's public key - secure: "E3KdO0b04kO/0j6Kf87d+mHerK/9ZOBevibds1/wlm8T9F7PAKclTGgh6rxJZUWwTAbgbGxBv7GddIHbWTkrOjvIj7WP2/5sSg34P8q8aEeWvx/E99q8auVQge0/2MkNLcTIxfncqRnzbVbJjGpIvN0jkZ/A3t7DKlQquhvuMxw=" addons: coverity_scan: project: name: "segasai/q3c" description: "Q3C sky indexing" notification_email: koposov@ast.cam.ac.uk build_command_prepend: "make clean" build_command: "make" branch_pattern: coverity_branch # postgresql: "9.5" q3c-1.5.0/COPYING000066400000000000000000000431101277206762700132550ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. q3c-1.5.0/Makefile000066400000000000000000000055061277206762700136710ustar00rootroot00000000000000EXTENSION = q3c EXTVERSION := $(shell grep default_version $(EXTENSION).control | \ sed -e "s/default_version[[:space:]]*=[[:space:]]*'\([^']*\)'/\1/") DOCS = README.md OBJS = dump.o q3c.o q3c_poly.o q3cube.o MODULE_big = q3c DATA = $(wildcard scripts/*sql) PG_CONFIG = pg_config SHLIB_LINK += $(filter -lm, $(LIBS)) EXTRA_CLEAN = dump.c prepare prepare.o gen_data.o \ results/join.out results/cone.out results/ellipse.out \ results/version.out results/poly.out results/area.out \ gen_data OPT = -O3 OPT_LOW = -O2 #DEBUG = -g3 -ggdb -DQ3C_DEBUG PG_CPPFLAGS = $(DEBUG) $(OPT) -D_GNU_SOURCE -D__STDC_FORMAT_MACROS -DQ3C_VERSION='"'$(EXTVERSION)'"' CPPFLAGS = $(CPPFLAGS) -D$(Q3CVERSION) MYBINLIBS = -lm # I have to use this instead of PG_LIBS, because PG_LIBS brings a # bunch of libraries which are often not installed PGXS := $(shell $(PG_CONFIG) --pgxs) include $(PGXS) dump.c: prepare ./prepare prepare: prepare.o q3cube.o q3c_poly.o $(CC) prepare.o q3cube.o q3c_poly.o $(MYBINLIBS) -o $@ gen_data: gen_data.c $(CC) $< $(CPPFLAGS) $(MYBINLIBS) -o $@ test: gen_data all createdb q3c_test psql q3c_test -c "CREATE TABLE test (ra double precision, dec double precision)" psql q3c_test -c "CREATE TABLE test1 (ra double precision, dec double precision)" psql q3c_test -c "CREATE TABLE test_small (ra double precision, dec double precision)" ./gen_data 1 1000000 | psql q3c_test -c "COPY test FROM STDIN WITH DELIMITER ' '" ./gen_data 2 1000000 | psql q3c_test -c "COPY test1 FROM STDIN WITH DELIMITER ' '" ./gen_data 3 100000 | psql q3c_test -c "COPY test_small FROM STDIN WITH DELIMITER ' '" psql q3c_test -c 'create extension q3c' psql q3c_test -c 'CREATE INDEX q3c_idx ON test (q3c_ang2ipix(ra,dec))' psql q3c_test -c 'CREATE INDEX q3c_idx1 ON test1 (q3c_ang2ipix(ra,dec))' psql q3c_test -c 'CREATE INDEX q3c_idx_small ON test_small (q3c_ang2ipix(ra,dec))' psql q3c_test -c 'ANALYZE test' psql q3c_test -c 'ANALYZE test1' psql q3c_test -c 'ANALYZE test_small' mkdir -p results cat sql/ang2ipix.sql | psql q3c_test > results/ang2ipix.out diff results/ang2ipix.out expected/ang2ipix.expected cat sql/cone.sql | psql q3c_test > results/cone.out diff results/cone.out expected/cone.expected cat sql/cone_join_rev.sql | psql q3c_test > results/cone.out diff results/cone.out expected/cone.expected cat sql/ellipse.sql | psql q3c_test > results/ellipse.out diff results/ellipse.out expected/ellipse.expected cat sql/join.sql | psql q3c_test > results/join.out diff results/join.out expected/join.expected cat sql/poly.sql | psql q3c_test > results/poly.out diff results/poly.out expected/poly.expected cat sql/version.sql | psql q3c_test > results/version.out diff results/version.out expected/version.expected cat sql/area.sql | psql q3c_test > results/area.out diff results/area.out expected/area.expected dropdb q3c_test q3c-1.5.0/README.md000066400000000000000000000235531277206762700135120ustar00rootroot00000000000000[![Build Status](https://travis-ci.org/segasai/q3c.svg?branch=master)](https://travis-ci.org/segasai/q3c) # Q3C Author: Sergey Koposov, Institute of Astronomy, Cambridge, UK Copyright (c) 2004-2016 Sergey Koposov Email: koposov@ast.cam.ac.uk Idea and implementation by Sergey Koposov with help from Oleg Bartunov. Fresh versions of the software could be obtained here: https://github.com/segasai/q3c To read more about the Q3C indexing, please read the Q3C paper published in ADASS conference proceedings http://adsabs.harvard.edu/abs/2006ASPC..351..735K The citation is "Koposov, S., & Bartunov, O. 2006, Astronomical Society of the Pacific Conference Series, 351, 735" If you use Q3C you are kindly asked to cite this paper. I would be also happy to hear about any usage of Q3C. ## Prerequisites To work with Q3C you will only need to have a PostgreSQL database installed (version 9.1 or later). If you have PostgreSQL version lower than 9.1 your will need an older version of Q3C (1.4.x). ## Installation - make - make install - Execute "create extension q3c" in PostgreSQL client Note: To successfully compile Q3C have to have pg_config in your PATH After the installation you will have several new functions in PostgreSQL. All names of these functions start with the "q3c_" prefix. ## Table preparation for Q3C To begin use Q3C for searches and cross-matches you should create the indexes on the tables. In this demonstration we'll assume that you have the table called "mytable" with "ra" and "dec" columns (right ascension and declination in degrees). First, you will need to create the spatial index, using the following command: `my_db# CREATE INDEX ON mytable (q3c_ang2ipix(ra, dec)); ` The next procedure is optional but strongly recommended: cluster the table using newly created index. The clustering procedure is the procedure of ordering the data on the disk according to the Q3C spatial index values, which will ensure faster queries. If the data have been ingested in the database while ordered by some spherical zones, the clustering step can be ommited (although still recommended). The clustering step may take a while if your dataset is large. `my_db# CLUSTER q3c_mytable_idx ON mytable;` Now the last step is analyzing your table: `my_db# ANALYZE mytable;` Now you should be able to use q3c queries. ## Q3C functions *IMPORTANT* Throughout q3c it is assumed that all the angles are in degrees. The functions installed by Q3C are: - q3c_ang2ipix(ra, dec) -- returns the ipix value at ra and dec - q3c_dist(ra1, dec1, ra2, dec2) -- returns the distance in degrees between (ra1,dec1) and (ra2,dec2) - q3c_join(ra1, dec1, ra2, dec2, radius) -- returns true if (ra1, dec1) is within radius spherical distance of (ra2, dec2). It should be used when the index on q3c_ang2ipix(ra2, dec2) is created. See below for examples. - q3c_ellipse_join(ra1, dec1, ra2, dec2, major, ratio, pa) -- like q3c_join, except (ra1, dec1) have to be within an ellipse with major axis major, the axis ratio ratio and the position angle pa (from north through east) - q3c_radial_query(ra, dec, center_ra, center_dec, radius) -- returns true if ra, dec is within radius degrees of center_ra, center_dec. This is the main function for cone searches. This function should be used when the index on q3c_ang2ipix(ra,dec) is created. - q3c_ellipse_query(ra, dec, center_ra, center_dec, maj_ax, axis_ratio, PA ) -- returns true if ra, dec is within the ellipse from center_ra, center_dec. The ellipse is specified by major axis, axis ratio and positional angle. This function should be used if when the index on q3c_ang2ipix(ra,dec) is created. - q3c_poly_query(ra, dec, poly) -- returns true if ra, dec is within the postgresql polygon poly specified as an array of right ascensions and declinations. - q3c_ipix2ang(ipix) -- returns a 2-array of (ra,dec) corresponding to ipix. - q3c_pixarea(ipix, bits) -- returns the area corresponding to ipix at level bits (1 is smallest, 30 is the cube face) in steradians. - q3c_ipixcenter(ra, dec, bits) -- the function returning the ipix value of the pixel center of certain depth covering the specified (ra,dec) - q3c_version() -- returns the version of Q3C that is installed ## Query examples - The cone search (the query of all objects within the circular region of the sky): For example to query all objects within radius of 0.1 deg from (ra,dec) = (11,12)deg in the table mytable you should do: ``` my_db# SELECT * FROM mytable WHERE q3c_radial_query(ra, dec, 11, 12, 0.1); ``` The order of arguments is important, so that the column names of the table should come first, and the location where you search after, otherwise the index won't be used. There is also another way of doing cone searches which may be appropriate if the table that you are working with is small. In that case q3c_radial_query may be too CPU heavy. So you may want to query the table: ``` my_db# SELECT * FROM mytable WHERE q3c_join(11, 12, ra, dec, 0.1); ``` - The ellipse search: search for objects within the ellipse from a given point: ``` my_db=# select * from mytable WHERE q3c_ellipse_query(ra, dec, 10, 20, 1, 0.5 ,10); ``` returns the objects which are within the ellipse with the center at (ra,dec)=(10,20) major axis of 1 degree, axis ratio of 0.5 and positional angle of 10 degrees. - The polygonal query, i.e. the query of the objects which lie inside the region bounded by the polygon on the sphere. To query the objects in the polygon ((0,0),(2,0),(2,1),(0,1)) ) (this is the spherical polygon with following vertices: (ra=0, dec=0) ; (ra=2, dec=0); (ra=2, dec=1); (ra=0, dec=1)): ``` my_db# SELECT * FROM mytable WHERE q3c_poly_query(ra, dec, '{0, 0, 2, 0, 2, 1, 0, 1}'); ``` - The positional cross-match of the tables: In this example we will assume that we have a huge table "table2" with ra and dec columns and an already created Q3C index on them and a smaller table "table1" with ra and dec columns. Now, if we want to cross-match the tables "table1" and "table2" by position with the crossmatch radius of say 0.001 degrees, we would do it with the following query: ``` my_db# SELECT * FROM table1 AS a, table2 AS b WHERE q3c_join(a.ra, a.dec, b.ra, b.dec, 0.001); ``` The order of arguments is important again, because it determines whether an index is going to be used or not. The ra,dec columns from the table with the index should go after the ra,dec columns from the table without the index. It is important that the query will return *ALL* the pairs within the matching distance, rather than say nearest neighbors. For nearest neighbors see below. If every object in the table1 have his own error circle, here we'll assume that the radius of that circle in degrees is stored in the column "err", then you should run the query: ``` my_db# SELECT * FROM table1 AS a, table2 AS b WHERE q3c_join(a.ra, a.dec, b.ra, b.dec, a.err); ``` - The positional cross-match of the tables with the ellipse error-area: (for example if you want to find all the objects from one catalogue which lies inside the elliptical bodies of the galaxies from the second catalogue) It is possible to do the join when the error area of each record of the catalogue is an ellipse. Then you can do the query like this ``` my_db# SELECT * FROM table1 AS a, table2 AS b WHERE q3c_ellipse_join(a.ra, a.dec, b.ra, b.dec, a.maj_ax a.axis_ratio, a.PA); ``` where axis_ratio is the column with axis ratio of the ellipses and PA is the column with the positional angles of them, and maj_ax is the column with major axises of those ellipses. - The density estimation of your objects using pixelation depth of 25: ``` my_db# SELECT (q3c_ipix2ang(i))[1] as ra ,(q3c_ipix2ang(i))[2] as dec ,c, q3c_pixarea(i,25) as area from (select q3c_ipixcenter(ra,dec, 25) as i, count(*) as c from mytable group by i) as x; ``` returns the list of ra,dec of the Q3C pixel center, number of objects within a given pixel, and pixel area. If you use that query you should keep in mind that Q3C doesn't have the property of uniform pixel areas (as opposed to HEALPIX). - Nearest neighbor queries: This query selects the only nearest neighbor for each row in your table. If there is no neighbor, the columns are filled with nulls. ``` my_db# SELECT t.*, ss.* FROM mytable AS t, LEFT JOIN LATERAL ( SELECT s.* FROM sdssdr9.phototag AS s WHERE q3c_join(t.ra, t.dec, s.ra, s.dec, 1./3600) ORDER BY q3c_dist(t.ra,t.dec,s.ra,s.dec) ASC LIMIT 1 ) as ss ON true; ``` The idea is very simple for every row of your table mytable LATERAL() executes the "subquery" orders them by distance and limit by 1. If you want only the objects which do have the neighbors then the query will look like that ``` my_db# SELECT t.*, ss.* FROM mytable AS t, LATERAL ( SELECT s.* FROM sdssdr9.phototag AS s WHERE q3c_join(t.ra, t.dec, s.ra, s.dec, 1./3600) ORDER BY q3c_dist(t.ra,t.dec,s.ra,s.dec) ASC LIMIT 1 ) as ss ; ``` - Nearest neighbor 2 This query selects the only nearest neighbor for each row in your table. If there are no neighbor, the columns are filled with nulls. This query requires presence of some object id column with the index on the table. ``` my_db# WITH x AS ( SELECT *, ( SELECT objid FROM sdssdr9.phototag AS p WHERE q3c_join(m.ra, m.dec, p.ra, p.dec, 1./3600) ORDER BY q3c_dist(m.ra, m.dec, p.ra, p.dec) ASC LIMIT 1) AS match_objid FROM mytable AS m ) SELECT * FROM x, sdssdr9.phototag AS s WHERE x.match_objid=s.objid; ``` q3c-1.5.0/common.h000066400000000000000000000257121277206762700136730ustar00rootroot00000000000000/* Copyright (C) 2004-2015 Sergey Koposov Email: koposov@ast.cam.ac.uk This file is part of Q3C. Q3C is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Q3C is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Q3C; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include "postgres.h" #ifndef __STDC_FORMAT_MACROS #define __STDC_FORMAT_MACROS #endif #include #include #ifndef Q3C_COMMON_H #define Q3C_COMMON_H #ifndef q3c_ipix_t /*#define q3c_ipix_t long long typedef long long q3c_ipix_t ;*/ typedef int64 q3c_ipix_t ; #endif /* q3c_ipix_t */ #ifndef Q3C_IPIX_FMT #define Q3C_IPIX_FMT "%"PRId64 #define Q3C_CONST(c) INT64_C(c) #endif /* Q3C_IPIX_FMT */ /* If You have not specified the Q3C_LONG_DOUBLE macro then we will use simple double functions */ #ifndef Q3C_LONG_DOUBLE typedef double q3c_coord_t; #define q3c_pow(a,b) pow(a, b) #define q3c_fabs(a) fabs(a) #define q3c_fmod(a,b) fmod(a, b) #define q3c_cos(a) cos(a) #define q3c_sin(a) sin(a) #define q3c_asin(a) asin(a) #define q3c_acos(a) acos(a) #define q3c_sincos0(a, b, c) sincos(a, b, c) #define q3c_tan(a) tan(a) #define q3c_atan(a) atan(a) #define q3c_atan2(a,b) atan2(a, b) #define q3c_sqrt(a) sqrt(a) #define q3c_log(a) log(a) #define q3c_ceil(a) ceil(a) #define Q3C_HALF 0.5 #define Q3C_COORD_FMT "%f" #define Q3C_PI 3.1415926535897932384626433832795028841968 #define Q3C_2PI 6.2831853071795864769252867665590057683936 #define Q3C_PI_2 1.5707963267948966192313216916397514420984 #define Q3C_DEGRA 0.0174532925199432957692369076848861271344 #define Q3C_RADEG 57.2957795130823208767981548141051703324122 #define Q3C_LG2 0.6931471805599453094172321214581765680755 /* I really do not see the reason to set them as const ... const q3c_coord_t Q3C_PI=3.1415926535897932384626433832795028841968; const q3c_coord_t Q3C_2PI=6.2831853071795864769252867665590057683936; const q3c_coord_t Q3C_PI_2=1.5707963267948966192313216916397514420984; const q3c_coord_t Q3C_DEGRA=0.0174532925199432957692369076848861271344; const q3c_coord_t Q3C_RADEG=57.2957795130823208767981548141051703324122; const q3c_coord_t Q3C_LG2=0.6931471805599453094172321214581765680755; */ #else /* Q3C_LONG_DOUBLE */ typedef long double q3c_coord_t; #define q3c_pow(a,b) powl(a, b) #define q3c_fabs(a) fabsl(a) #define q3c_fmod(a,b) fmodl(a, b) #define q3c_cos(a) cosl(a) #define q3c_sin(a) sinl(a) #define q3c_asin(a) asinl(a) #define q3c_acos(a) acosl(a) #define q3c_sincos0(a, b, c) sincosl(a, b, c) #define q3c_tan(a) tanl(a) #define q3c_atan(a) atanl(a) #define q3c_atan2(a,b) atan2l(a, b) #define q3c_sqrt(a) sqrtl(a) #define q3c_log(a) logl(a) #define q3c_ceil(a) ceill(a) #define Q3C_HALF 0.5L #define Q3C_COORD_FMT "%.15Lf" #define Q3C_PI 3.1415926535897932384626433832795028841968L #define Q3C_2PI 6.2831853071795864769252867665590057683936L #define Q3C_PI_2 1.5707963267948966192313216916397514420984L #define Q3C_DEGRA 0.0174532925199432957692369076848861271344L #define Q3C_RADEG 57.2957795130823208767981548141051703324122L #define Q3C_LG2 0.6931471805599453094172321214581765680755L #endif /* Q3C_LONG_DOUBLE */ #ifndef Q3C_CBITS #define Q3C_CBITS sizeof(q3c_coord_t) #endif /* Q3C_CBITS */ #ifndef Q3C_IBITS #define Q3C_IBITS sizeof(q3c_ipix_t) #endif /* Q3C_IBITS */ #ifndef Q3C_INTERLEAVED_NBITS #define Q3C_INTERLEAVED_NBITS 16 #endif /* Q3C_INTERLEAVED_NBITS */ #ifndef Q3C_I1 #define Q3C_I1 (1 << (Q3C_INTERLEAVED_NBITS)) #endif /* Q3C_INTERLEAVED_NBITS */ /* this probably will work only in the case of long double variables ?? */ /*#define Q3C_PI 3.1415926535897932384626433832795029L #define q3c_2_PI 3.1415926535897932384626433832795029L #define Q3C_2PI 6.2831853071795864769252867665590058L #define Q3C_PI_2 1.5707963267948966192313216916397514L #define Q3C_DEGRA 0.01745329251994329576923690768488612L #define Q3C_RADEG 57.295779513082320876798154814105170L #define Q3C_LG2 0.301029995663981195213738894724493026768L #define Q3C_LG2 0.6931471805599453094172321214581765680755L*/ #define Q3C_BOX_INTERSECT(x0, x1, y0, y1, a0, a1, b0, b1) ((((x0 < a0) && \ (x1 >= a0)) || \ (x0 <= a1)) && \ (((y0 < b0) && \ (y1 >= b0)) || \ (y0 <= b1))) /* True if square(x0,x1,y0,y1) and square(a0,a1,b0,b1) have any common point*/ #define Q3C_INTERSECT(a, b, x, y) (((a <= y) && (a >= x)) || \ ((a < x) && (b >= x))) #define Q3C_DISJUNCT 0 /* disjunct areas */ #define Q3C_PARTIAL 1 /* partial coverage */ #define Q3C_EDGE 1 /* point lie on the edge of the region */ #define Q3C_COVER 2 /* the point or the region is completely inside other */ #define Q3C_MAX_N_POLY_VERTEX 100 /* Maximal number of vertices in the polygon */ #define Q3C_NPARTIALS 50 /*length of the list of the partially covered ipix ranges*/ #define Q3C_NFULLS 50 /*length of the list of the fully covered ipix ranges*/ #define Q3C_MAX_DEPTH 4 /*the maximum depth of going down the quadtree when doing spatial searches */ #define Q3C_STACK_SIZE 11000 /* the size of the stacks for quadtrees when doing spatial searches */ /* !!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!! * Consider that the size of the stacks should directly depend on the * value of res_depth variable ! * It seems that each of stacks should have the size 4*(2^(depth-1)) */ #define Q3C_MAXRAD 35 /* maximum allowed radius for circles and ellipses */ #define Q3C_MINDISCR 1e-10 /* minimum possible value of the discriminant of the 2nd order curves, before we start assuming parabola or hyperbola */ #define UNWRAP_RA(ra) ( (ra < 0) ? \ (q3c_fmod(ra, 360) + 360) : \ ( (ra > 360) ? q3c_fmod(ra, 360) : ra ) \ ) #ifdef __USE_GNU #define q3c_sincos(a,b,c) q3c_sincos0(a,&b,&c) #else #define q3c_sincos(a,b,c) do {\ b=q3c_sin(a);\ c=q3c_cos(a);\ } while(0); #endif struct q3c_prm { q3c_ipix_t nside; q3c_ipix_t *xbits; q3c_ipix_t *ybits; q3c_ipix_t *xbits1; q3c_ipix_t *ybits1; }; struct q3c_square { q3c_ipix_t x0, y0; /* Integer coordinates of the center of the square for */ int nside0; /* the nside0 segmentation */ char status; }; #define SET_SQUARE(sq, x, y, n) do {\ sq->x0=x;\ sq->y0=y;\ sq->nside0=n;\ } while(0); typedef struct { int n; q3c_coord_t *ra; /* array of RAs of vertices */ q3c_coord_t *dec; /* array of DECs of vertices */ q3c_coord_t *x; /* array of X coords on the cube face of vertices */ q3c_coord_t *y; /* array of Y coords on the cube face of vertices */ q3c_coord_t *ax; /* array of x projections of the edge between vertices */ q3c_coord_t *ay; /* array of y projections of the edge between vertices */ } q3c_poly; typedef struct { q3c_coord_t ra; q3c_coord_t dec; q3c_coord_t rad; } q3c_circle_region; typedef struct { q3c_coord_t ra; q3c_coord_t dec; q3c_coord_t rad; /* major axis */ q3c_coord_t e; /* eÓÓentricity */ q3c_coord_t PA; } q3c_ellipse_region; typedef enum {Q3C_CIRCLE, Q3C_POLYGON, Q3C_ELLIPSE} q3c_region; void init_q3c(struct q3c_prm *, q3c_ipix_t); void init_q3c1(struct q3c_prm *, q3c_ipix_t); void q3c_dump_prm(struct q3c_prm *,char *); void q3c_ang2ipix(struct q3c_prm *, q3c_coord_t, q3c_coord_t, q3c_ipix_t *); void q3c_ipix2ang(struct q3c_prm *, q3c_ipix_t , q3c_coord_t *, q3c_coord_t *); q3c_coord_t q3c_pixarea(struct q3c_prm *hprm, q3c_ipix_t ipix, int depth); void q3c_get_nearby_split(struct q3c_prm *, q3c_coord_t, q3c_coord_t, q3c_coord_t, q3c_ipix_t *, int); void q3c_get_nearby(struct q3c_prm *, q3c_region, void *, q3c_ipix_t *); void q3c_get_xy_minmax(q3c_coord_t, q3c_coord_t, q3c_coord_t, q3c_coord_t, q3c_coord_t, q3c_coord_t, q3c_coord_t *, q3c_coord_t *, q3c_coord_t *, q3c_coord_t *, char *); void q3c_ang2ipix_xy(struct q3c_prm *hprm, q3c_coord_t ra, q3c_coord_t dec, char *out_face_num, q3c_ipix_t *ipix, q3c_coord_t *x_out, q3c_coord_t *y_out); void q3c_get_poly_coefs(char, q3c_coord_t, q3c_coord_t, q3c_coord_t, q3c_coord_t *, q3c_coord_t *, q3c_coord_t *, q3c_coord_t *, q3c_coord_t *, q3c_coord_t *); char q3c_xy2facenum(q3c_coord_t, q3c_coord_t, char); char q3c_get_facenum(q3c_coord_t, q3c_coord_t); char q3c_in_ellipse(q3c_coord_t alpha, q3c_coord_t delta0, q3c_coord_t alpha1, q3c_coord_t delta01, q3c_coord_t d0, q3c_coord_t e, q3c_coord_t PA0); q3c_coord_t q3c_dist(q3c_coord_t, q3c_coord_t, q3c_coord_t, q3c_coord_t); q3c_coord_t q3c_sindist(q3c_coord_t, q3c_coord_t, q3c_coord_t, q3c_coord_t); void q3c_radial_query(struct q3c_prm *hprm, q3c_coord_t ra0, q3c_coord_t dec0, q3c_coord_t rad, q3c_ipix_t *out_ipix_arr_fulls, q3c_ipix_t *out_ipix_arr_partials); void q3c_ellipse_query(struct q3c_prm *hprm, q3c_coord_t ra0, q3c_coord_t dec0, q3c_coord_t majax, q3c_coord_t PA, q3c_coord_t ell, q3c_ipix_t *out_ipix_arr_fulls, q3c_ipix_t *out_ipix_arr_partials); void q3c_init_poly(q3c_poly *qp, int n); void q3c_prepare_poly(q3c_poly *qp); void q3c_project_poly(q3c_poly *qp, char facenum, char *large_flag); char q3c_get_facenum_poly(q3c_poly *qp); int q3c_check_point_in_poly(q3c_poly *qp, q3c_coord_t x0, q3c_coord_t y0); int q3c_poly_cover_check(q3c_poly *qp, q3c_coord_t xc_cur, q3c_coord_t yc_cur, q3c_coord_t cur_size); void q3c_get_minmax_poly(q3c_poly *qp, q3c_coord_t *xmin, q3c_coord_t *xmax, q3c_coord_t *ymin, q3c_coord_t *ymax); void q3c_poly_query(struct q3c_prm *hprm, q3c_poly *qp, q3c_ipix_t *out_ipix_arr_fulls, q3c_ipix_t *out_ipix_arr_partials, char *too_large); int q3c_check_sphere_point_in_poly(struct q3c_prm *hprm, int n, q3c_coord_t in_ra[], q3c_coord_t in_dec[], q3c_coord_t ra0, q3c_coord_t dec0, char *too_large, int invocation); char q3c_get_region_facenum(q3c_region region, void *data); q3c_ipix_t q3c_xiyi2ipix(q3c_ipix_t nside, q3c_ipix_t *xbits, q3c_ipix_t *ybits, char face_num, q3c_ipix_t xi, q3c_ipix_t yi); void q3c_multi_face_check(q3c_coord_t *xmin0, q3c_coord_t *ymin0, q3c_coord_t *xmax0, q3c_coord_t *ymax0, q3c_coord_t *points, char *multi_flag); char q3c_too_big_check(q3c_region region, void * region_data) ; void q3c_get_version(char *, int); #endif/* Q3C_COMMON_H */ q3c-1.5.0/expected/000077500000000000000000000000001277206762700140245ustar00rootroot00000000000000q3c-1.5.0/expected/ang2ipix.expected000066400000000000000000000006411277206762700172710ustar00rootroot00000000000000 q3c_ang2ipix --------------------- 2017612633061982208 (1 row) q3c_ang2ipix -------------------- 480383960252852906 (1 row) q3c_ang2ipix -------------------- 480383960252852906 (1 row) q3c_ang2ipix --------------------- 1825388318008017157 (1 row) q3c_ang2ipix --------------------- 1825388318008017157 (1 row) q3c_ang2ipix -------------- (1 row) q3c-1.5.0/expected/area.expected000066400000000000000000000000421277206762700164530ustar00rootroot00000000000000 ?column? ---------- t (1 row) q3c-1.5.0/expected/cone.expected000066400000000000000000000563761277206762700165140ustar00rootroot00000000000000 count ------- 0 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 3 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 4 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 3 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 3 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 3 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 10 (1 row) count ------- 5 (1 row) count ------- 3 (1 row) count ------- 5 (1 row) count ------- 2 (1 row) count ------- 2 (1 row) count ------- 2 (1 row) count ------- 7 (1 row) count ------- 3 (1 row) count ------- 4 (1 row) count ------- 5 (1 row) count ------- 3 (1 row) count ------- 5 (1 row) count ------- 2 (1 row) count ------- 2 (1 row) count ------- 2 (1 row) count ------- 3 (1 row) count ------- 5 (1 row) count ------- 6 (1 row) count ------- 3 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 6 (1 row) count ------- 3 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 5 (1 row) count ------- 4 (1 row) count ------- 6 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 6 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 3 (1 row) count ------- 2 (1 row) count ------- 5 (1 row) count ------- 3 (1 row) count ------- 4 (1 row) count ------- 4 (1 row) count ------- 0 (1 row) count ------- 5 (1 row) count ------- 3 (1 row) count ------- 2 (1 row) count ------- 4 (1 row) count ------- 2 (1 row) count ------- 4 (1 row) count ------- 5 (1 row) count ------- 4 (1 row) count ------- 6 (1 row) count ------- 6 (1 row) count ------- 4 (1 row) count ------- 3 (1 row) count ------- 5 (1 row) count ------- 1 (1 row) count ------- 3 (1 row) count ------- 6 (1 row) count ------- 5 (1 row) count ------- 5 (1 row) count ------- 3 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 4 (1 row) count ------- 2 (1 row) count ------- 4 (1 row) count ------- 3 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 2 (1 row) count ------- 5 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 5 (1 row) count ------- 4 (1 row) count ------- 2 (1 row) count ------- 4 (1 row) count ------- 2 (1 row) count ------- 2 (1 row) count ------- 4 (1 row) count ------- 6 (1 row) count ------- 1 (1 row) count ------- 4 (1 row) count ------- 2 (1 row) count ------- 6 (1 row) count ------- 3 (1 row) count ------- 3 (1 row) count ------- 3 (1 row) count ------- 3 (1 row) count ------- 7 (1 row) count ------- 5 (1 row) count ------- 5 (1 row) count ------- 1 (1 row) count ------- 5 (1 row) count ------- 2 (1 row) count ------- 3 (1 row) count ------- 10 (1 row) count ------- 7 (1 row) count ------- 18 (1 row) count ------- 12 (1 row) count ------- 10 (1 row) count ------- 11 (1 row) count ------- 17 (1 row) count ------- 16 (1 row) count ------- 14 (1 row) count ------- 11 (1 row) count ------- 16 (1 row) count ------- 11 (1 row) count ------- 16 (1 row) count ------- 12 (1 row) count ------- 12 (1 row) count ------- 11 (1 row) count ------- 8 (1 row) count ------- 12 (1 row) count ------- 12 (1 row) count ------- 12 (1 row) count ------- 11 (1 row) count ------- 9 (1 row) count ------- 21 (1 row) count ------- 12 (1 row) count ------- 8 (1 row) count ------- 9 (1 row) count ------- 15 (1 row) count ------- 9 (1 row) count ------- 10 (1 row) count ------- 14 (1 row) count ------- 9 (1 row) count ------- 13 (1 row) count ------- 10 (1 row) count ------- 12 (1 row) count ------- 14 (1 row) count ------- 10 (1 row) count ------- 7 (1 row) count ------- 19 (1 row) count ------- 16 (1 row) count ------- 13 (1 row) count ------- 14 (1 row) count ------- 12 (1 row) count ------- 15 (1 row) count ------- 9 (1 row) count ------- 15 (1 row) count ------- 12 (1 row) count ------- 10 (1 row) count ------- 12 (1 row) count ------- 19 (1 row) count ------- 18 (1 row) count ------- 19 (1 row) count ------- 11 (1 row) count ------- 7 (1 row) count ------- 9 (1 row) count ------- 11 (1 row) count ------- 10 (1 row) count ------- 6 (1 row) count ------- 9 (1 row) count ------- 12 (1 row) count ------- 18 (1 row) count ------- 10 (1 row) count ------- 16 (1 row) count ------- 9 (1 row) count ------- 9 (1 row) count ------- 12 (1 row) count ------- 14 (1 row) count ------- 16 (1 row) count ------- 14 (1 row) count ------- 16 (1 row) count ------- 9 (1 row) count ------- 12 (1 row) count ------- 6 (1 row) count ------- 13 (1 row) count ------- 12 (1 row) count ------- 7 (1 row) count ------- 13 (1 row) count ------- 12 (1 row) count ------- 13 (1 row) count ------- 7 (1 row) count ------- 13 (1 row) count ------- 14 (1 row) count ------- 11 (1 row) count ------- 12 (1 row) count ------- 11 (1 row) count ------- 12 (1 row) count ------- 13 (1 row) count ------- 7 (1 row) count ------- 15 (1 row) count ------- 12 (1 row) count ------- 5 (1 row) count ------- 13 (1 row) count ------- 14 (1 row) count ------- 7 (1 row) count ------- 14 (1 row) count ------- 10 (1 row) count ------- 9 (1 row) count ------- 11 (1 row) count ------- 10 (1 row) count ------- 11 (1 row) count ------- 12 (1 row) count ------- 50 (1 row) count ------- 58 (1 row) count ------- 44 (1 row) count ------- 55 (1 row) count ------- 52 (1 row) count ------- 52 (1 row) count ------- 49 (1 row) count ------- 45 (1 row) count ------- 53 (1 row) count ------- 39 (1 row) count ------- 48 (1 row) count ------- 46 (1 row) count ------- 49 (1 row) count ------- 51 (1 row) count ------- 65 (1 row) count ------- 50 (1 row) count ------- 48 (1 row) count ------- 45 (1 row) count ------- 70 (1 row) count ------- 58 (1 row) count ------- 41 (1 row) count ------- 58 (1 row) count ------- 51 (1 row) count ------- 52 (1 row) count ------- 50 (1 row) count ------- 44 (1 row) count ------- 57 (1 row) count ------- 48 (1 row) count ------- 49 (1 row) count ------- 59 (1 row) count ------- 53 (1 row) count ------- 49 (1 row) count ------- 56 (1 row) count ------- 51 (1 row) count ------- 32 (1 row) count ------- 50 (1 row) count ------- 49 (1 row) count ------- 40 (1 row) count ------- 46 (1 row) count ------- 53 (1 row) count ------- 56 (1 row) count ------- 58 (1 row) count ------- 55 (1 row) count ------- 49 (1 row) count ------- 52 (1 row) count ------- 48 (1 row) count ------- 49 (1 row) count ------- 53 (1 row) count ------- 34 (1 row) count ------- 43 (1 row) count ------- 49 (1 row) count ------- 44 (1 row) count ------- 56 (1 row) count ------- 42 (1 row) count ------- 56 (1 row) count ------- 48 (1 row) count ------- 52 (1 row) count ------- 47 (1 row) count ------- 50 (1 row) count ------- 51 (1 row) count ------- 54 (1 row) count ------- 31 (1 row) count ------- 51 (1 row) count ------- 52 (1 row) count ------- 54 (1 row) count ------- 47 (1 row) count ------- 40 (1 row) count ------- 57 (1 row) count ------- 49 (1 row) count ------- 43 (1 row) count ------- 45 (1 row) count ------- 39 (1 row) count ------- 45 (1 row) count ------- 47 (1 row) count ------- 47 (1 row) count ------- 52 (1 row) count ------- 50 (1 row) count ------- 45 (1 row) count ------- 59 (1 row) count ------- 56 (1 row) count ------- 57 (1 row) count ------- 65 (1 row) count ------- 50 (1 row) count ------- 39 (1 row) count ------- 48 (1 row) count ------- 51 (1 row) count ------- 51 (1 row) count ------- 38 (1 row) count ------- 43 (1 row) count ------- 52 (1 row) count ------- 59 (1 row) count ------- 44 (1 row) count ------- 34 (1 row) count ------- 53 (1 row) count ------- 49 (1 row) count ------- 40 (1 row) count ------- 61 (1 row) count ------- 45 (1 row) count ------- 50 (1 row) count ------- 57 (1 row) count ------- 204 (1 row) count ------- 178 (1 row) count ------- 179 (1 row) count ------- 197 (1 row) count ------- 193 (1 row) count ------- 206 (1 row) count ------- 188 (1 row) count ------- 190 (1 row) count ------- 177 (1 row) count ------- 187 (1 row) count ------- 175 (1 row) count ------- 215 (1 row) count ------- 167 (1 row) count ------- 183 (1 row) count ------- 196 (1 row) count ------- 193 (1 row) count ------- 199 (1 row) count ------- 185 (1 row) count ------- 225 (1 row) count ------- 206 (1 row) count ------- 211 (1 row) count ------- 184 (1 row) count ------- 179 (1 row) count ------- 176 (1 row) count ------- 209 (1 row) count ------- 212 (1 row) count ------- 197 (1 row) count ------- 161 (1 row) count ------- 184 (1 row) count ------- 200 (1 row) count ------- 192 (1 row) count ------- 191 (1 row) count ------- 185 (1 row) count ------- 187 (1 row) count ------- 213 (1 row) count ------- 178 (1 row) count ------- 178 (1 row) count ------- 202 (1 row) count ------- 190 (1 row) count ------- 203 (1 row) count ------- 202 (1 row) count ------- 175 (1 row) count ------- 219 (1 row) count ------- 195 (1 row) count ------- 187 (1 row) count ------- 210 (1 row) count ------- 184 (1 row) count ------- 200 (1 row) count ------- 195 (1 row) count ------- 168 (1 row) count ------- 221 (1 row) count ------- 194 (1 row) count ------- 209 (1 row) count ------- 205 (1 row) count ------- 199 (1 row) count ------- 186 (1 row) count ------- 187 (1 row) count ------- 195 (1 row) count ------- 223 (1 row) count ------- 214 (1 row) count ------- 212 (1 row) count ------- 196 (1 row) count ------- 220 (1 row) count ------- 195 (1 row) count ------- 172 (1 row) count ------- 203 (1 row) count ------- 191 (1 row) count ------- 208 (1 row) count ------- 197 (1 row) count ------- 196 (1 row) count ------- 174 (1 row) count ------- 208 (1 row) count ------- 204 (1 row) count ------- 184 (1 row) count ------- 204 (1 row) count ------- 213 (1 row) count ------- 184 (1 row) count ------- 197 (1 row) count ------- 205 (1 row) count ------- 198 (1 row) count ------- 225 (1 row) count ------- 190 (1 row) count ------- 216 (1 row) count ------- 192 (1 row) count ------- 179 (1 row) count ------- 199 (1 row) count ------- 210 (1 row) count ------- 198 (1 row) count ------- 195 (1 row) count ------- 189 (1 row) count ------- 216 (1 row) count ------- 197 (1 row) count ------- 183 (1 row) count ------- 176 (1 row) count ------- 197 (1 row) count ------- 171 (1 row) count ------- 173 (1 row) count ------- 194 (1 row) count ------- 188 (1 row) count ------- 180 (1 row) count ------- 759 (1 row) count ------- 718 (1 row) count ------- 761 (1 row) count ------- 798 (1 row) count ------- 786 (1 row) count ------- 782 (1 row) count ------- 764 (1 row) count ------- 823 (1 row) count ------- 776 (1 row) count ------- 812 (1 row) count ------- 778 (1 row) count ------- 745 (1 row) count ------- 778 (1 row) count ------- 740 (1 row) count ------- 772 (1 row) count ------- 758 (1 row) count ------- 748 (1 row) count ------- 783 (1 row) count ------- 767 (1 row) count ------- 748 (1 row) count ------- 795 (1 row) count ------- 746 (1 row) count ------- 801 (1 row) count ------- 803 (1 row) count ------- 820 (1 row) count ------- 785 (1 row) count ------- 826 (1 row) count ------- 809 (1 row) count ------- 792 (1 row) count ------- 781 (1 row) count ------- 779 (1 row) count ------- 779 (1 row) count ------- 755 (1 row) count ------- 764 (1 row) count ------- 770 (1 row) count ------- 815 (1 row) count ------- 802 (1 row) count ------- 838 (1 row) count ------- 756 (1 row) count ------- 725 (1 row) count ------- 811 (1 row) count ------- 735 (1 row) count ------- 804 (1 row) count ------- 824 (1 row) count ------- 816 (1 row) count ------- 806 (1 row) count ------- 754 (1 row) count ------- 834 (1 row) count ------- 764 (1 row) count ------- 807 (1 row) count ------- 815 (1 row) count ------- 838 (1 row) count ------- 824 (1 row) count ------- 764 (1 row) count ------- 821 (1 row) count ------- 755 (1 row) count ------- 725 (1 row) count ------- 778 (1 row) count ------- 769 (1 row) count ------- 817 (1 row) count ------- 762 (1 row) count ------- 743 (1 row) count ------- 747 (1 row) count ------- 778 (1 row) count ------- 716 (1 row) count ------- 812 (1 row) count ------- 822 (1 row) count ------- 803 (1 row) count ------- 760 (1 row) count ------- 829 (1 row) count ------- 756 (1 row) count ------- 785 (1 row) count ------- 777 (1 row) count ------- 789 (1 row) count ------- 785 (1 row) count ------- 808 (1 row) count ------- 741 (1 row) count ------- 752 (1 row) count ------- 788 (1 row) count ------- 725 (1 row) count ------- 779 (1 row) count ------- 816 (1 row) count ------- 801 (1 row) count ------- 796 (1 row) count ------- 740 (1 row) count ------- 753 (1 row) count ------- 740 (1 row) count ------- 801 (1 row) count ------- 746 (1 row) count ------- 781 (1 row) count ------- 797 (1 row) count ------- 802 (1 row) count ------- 761 (1 row) count ------- 751 (1 row) count ------- 782 (1 row) count ------- 772 (1 row) count ------- 781 (1 row) count ------- 790 (1 row) count ------- 811 (1 row) count ------- 789 (1 row) count ------- 3072 (1 row) count ------- 3110 (1 row) count ------- 3036 (1 row) count ------- 3088 (1 row) count ------- 3250 (1 row) count ------- 3177 (1 row) count ------- 3097 (1 row) count ------- 3111 (1 row) count ------- 3160 (1 row) count ------- 3073 (1 row) count ------- 3124 (1 row) count ------- 3140 (1 row) count ------- 3055 (1 row) count ------- 3144 (1 row) count ------- 3075 (1 row) count ------- 3049 (1 row) count ------- 3021 (1 row) count ------- 3106 (1 row) count ------- 3161 (1 row) count ------- 2992 (1 row) count ------- 3171 (1 row) count ------- 3190 (1 row) count ------- 2983 (1 row) count ------- 3110 (1 row) count ------- 3197 (1 row) count ------- 3184 (1 row) count ------- 3197 (1 row) count ------- 3128 (1 row) count ------- 3146 (1 row) count ------- 3209 (1 row) count ------- 3121 (1 row) count ------- 3169 (1 row) count ------- 2988 (1 row) count ------- 3013 (1 row) count ------- 3164 (1 row) count ------- 3127 (1 row) count ------- 3148 (1 row) count ------- 3163 (1 row) count ------- 3203 (1 row) count ------- 3103 (1 row) count ------- 3140 (1 row) count ------- 3067 (1 row) count ------- 3137 (1 row) count ------- 3112 (1 row) count ------- 3163 (1 row) count ------- 2986 (1 row) count ------- 3112 (1 row) count ------- 3177 (1 row) count ------- 3019 (1 row) count ------- 3084 (1 row) count ------- 3045 (1 row) count ------- 3135 (1 row) count ------- 3193 (1 row) count ------- 3166 (1 row) count ------- 3074 (1 row) count ------- 3135 (1 row) count ------- 3086 (1 row) count ------- 3257 (1 row) count ------- 3113 (1 row) count ------- 3026 (1 row) count ------- 3146 (1 row) count ------- 3183 (1 row) count ------- 3099 (1 row) count ------- 3013 (1 row) count ------- 3250 (1 row) count ------- 3204 (1 row) count ------- 3178 (1 row) count ------- 3169 (1 row) count ------- 3151 (1 row) count ------- 3135 (1 row) count ------- 3095 (1 row) count ------- 3136 (1 row) count ------- 3130 (1 row) count ------- 3261 (1 row) count ------- 3124 (1 row) count ------- 3277 (1 row) count ------- 3114 (1 row) count ------- 3195 (1 row) count ------- 3059 (1 row) count ------- 3128 (1 row) count ------- 3104 (1 row) count ------- 3029 (1 row) count ------- 3261 (1 row) count ------- 3050 (1 row) count ------- 3129 (1 row) count ------- 3208 (1 row) count ------- 3106 (1 row) count ------- 3148 (1 row) count ------- 3232 (1 row) count ------- 3154 (1 row) count ------- 3097 (1 row) count ------- 3104 (1 row) count ------- 3205 (1 row) count ------- 3079 (1 row) count ------- 3080 (1 row) count ------- 3089 (1 row) count ------- 3053 (1 row) count ------- 3165 (1 row) count ------- 3200 (1 row) count ------- 3127 (1 row) count ------- 2715 (1 row) count ------- 2625 (1 row) count ------- 2699 (1 row) count ------- 2602 (1 row) count ------- 2810 (1 row) count ------- 2777 (1 row) count ------- 2798 (1 row) count ------- 2822 (1 row) count ------- 2650 (1 row) count ------- 2684 (1 row) count ------- 2565 (1 row) count ------- 2720 (1 row) count ------- 2659 (1 row) count ------- 2726 (1 row) count ------- 2633 (1 row) count ------- 2734 (1 row) count ------- 2810 (1 row) count ------- 2734 (1 row) count ------- 2767 (1 row) count ------- 2763 (1 row) count ------- 2646 (1 row) count ------- 2600 (1 row) count ------- 2625 (1 row) count ------- 2599 (1 row) count ------- 2745 (1 row) count ------- 2741 (1 row) count ------- 2732 (1 row) count ------- 2728 (1 row) count ------- 2715 (1 row) count ------- 2712 (1 row) count ------- 2730 (1 row) count ------- 2732 (1 row) count -------- 116628 (1 row) count -------- 116518 (1 row) count -------- 116370 (1 row) count -------- 116799 (1 row) count -------- 117118 (1 row) count -------- 116837 (1 row) count -------- 117260 (1 row) count -------- 116851 (1 row) count -------- 116762 (1 row) count -------- 116543 (1 row) count ------- 88 (1 row) q3c-1.5.0/expected/ellipse.expected000066400000000000000000000556401277206762700172160ustar00rootroot00000000000000 count ------- 0 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 3 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 4 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 3 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 3 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 3 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 1 (1 row) count ------- 10 (1 row) count ------- 5 (1 row) count ------- 3 (1 row) count ------- 5 (1 row) count ------- 2 (1 row) count ------- 2 (1 row) count ------- 2 (1 row) count ------- 7 (1 row) count ------- 3 (1 row) count ------- 4 (1 row) count ------- 5 (1 row) count ------- 3 (1 row) count ------- 5 (1 row) count ------- 2 (1 row) count ------- 2 (1 row) count ------- 2 (1 row) count ------- 3 (1 row) count ------- 5 (1 row) count ------- 6 (1 row) count ------- 3 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 6 (1 row) count ------- 3 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 5 (1 row) count ------- 4 (1 row) count ------- 6 (1 row) count ------- 2 (1 row) count ------- 0 (1 row) count ------- 6 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 3 (1 row) count ------- 2 (1 row) count ------- 5 (1 row) count ------- 3 (1 row) count ------- 4 (1 row) count ------- 4 (1 row) count ------- 0 (1 row) count ------- 5 (1 row) count ------- 3 (1 row) count ------- 2 (1 row) count ------- 4 (1 row) count ------- 2 (1 row) count ------- 4 (1 row) count ------- 5 (1 row) count ------- 4 (1 row) count ------- 6 (1 row) count ------- 6 (1 row) count ------- 4 (1 row) count ------- 3 (1 row) count ------- 5 (1 row) count ------- 1 (1 row) count ------- 3 (1 row) count ------- 6 (1 row) count ------- 5 (1 row) count ------- 5 (1 row) count ------- 3 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 4 (1 row) count ------- 2 (1 row) count ------- 4 (1 row) count ------- 3 (1 row) count ------- 1 (1 row) count ------- 0 (1 row) count ------- 2 (1 row) count ------- 5 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 1 (1 row) count ------- 2 (1 row) count ------- 5 (1 row) count ------- 4 (1 row) count ------- 2 (1 row) count ------- 4 (1 row) count ------- 2 (1 row) count ------- 2 (1 row) count ------- 4 (1 row) count ------- 6 (1 row) count ------- 1 (1 row) count ------- 4 (1 row) count ------- 2 (1 row) count ------- 6 (1 row) count ------- 3 (1 row) count ------- 3 (1 row) count ------- 3 (1 row) count ------- 3 (1 row) count ------- 7 (1 row) count ------- 5 (1 row) count ------- 5 (1 row) count ------- 1 (1 row) count ------- 5 (1 row) count ------- 2 (1 row) count ------- 3 (1 row) count ------- 10 (1 row) count ------- 7 (1 row) count ------- 18 (1 row) count ------- 12 (1 row) count ------- 10 (1 row) count ------- 11 (1 row) count ------- 17 (1 row) count ------- 16 (1 row) count ------- 14 (1 row) count ------- 11 (1 row) count ------- 16 (1 row) count ------- 11 (1 row) count ------- 16 (1 row) count ------- 12 (1 row) count ------- 12 (1 row) count ------- 11 (1 row) count ------- 8 (1 row) count ------- 12 (1 row) count ------- 12 (1 row) count ------- 12 (1 row) count ------- 11 (1 row) count ------- 9 (1 row) count ------- 21 (1 row) count ------- 12 (1 row) count ------- 8 (1 row) count ------- 9 (1 row) count ------- 15 (1 row) count ------- 9 (1 row) count ------- 10 (1 row) count ------- 14 (1 row) count ------- 9 (1 row) count ------- 13 (1 row) count ------- 10 (1 row) count ------- 12 (1 row) count ------- 14 (1 row) count ------- 10 (1 row) count ------- 7 (1 row) count ------- 19 (1 row) count ------- 16 (1 row) count ------- 13 (1 row) count ------- 14 (1 row) count ------- 12 (1 row) count ------- 15 (1 row) count ------- 9 (1 row) count ------- 15 (1 row) count ------- 12 (1 row) count ------- 10 (1 row) count ------- 12 (1 row) count ------- 19 (1 row) count ------- 18 (1 row) count ------- 19 (1 row) count ------- 11 (1 row) count ------- 7 (1 row) count ------- 9 (1 row) count ------- 11 (1 row) count ------- 10 (1 row) count ------- 6 (1 row) count ------- 9 (1 row) count ------- 12 (1 row) count ------- 18 (1 row) count ------- 10 (1 row) count ------- 16 (1 row) count ------- 9 (1 row) count ------- 9 (1 row) count ------- 12 (1 row) count ------- 14 (1 row) count ------- 16 (1 row) count ------- 14 (1 row) count ------- 16 (1 row) count ------- 9 (1 row) count ------- 12 (1 row) count ------- 6 (1 row) count ------- 13 (1 row) count ------- 12 (1 row) count ------- 7 (1 row) count ------- 13 (1 row) count ------- 12 (1 row) count ------- 13 (1 row) count ------- 7 (1 row) count ------- 13 (1 row) count ------- 14 (1 row) count ------- 11 (1 row) count ------- 12 (1 row) count ------- 11 (1 row) count ------- 12 (1 row) count ------- 13 (1 row) count ------- 7 (1 row) count ------- 15 (1 row) count ------- 12 (1 row) count ------- 5 (1 row) count ------- 13 (1 row) count ------- 14 (1 row) count ------- 7 (1 row) count ------- 14 (1 row) count ------- 10 (1 row) count ------- 9 (1 row) count ------- 11 (1 row) count ------- 10 (1 row) count ------- 11 (1 row) count ------- 12 (1 row) count ------- 50 (1 row) count ------- 58 (1 row) count ------- 44 (1 row) count ------- 55 (1 row) count ------- 52 (1 row) count ------- 52 (1 row) count ------- 49 (1 row) count ------- 45 (1 row) count ------- 53 (1 row) count ------- 39 (1 row) count ------- 48 (1 row) count ------- 46 (1 row) count ------- 49 (1 row) count ------- 51 (1 row) count ------- 65 (1 row) count ------- 50 (1 row) count ------- 48 (1 row) count ------- 45 (1 row) count ------- 70 (1 row) count ------- 58 (1 row) count ------- 41 (1 row) count ------- 58 (1 row) count ------- 51 (1 row) count ------- 52 (1 row) count ------- 50 (1 row) count ------- 44 (1 row) count ------- 57 (1 row) count ------- 48 (1 row) count ------- 49 (1 row) count ------- 59 (1 row) count ------- 53 (1 row) count ------- 49 (1 row) count ------- 56 (1 row) count ------- 51 (1 row) count ------- 32 (1 row) count ------- 50 (1 row) count ------- 49 (1 row) count ------- 40 (1 row) count ------- 46 (1 row) count ------- 53 (1 row) count ------- 56 (1 row) count ------- 58 (1 row) count ------- 55 (1 row) count ------- 49 (1 row) count ------- 52 (1 row) count ------- 48 (1 row) count ------- 49 (1 row) count ------- 53 (1 row) count ------- 34 (1 row) count ------- 43 (1 row) count ------- 49 (1 row) count ------- 44 (1 row) count ------- 56 (1 row) count ------- 42 (1 row) count ------- 56 (1 row) count ------- 48 (1 row) count ------- 52 (1 row) count ------- 47 (1 row) count ------- 50 (1 row) count ------- 51 (1 row) count ------- 54 (1 row) count ------- 31 (1 row) count ------- 51 (1 row) count ------- 52 (1 row) count ------- 54 (1 row) count ------- 47 (1 row) count ------- 40 (1 row) count ------- 57 (1 row) count ------- 49 (1 row) count ------- 43 (1 row) count ------- 45 (1 row) count ------- 39 (1 row) count ------- 45 (1 row) count ------- 47 (1 row) count ------- 47 (1 row) count ------- 52 (1 row) count ------- 50 (1 row) count ------- 45 (1 row) count ------- 59 (1 row) count ------- 56 (1 row) count ------- 57 (1 row) count ------- 65 (1 row) count ------- 50 (1 row) count ------- 39 (1 row) count ------- 48 (1 row) count ------- 51 (1 row) count ------- 51 (1 row) count ------- 38 (1 row) count ------- 43 (1 row) count ------- 52 (1 row) count ------- 59 (1 row) count ------- 44 (1 row) count ------- 34 (1 row) count ------- 53 (1 row) count ------- 49 (1 row) count ------- 40 (1 row) count ------- 61 (1 row) count ------- 45 (1 row) count ------- 50 (1 row) count ------- 57 (1 row) count ------- 204 (1 row) count ------- 178 (1 row) count ------- 179 (1 row) count ------- 197 (1 row) count ------- 193 (1 row) count ------- 206 (1 row) count ------- 188 (1 row) count ------- 190 (1 row) count ------- 177 (1 row) count ------- 187 (1 row) count ------- 175 (1 row) count ------- 215 (1 row) count ------- 167 (1 row) count ------- 183 (1 row) count ------- 196 (1 row) count ------- 193 (1 row) count ------- 199 (1 row) count ------- 185 (1 row) count ------- 225 (1 row) count ------- 206 (1 row) count ------- 211 (1 row) count ------- 184 (1 row) count ------- 179 (1 row) count ------- 176 (1 row) count ------- 209 (1 row) count ------- 212 (1 row) count ------- 197 (1 row) count ------- 161 (1 row) count ------- 184 (1 row) count ------- 200 (1 row) count ------- 192 (1 row) count ------- 191 (1 row) count ------- 185 (1 row) count ------- 187 (1 row) count ------- 213 (1 row) count ------- 178 (1 row) count ------- 178 (1 row) count ------- 202 (1 row) count ------- 190 (1 row) count ------- 203 (1 row) count ------- 202 (1 row) count ------- 175 (1 row) count ------- 219 (1 row) count ------- 195 (1 row) count ------- 187 (1 row) count ------- 210 (1 row) count ------- 184 (1 row) count ------- 200 (1 row) count ------- 195 (1 row) count ------- 168 (1 row) count ------- 221 (1 row) count ------- 194 (1 row) count ------- 209 (1 row) count ------- 205 (1 row) count ------- 199 (1 row) count ------- 186 (1 row) count ------- 187 (1 row) count ------- 195 (1 row) count ------- 223 (1 row) count ------- 214 (1 row) count ------- 212 (1 row) count ------- 196 (1 row) count ------- 220 (1 row) count ------- 195 (1 row) count ------- 172 (1 row) count ------- 203 (1 row) count ------- 191 (1 row) count ------- 208 (1 row) count ------- 197 (1 row) count ------- 196 (1 row) count ------- 174 (1 row) count ------- 208 (1 row) count ------- 204 (1 row) count ------- 184 (1 row) count ------- 204 (1 row) count ------- 213 (1 row) count ------- 184 (1 row) count ------- 197 (1 row) count ------- 205 (1 row) count ------- 198 (1 row) count ------- 225 (1 row) count ------- 190 (1 row) count ------- 216 (1 row) count ------- 192 (1 row) count ------- 179 (1 row) count ------- 199 (1 row) count ------- 210 (1 row) count ------- 198 (1 row) count ------- 195 (1 row) count ------- 189 (1 row) count ------- 216 (1 row) count ------- 197 (1 row) count ------- 183 (1 row) count ------- 176 (1 row) count ------- 197 (1 row) count ------- 171 (1 row) count ------- 173 (1 row) count ------- 194 (1 row) count ------- 188 (1 row) count ------- 180 (1 row) count ------- 759 (1 row) count ------- 718 (1 row) count ------- 761 (1 row) count ------- 798 (1 row) count ------- 786 (1 row) count ------- 782 (1 row) count ------- 764 (1 row) count ------- 823 (1 row) count ------- 776 (1 row) count ------- 812 (1 row) count ------- 778 (1 row) count ------- 745 (1 row) count ------- 778 (1 row) count ------- 740 (1 row) count ------- 772 (1 row) count ------- 758 (1 row) count ------- 748 (1 row) count ------- 783 (1 row) count ------- 767 (1 row) count ------- 748 (1 row) count ------- 795 (1 row) count ------- 746 (1 row) count ------- 801 (1 row) count ------- 803 (1 row) count ------- 820 (1 row) count ------- 785 (1 row) count ------- 826 (1 row) count ------- 809 (1 row) count ------- 792 (1 row) count ------- 781 (1 row) count ------- 779 (1 row) count ------- 779 (1 row) count ------- 755 (1 row) count ------- 764 (1 row) count ------- 770 (1 row) count ------- 815 (1 row) count ------- 802 (1 row) count ------- 838 (1 row) count ------- 756 (1 row) count ------- 725 (1 row) count ------- 811 (1 row) count ------- 735 (1 row) count ------- 804 (1 row) count ------- 824 (1 row) count ------- 816 (1 row) count ------- 807 (1 row) count ------- 754 (1 row) count ------- 834 (1 row) count ------- 764 (1 row) count ------- 807 (1 row) count ------- 815 (1 row) count ------- 838 (1 row) count ------- 824 (1 row) count ------- 764 (1 row) count ------- 821 (1 row) count ------- 755 (1 row) count ------- 725 (1 row) count ------- 778 (1 row) count ------- 769 (1 row) count ------- 817 (1 row) count ------- 762 (1 row) count ------- 743 (1 row) count ------- 747 (1 row) count ------- 778 (1 row) count ------- 716 (1 row) count ------- 812 (1 row) count ------- 822 (1 row) count ------- 803 (1 row) count ------- 760 (1 row) count ------- 829 (1 row) count ------- 756 (1 row) count ------- 785 (1 row) count ------- 777 (1 row) count ------- 789 (1 row) count ------- 785 (1 row) count ------- 808 (1 row) count ------- 741 (1 row) count ------- 752 (1 row) count ------- 788 (1 row) count ------- 725 (1 row) count ------- 779 (1 row) count ------- 816 (1 row) count ------- 801 (1 row) count ------- 796 (1 row) count ------- 740 (1 row) count ------- 753 (1 row) count ------- 740 (1 row) count ------- 801 (1 row) count ------- 746 (1 row) count ------- 781 (1 row) count ------- 797 (1 row) count ------- 802 (1 row) count ------- 761 (1 row) count ------- 751 (1 row) count ------- 782 (1 row) count ------- 772 (1 row) count ------- 781 (1 row) count ------- 790 (1 row) count ------- 811 (1 row) count ------- 789 (1 row) count ------- 3072 (1 row) count ------- 3110 (1 row) count ------- 3036 (1 row) count ------- 3088 (1 row) count ------- 3250 (1 row) count ------- 3177 (1 row) count ------- 3097 (1 row) count ------- 3111 (1 row) count ------- 3160 (1 row) count ------- 3073 (1 row) count ------- 3124 (1 row) count ------- 3140 (1 row) count ------- 3055 (1 row) count ------- 3144 (1 row) count ------- 3075 (1 row) count ------- 3049 (1 row) count ------- 3021 (1 row) count ------- 3106 (1 row) count ------- 3161 (1 row) count ------- 2992 (1 row) count ------- 3171 (1 row) count ------- 3190 (1 row) count ------- 2983 (1 row) count ------- 3110 (1 row) count ------- 3197 (1 row) count ------- 3184 (1 row) count ------- 3197 (1 row) count ------- 3128 (1 row) count ------- 3146 (1 row) count ------- 3209 (1 row) count ------- 3121 (1 row) count ------- 3169 (1 row) count ------- 2988 (1 row) count ------- 3013 (1 row) count ------- 3164 (1 row) count ------- 3127 (1 row) count ------- 3148 (1 row) count ------- 3163 (1 row) count ------- 3203 (1 row) count ------- 3103 (1 row) count ------- 3140 (1 row) count ------- 3067 (1 row) count ------- 3137 (1 row) count ------- 3112 (1 row) count ------- 3163 (1 row) count ------- 2986 (1 row) count ------- 3112 (1 row) count ------- 3177 (1 row) count ------- 3019 (1 row) count ------- 3084 (1 row) count ------- 3045 (1 row) count ------- 3135 (1 row) count ------- 3193 (1 row) count ------- 3166 (1 row) count ------- 3074 (1 row) count ------- 3135 (1 row) count ------- 3086 (1 row) count ------- 3257 (1 row) count ------- 3113 (1 row) count ------- 3026 (1 row) count ------- 3146 (1 row) count ------- 3183 (1 row) count ------- 3099 (1 row) count ------- 3013 (1 row) count ------- 3250 (1 row) count ------- 3204 (1 row) count ------- 3178 (1 row) count ------- 3169 (1 row) count ------- 3151 (1 row) count ------- 3135 (1 row) count ------- 3095 (1 row) count ------- 3136 (1 row) count ------- 3130 (1 row) count ------- 3261 (1 row) count ------- 3124 (1 row) count ------- 3277 (1 row) count ------- 3114 (1 row) count ------- 3195 (1 row) count ------- 3059 (1 row) count ------- 3128 (1 row) count ------- 3104 (1 row) count ------- 3029 (1 row) count ------- 3261 (1 row) count ------- 3050 (1 row) count ------- 3129 (1 row) count ------- 3208 (1 row) count ------- 3106 (1 row) count ------- 3148 (1 row) count ------- 3232 (1 row) count ------- 3154 (1 row) count ------- 3097 (1 row) count ------- 3104 (1 row) count ------- 3205 (1 row) count ------- 3079 (1 row) count ------- 3080 (1 row) count ------- 3089 (1 row) count ------- 3053 (1 row) count ------- 3165 (1 row) count ------- 3200 (1 row) count ------- 3127 (1 row) count ------- 2715 (1 row) count ------- 2625 (1 row) count ------- 2699 (1 row) count ------- 2602 (1 row) count ------- 2810 (1 row) count ------- 2777 (1 row) count ------- 2798 (1 row) count ------- 2822 (1 row) count ------- 2650 (1 row) count ------- 2684 (1 row) count ------- 2565 (1 row) count ------- 2720 (1 row) count ------- 2659 (1 row) count ------- 2726 (1 row) count ------- 2633 (1 row) count ------- 2734 (1 row) count ------- 2810 (1 row) count ------- 2734 (1 row) count ------- 2767 (1 row) count ------- 2763 (1 row) count ------- 2646 (1 row) count ------- 2600 (1 row) count ------- 2625 (1 row) count ------- 2599 (1 row) count ------- 2745 (1 row) count ------- 2741 (1 row) count ------- 2732 (1 row) count ------- 2728 (1 row) count ------- 2715 (1 row) count ------- 2712 (1 row) count ------- 2730 (1 row) count ------- 2732 (1 row) count ------- 88 (1 row) q3c-1.5.0/expected/join.expected000066400000000000000000000002431277206762700165050ustar00rootroot00000000000000 count ------- 1343 (1 row) count ------- 1462 (1 row) count ------- 7768 (1 row) count ------- 28035 (1 row) count -------- 137000 (1 row) q3c-1.5.0/expected/poly.expected000066400000000000000000011610001277206762700165310ustar00rootroot00000000000000 count ------- 86 (1 row) count ------- 32 (1 row) count ------- 122 (1 row) count ------- 99 (1 row) count ------- 113 (1 row) count ------- 180 (1 row) count ------- 81 (1 row) count ------- 122 (1 row) count ------- 64 (1 row) count ------- 229 (1 row) count ------- 185 (1 row) count ------- 76 (1 row) count ------- 127 (1 row) count ------- 167 (1 row) count ------- 115 (1 row) count ------- 136 (1 row) count ------- 136 (1 row) count ------- 91 (1 row) count ------- 29 (1 row) count ------- 41 (1 row) count ------- 297 (1 row) count ------- 91 (1 row) count ------- 125 (1 row) count ------- 66 (1 row) count ------- 43 (1 row) count ------- 113 (1 row) count ------- 192 (1 row) count ------- 34 (1 row) count ------- 183 (1 row) count ------- 193 (1 row) count ------- 11 (1 row) count ------- 264 (1 row) count ------- 131 (1 row) count ------- 210 (1 row) count ------- 134 (1 row) count ------- 84 (1 row) count ------- 8 (1 row) count ------- 12 (1 row) count ------- 139 (1 row) count ------- 95 (1 row) count ------- 49 (1 row) count ------- 107 (1 row) count ------- 69 (1 row) count ------- 142 (1 row) count ------- 117 (1 row) count ------- 158 (1 row) count ------- 267 (1 row) count ------- 60 (1 row) count ------- 173 (1 row) count ------- 180 (1 row) count ------- 53 (1 row) count ------- 143 (1 row) count ------- 163 (1 row) count ------- 182 (1 row) count ------- 7 (1 row) count ------- 152 (1 row) count ------- 94 (1 row) count ------- 24 (1 row) count ------- 24 (1 row) count ------- 186 (1 row) count ------- 100 (1 row) count ------- 112 (1 row) count ------- 199 (1 row) count ------- 92 (1 row) count ------- 34 (1 row) count ------- 101 (1 row) count ------- 66 (1 row) count ------- 67 (1 row) count ------- 193 (1 row) count ------- 119 (1 row) count ------- 204 (1 row) count ------- 133 (1 row) count ------- 70 (1 row) count ------- 120 (1 row) count ------- 66 (1 row) count ------- 138 (1 row) count ------- 111 (1 row) count ------- 102 (1 row) count ------- 188 (1 row) count ------- 158 (1 row) count ------- 90 (1 row) count ------- 20 (1 row) count ------- 229 (1 row) count ------- 130 (1 row) count ------- 237 (1 row) count ------- 14 (1 row) count ------- 44 (1 row) count ------- 152 (1 row) count ------- 188 (1 row) count ------- 81 (1 row) count ------- 64 (1 row) count ------- 142 (1 row) count ------- 169 (1 row) count ------- 209 (1 row) count ------- 117 (1 row) count ------- 139 (1 row) count ------- 183 (1 row) count ------- 123 (1 row) count ------- 109 (1 row) count ------- 236 (1 row) count ------- 256 (1 row) count ------- 41 (1 row) count ------- 183 (1 row) count ------- 124 (1 row) count ------- 237 (1 row) count ------- 107 (1 row) count ------- 99 (1 row) count ------- 182 (1 row) count ------- 140 (1 row) count ------- 243 (1 row) count ------- 64 (1 row) count ------- 158 (1 row) count ------- 201 (1 row) count ------- 83 (1 row) count ------- 59 (1 row) count ------- 41 (1 row) count ------- 103 (1 row) count ------- 193 (1 row) count ------- 118 (1 row) count ------- 11 (1 row) count ------- 36 (1 row) count ------- 30 (1 row) count ------- 164 (1 row) count ------- 81 (1 row) count ------- 307 (1 row) count ------- 92 (1 row) count ------- 47 (1 row) count ------- 249 (1 row) count ------- 87 (1 row) count ------- 208 (1 row) count ------- 182 (1 row) count ------- 147 (1 row) count ------- 127 (1 row) count ------- 134 (1 row) count ------- 179 (1 row) count ------- 190 (1 row) count ------- 111 (1 row) count ------- 25 (1 row) count ------- 93 (1 row) count ------- 76 (1 row) count ------- 129 (1 row) count ------- 169 (1 row) count ------- 157 (1 row) count ------- 93 (1 row) count ------- 79 (1 row) count ------- 161 (1 row) count ------- 233 (1 row) count ------- 30 (1 row) count ------- 46 (1 row) count ------- 118 (1 row) count ------- 104 (1 row) count ------- 132 (1 row) count ------- 198 (1 row) count ------- 132 (1 row) count ------- 150 (1 row) count ------- 169 (1 row) count ------- 120 (1 row) count ------- 175 (1 row) count ------- 105 (1 row) count ------- 25 (1 row) count ------- 67 (1 row) count ------- 86 (1 row) count ------- 104 (1 row) count ------- 208 (1 row) count ------- 242 (1 row) count ------- 199 (1 row) count ------- 113 (1 row) count ------- 227 (1 row) count ------- 193 (1 row) count ------- 86 (1 row) count ------- 175 (1 row) count ------- 172 (1 row) count ------- 35 (1 row) count ------- 310 (1 row) count ------- 66 (1 row) count ------- 5 (1 row) count ------- 51 (1 row) count ------- 158 (1 row) count ------- 122 (1 row) count ------- 81 (1 row) count ------- 103 (1 row) count ------- 83 (1 row) count ------- 133 (1 row) count ------- 112 (1 row) count ------- 131 (1 row) count ------- 63 (1 row) count ------- 104 (1 row) count ------- 185 (1 row) count ------- 200 (1 row) count ------- 30 (1 row) count ------- 168 (1 row) count ------- 148 (1 row) count ------- 282 (1 row) count ------- 192 (1 row) count ------- 153 (1 row) count ------- 110 (1 row) count ------- 231 (1 row) count ------- 113 (1 row) count ------- 45 (1 row) count ------- 102 (1 row) count ------- 95 (1 row) count ------- 139 (1 row) count ------- 89 (1 row) count ------- 31 (1 row) count ------- 84 (1 row) count ------- 147 (1 row) count ------- 112 (1 row) count ------- 170 (1 row) count ------- 59 (1 row) count ------- 114 (1 row) count ------- 43 (1 row) count ------- 71 (1 row) count ------- 39 (1 row) count ------- 147 (1 row) count ------- 93 (1 row) count ------- 96 (1 row) count ------- 7 (1 row) count ------- 159 (1 row) count ------- 232 (1 row) count ------- 211 (1 row) count ------- 289 (1 row) count ------- 157 (1 row) count ------- 180 (1 row) count ------- 120 (1 row) count ------- 141 (1 row) count ------- 65 (1 row) count ------- 27 (1 row) count ------- 192 (1 row) count ------- 113 (1 row) count ------- 186 (1 row) count ------- 12 (1 row) count ------- 19 (1 row) count ------- 19 (1 row) count ------- 116 (1 row) count ------- 37 (1 row) count ------- 38 (1 row) count ------- 12 (1 row) count ------- 75 (1 row) count ------- 62 (1 row) count ------- 98 (1 row) count ------- 209 (1 row) count ------- 103 (1 row) count ------- 146 (1 row) count ------- 116 (1 row) count ------- 154 (1 row) count ------- 37 (1 row) count ------- 111 (1 row) count ------- 174 (1 row) count ------- 126 (1 row) count ------- 283 (1 row) count ------- 80 (1 row) count ------- 126 (1 row) count ------- 55 (1 row) count ------- 67 (1 row) count ------- 57 (1 row) count ------- 154 (1 row) count ------- 159 (1 row) count ------- 161 (1 row) count ------- 95 (1 row) count ------- 85 (1 row) count ------- 23 (1 row) count ------- 50 (1 row) count ------- 86 (1 row) count ------- 96 (1 row) count ------- 85 (1 row) count ------- 118 (1 row) count ------- 162 (1 row) count ------- 41 (1 row) count ------- 63 (1 row) count ------- 58 (1 row) count ------- 233 (1 row) count ------- 246 (1 row) count ------- 142 (1 row) count ------- 310 (1 row) count ------- 325 (1 row) count ------- 106 (1 row) count ------- 45 (1 row) count ------- 181 (1 row) count ------- 253 (1 row) count ------- 135 (1 row) count ------- 74 (1 row) count ------- 159 (1 row) count ------- 200 (1 row) count ------- 182 (1 row) count ------- 86 (1 row) count ------- 90 (1 row) count ------- 119 (1 row) count ------- 268 (1 row) count ------- 77 (1 row) count ------- 255 (1 row) count ------- 45 (1 row) count ------- 209 (1 row) count ------- 58 (1 row) count ------- 33 (1 row) count ------- 84 (1 row) count ------- 122 (1 row) count ------- 163 (1 row) count ------- 40 (1 row) count ------- 175 (1 row) count ------- 227 (1 row) count ------- 60 (1 row) count ------- 115 (1 row) count ------- 112 (1 row) count ------- 83 (1 row) count ------- 165 (1 row) count ------- 154 (1 row) count ------- 264 (1 row) count ------- 51 (1 row) count ------- 7 (1 row) count ------- 53 (1 row) count ------- 236 (1 row) count ------- 127 (1 row) count ------- 63 (1 row) count ------- 128 (1 row) count ------- 252 (1 row) count ------- 85 (1 row) count ------- 110 (1 row) count ------- 125 (1 row) count ------- 229 (1 row) count ------- 103 (1 row) count ------- 305 (1 row) count ------- 217 (1 row) count ------- 50 (1 row) count ------- 60 (1 row) count ------- 214 (1 row) count ------- 91 (1 row) count ------- 61 (1 row) count ------- 129 (1 row) count ------- 287 (1 row) count ------- 123 (1 row) count ------- 153 (1 row) count ------- 236 (1 row) count ------- 158 (1 row) count ------- 205 (1 row) count ------- 93 (1 row) count ------- 195 (1 row) count ------- 35 (1 row) count ------- 110 (1 row) count ------- 194 (1 row) count ------- 189 (1 row) count ------- 238 (1 row) count ------- 215 (1 row) count ------- 206 (1 row) count ------- 77 (1 row) count ------- 48 (1 row) count ------- 236 (1 row) count ------- 266 (1 row) count ------- 88 (1 row) count ------- 174 (1 row) count ------- 349 (1 row) count ------- 40 (1 row) count ------- 111 (1 row) count ------- 65 (1 row) count ------- 277 (1 row) count ------- 11 (1 row) count ------- 83 (1 row) count ------- 125 (1 row) count ------- 102 (1 row) count ------- 38 (1 row) count ------- 45 (1 row) count ------- 170 (1 row) count ------- 64 (1 row) count ------- 63 (1 row) count ------- 40 (1 row) count ------- 169 (1 row) count ------- 51 (1 row) count ------- 171 (1 row) count ------- 114 (1 row) count ------- 237 (1 row) count ------- 186 (1 row) count ------- 39 (1 row) count ------- 68 (1 row) count ------- 5 (1 row) count ------- 24 (1 row) count ------- 156 (1 row) count ------- 96 (1 row) count ------- 94 (1 row) count ------- 57 (1 row) count ------- 12 (1 row) count ------- 185 (1 row) count ------- 118 (1 row) count ------- 97 (1 row) count ------- 151 (1 row) count ------- 10 (1 row) count ------- 61 (1 row) count ------- 85 (1 row) count ------- 70 (1 row) count ------- 201 (1 row) count ------- 75 (1 row) count ------- 168 (1 row) count ------- 276 (1 row) count ------- 70 (1 row) count ------- 78 (1 row) count ------- 78 (1 row) count ------- 57 (1 row) count ------- 224 (1 row) count ------- 143 (1 row) count ------- 68 (1 row) count ------- 113 (1 row) count ------- 96 (1 row) count ------- 136 (1 row) count ------- 32 (1 row) count ------- 132 (1 row) count ------- 163 (1 row) count ------- 46 (1 row) count ------- 124 (1 row) count ------- 10 (1 row) count ------- 42 (1 row) count ------- 108 (1 row) count ------- 30 (1 row) count ------- 83 (1 row) count ------- 227 (1 row) count ------- 203 (1 row) count ------- 322 (1 row) count ------- 330 (1 row) count ------- 117 (1 row) count ------- 13 (1 row) count ------- 105 (1 row) count ------- 3 (1 row) count ------- 23 (1 row) count ------- 22 (1 row) count ------- 168 (1 row) count ------- 58 (1 row) count ------- 197 (1 row) count ------- 127 (1 row) count ------- 251 (1 row) count ------- 123 (1 row) count ------- 211 (1 row) count ------- 57 (1 row) count ------- 136 (1 row) count ------- 107 (1 row) count ------- 186 (1 row) count ------- 314 (1 row) count ------- 61 (1 row) count ------- 159 (1 row) count ------- 133 (1 row) count ------- 61 (1 row) count ------- 75 (1 row) count ------- 148 (1 row) count ------- 16 (1 row) count ------- 0 (1 row) count ------- 35 (1 row) count ------- 258 (1 row) count ------- 2 (1 row) count ------- 57 (1 row) count ------- 81 (1 row) count ------- 86 (1 row) count ------- 69 (1 row) count ------- 112 (1 row) count ------- 92 (1 row) count ------- 181 (1 row) count ------- 17 (1 row) count ------- 66 (1 row) count ------- 206 (1 row) count ------- 208 (1 row) count ------- 39 (1 row) count ------- 130 (1 row) count ------- 137 (1 row) count ------- 49 (1 row) count ------- 25 (1 row) count ------- 173 (1 row) count ------- 59 (1 row) count ------- 68 (1 row) count ------- 76 (1 row) count ------- 108 (1 row) count ------- 201 (1 row) count ------- 274 (1 row) count ------- 89 (1 row) count ------- 51 (1 row) count ------- 95 (1 row) count ------- 3 (1 row) count ------- 145 (1 row) count ------- 104 (1 row) count ------- 52 (1 row) count ------- 111 (1 row) count ------- 84 (1 row) count ------- 20 (1 row) count ------- 8 (1 row) count ------- 56 (1 row) count ------- 203 (1 row) count ------- 148 (1 row) count ------- 141 (1 row) count ------- 84 (1 row) count ------- 123 (1 row) count ------- 42 (1 row) count ------- 193 (1 row) count ------- 145 (1 row) count ------- 74 (1 row) count ------- 154 (1 row) count ------- 55 (1 row) count ------- 194 (1 row) count ------- 190 (1 row) count ------- 82 (1 row) count ------- 53 (1 row) count ------- 61 (1 row) count ------- 151 (1 row) count ------- 223 (1 row) count ------- 141 (1 row) count ------- 24 (1 row) count ------- 97 (1 row) count ------- 252 (1 row) count ------- 162 (1 row) count ------- 1 (1 row) count ------- 34 (1 row) count ------- 79 (1 row) count ------- 92 (1 row) count ------- 189 (1 row) count ------- 56 (1 row) count ------- 263 (1 row) count ------- 65 (1 row) count ------- 133 (1 row) count ------- 70 (1 row) count ------- 164 (1 row) count ------- 75 (1 row) count ------- 208 (1 row) count ------- 152 (1 row) count ------- 0 (1 row) count ------- 106 (1 row) count ------- 166 (1 row) count ------- 89 (1 row) count ------- 204 (1 row) count ------- 151 (1 row) count ------- 55 (1 row) count ------- 178 (1 row) count ------- 50 (1 row) count ------- 264 (1 row) count ------- 23 (1 row) count ------- 63 (1 row) count ------- 166 (1 row) count ------- 333 (1 row) count ------- 95 (1 row) count ------- 129 (1 row) count ------- 283 (1 row) count ------- 155 (1 row) count ------- 33 (1 row) count ------- 100 (1 row) count ------- 137 (1 row) count ------- 61 (1 row) count ------- 56 (1 row) count ------- 114 (1 row) count ------- 107 (1 row) count ------- 65 (1 row) count ------- 152 (1 row) count ------- 279 (1 row) count ------- 54 (1 row) count ------- 254 (1 row) count ------- 101 (1 row) count ------- 154 (1 row) count ------- 60 (1 row) count ------- 190 (1 row) count ------- 151 (1 row) count ------- 210 (1 row) count ------- 117 (1 row) count ------- 100 (1 row) count ------- 132 (1 row) count ------- 27 (1 row) count ------- 95 (1 row) count ------- 89 (1 row) count ------- 191 (1 row) count ------- 133 (1 row) count ------- 35 (1 row) count ------- 135 (1 row) count ------- 162 (1 row) count ------- 175 (1 row) count ------- 103 (1 row) count ------- 129 (1 row) count ------- 95 (1 row) count ------- 104 (1 row) count ------- 157 (1 row) count ------- 172 (1 row) count ------- 344 (1 row) count ------- 17 (1 row) count ------- 80 (1 row) count ------- 193 (1 row) count ------- 239 (1 row) count ------- 234 (1 row) count ------- 138 (1 row) count ------- 21 (1 row) count ------- 20 (1 row) count ------- 78 (1 row) count ------- 168 (1 row) count ------- 211 (1 row) count ------- 89 (1 row) count ------- 43 (1 row) count ------- 57 (1 row) count ------- 189 (1 row) count ------- 92 (1 row) count ------- 50 (1 row) count ------- 130 (1 row) count ------- 188 (1 row) count ------- 140 (1 row) count ------- 153 (1 row) count ------- 85 (1 row) count ------- 201 (1 row) count ------- 3 (1 row) count ------- 79 (1 row) count ------- 36 (1 row) count ------- 83 (1 row) count ------- 25 (1 row) count ------- 236 (1 row) count ------- 139 (1 row) count ------- 245 (1 row) count ------- 4 (1 row) count ------- 109 (1 row) count ------- 126 (1 row) count ------- 109 (1 row) count ------- 31 (1 row) count ------- 102 (1 row) count ------- 157 (1 row) count ------- 42 (1 row) count ------- 59 (1 row) count ------- 156 (1 row) count ------- 130 (1 row) count ------- 38 (1 row) count ------- 139 (1 row) count ------- 185 (1 row) count ------- 114 (1 row) count ------- 281 (1 row) count ------- 87 (1 row) count ------- 41 (1 row) count ------- 153 (1 row) count ------- 48 (1 row) count ------- 23 (1 row) count ------- 178 (1 row) count ------- 70 (1 row) count ------- 180 (1 row) count ------- 130 (1 row) count ------- 171 (1 row) count ------- 30 (1 row) count ------- 71 (1 row) count ------- 120 (1 row) count ------- 19 (1 row) count ------- 145 (1 row) count ------- 105 (1 row) count ------- 131 (1 row) count ------- 241 (1 row) count ------- 99 (1 row) count ------- 209 (1 row) count ------- 147 (1 row) count ------- 178 (1 row) count ------- 235 (1 row) count ------- 114 (1 row) count ------- 42 (1 row) count ------- 92 (1 row) count ------- 53 (1 row) count ------- 166 (1 row) count ------- 180 (1 row) count ------- 31 (1 row) count ------- 155 (1 row) count ------- 89 (1 row) count ------- 56 (1 row) count ------- 99 (1 row) count ------- 38 (1 row) count ------- 56 (1 row) count ------- 213 (1 row) count ------- 94 (1 row) count ------- 217 (1 row) count ------- 186 (1 row) count ------- 9 (1 row) count ------- 74 (1 row) count ------- 139 (1 row) count ------- 84 (1 row) count ------- 152 (1 row) count ------- 31 (1 row) count ------- 82 (1 row) count ------- 159 (1 row) count ------- 34 (1 row) count ------- 136 (1 row) count ------- 223 (1 row) count ------- 39 (1 row) count ------- 68 (1 row) count ------- 179 (1 row) count ------- 304 (1 row) count ------- 193 (1 row) count ------- 236 (1 row) count ------- 66 (1 row) count ------- 214 (1 row) count ------- 77 (1 row) count ------- 46 (1 row) count ------- 101 (1 row) count ------- 97 (1 row) count ------- 40 (1 row) count ------- 121 (1 row) count ------- 75 (1 row) count ------- 101 (1 row) count ------- 199 (1 row) count ------- 122 (1 row) count ------- 164 (1 row) count ------- 173 (1 row) count ------- 141 (1 row) count ------- 129 (1 row) count ------- 195 (1 row) count ------- 113 (1 row) count ------- 71 (1 row) count ------- 69 (1 row) count ------- 291 (1 row) count ------- 141 (1 row) count ------- 179 (1 row) count ------- 310 (1 row) count ------- 113 (1 row) count ------- 84 (1 row) count ------- 28 (1 row) count ------- 151 (1 row) count ------- 122 (1 row) count ------- 257 (1 row) count ------- 141 (1 row) count ------- 51 (1 row) count ------- 79 (1 row) count ------- 220 (1 row) count ------- 168 (1 row) count ------- 41 (1 row) count ------- 108 (1 row) count ------- 229 (1 row) count ------- 165 (1 row) count ------- 83 (1 row) count ------- 231 (1 row) count ------- 108 (1 row) count ------- 381 (1 row) count ------- 78 (1 row) count ------- 70 (1 row) count ------- 33 (1 row) count ------- 111 (1 row) count ------- 37 (1 row) count ------- 78 (1 row) count ------- 47 (1 row) count ------- 49 (1 row) count ------- 139 (1 row) count ------- 104 (1 row) count ------- 93 (1 row) count ------- 170 (1 row) count ------- 37 (1 row) count ------- 114 (1 row) count ------- 131 (1 row) count ------- 100 (1 row) count ------- 47 (1 row) count ------- 99 (1 row) count ------- 74 (1 row) count ------- 57 (1 row) count ------- 140 (1 row) count ------- 98 (1 row) count ------- 17 (1 row) count ------- 178 (1 row) count ------- 220 (1 row) count ------- 95 (1 row) count ------- 104 (1 row) count ------- 127 (1 row) count ------- 64 (1 row) count ------- 49 (1 row) count ------- 117 (1 row) count ------- 176 (1 row) count ------- 182 (1 row) count ------- 148 (1 row) count ------- 262 (1 row) count ------- 116 (1 row) count ------- 230 (1 row) count ------- 169 (1 row) count ------- 44 (1 row) count ------- 147 (1 row) count ------- 224 (1 row) count ------- 116 (1 row) count ------- 68 (1 row) count ------- 98 (1 row) count ------- 166 (1 row) count ------- 93 (1 row) count ------- 118 (1 row) count ------- 176 (1 row) count ------- 133 (1 row) count ------- 162 (1 row) count ------- 215 (1 row) count ------- 148 (1 row) count ------- 124 (1 row) count ------- 256 (1 row) count ------- 73 (1 row) count ------- 91 (1 row) count ------- 35 (1 row) count ------- 32 (1 row) count ------- 27 (1 row) count ------- 150 (1 row) count ------- 227 (1 row) count ------- 172 (1 row) count ------- 135 (1 row) count ------- 27 (1 row) count ------- 125 (1 row) count ------- 239 (1 row) count ------- 132 (1 row) count ------- 38 (1 row) count ------- 83 (1 row) count ------- 8 (1 row) count ------- 342 (1 row) count ------- 80 (1 row) count ------- 78 (1 row) count ------- 228 (1 row) count ------- 221 (1 row) count ------- 224 (1 row) count ------- 85 (1 row) count ------- 76 (1 row) count ------- 104 (1 row) count ------- 149 (1 row) count ------- 216 (1 row) count ------- 168 (1 row) count ------- 131 (1 row) count ------- 143 (1 row) count ------- 148 (1 row) count ------- 166 (1 row) count ------- 75 (1 row) count ------- 42 (1 row) count ------- 58 (1 row) count ------- 49 (1 row) count ------- 159 (1 row) count ------- 251 (1 row) count ------- 254 (1 row) count ------- 240 (1 row) count ------- 227 (1 row) count ------- 133 (1 row) count ------- 139 (1 row) count ------- 184 (1 row) count ------- 56 (1 row) count ------- 39 (1 row) count ------- 33 (1 row) count ------- 77 (1 row) count ------- 200 (1 row) count ------- 247 (1 row) count ------- 167 (1 row) count ------- 131 (1 row) count ------- 110 (1 row) count ------- 75 (1 row) count ------- 102 (1 row) count ------- 158 (1 row) count ------- 55 (1 row) count ------- 20 (1 row) count ------- 74 (1 row) count ------- 152 (1 row) count ------- 61 (1 row) count ------- 72 (1 row) count ------- 23 (1 row) count ------- 278 (1 row) count ------- 37 (1 row) count ------- 37 (1 row) count ------- 203 (1 row) count ------- 150 (1 row) count ------- 27 (1 row) count ------- 145 (1 row) count ------- 282 (1 row) count ------- 196 (1 row) count ------- 71 (1 row) count ------- 119 (1 row) count ------- 262 (1 row) count ------- 112 (1 row) count ------- 323 (1 row) count ------- 112 (1 row) count ------- 231 (1 row) count ------- 56 (1 row) count ------- 186 (1 row) count ------- 144 (1 row) count ------- 192 (1 row) count ------- 54 (1 row) count ------- 22 (1 row) count ------- 28 (1 row) count ------- 8 (1 row) count ------- 6 (1 row) count ------- 98 (1 row) count ------- 97 (1 row) count ------- 85 (1 row) count ------- 63 (1 row) count ------- 127 (1 row) count ------- 195 (1 row) count ------- 62 (1 row) count ------- 92 (1 row) count ------- 75 (1 row) count ------- 12 (1 row) count ------- 165 (1 row) count ------- 20 (1 row) count ------- 72 (1 row) count ------- 173 (1 row) count ------- 128 (1 row) count ------- 31 (1 row) count ------- 75 (1 row) count ------- 150 (1 row) count ------- 147 (1 row) count ------- 267 (1 row) count ------- 230 (1 row) count ------- 33 (1 row) count ------- 142 (1 row) count ------- 311 (1 row) count ------- 7 (1 row) count ------- 71 (1 row) count ------- 267 (1 row) count ------- 74 (1 row) count ------- 120 (1 row) count ------- 239 (1 row) count ------- 151 (1 row) count ------- 201 (1 row) count ------- 154 (1 row) count ------- 122 (1 row) count ------- 61 (1 row) count ------- 237 (1 row) count ------- 115 (1 row) count ------- 101 (1 row) count ------- 94 (1 row) count ------- 259 (1 row) count ------- 152 (1 row) count ------- 145 (1 row) count ------- 84 (1 row) count ------- 178 (1 row) count ------- 125 (1 row) count ------- 132 (1 row) count ------- 30 (1 row) count ------- 126 (1 row) count ------- 167 (1 row) count ------- 185 (1 row) count ------- 190 (1 row) count ------- 150 (1 row) count ------- 107 (1 row) count ------- 39 (1 row) count ------- 53 (1 row) count ------- 35 (1 row) count ------- 8 (1 row) count ------- 298 (1 row) count ------- 10 (1 row) count ------- 163 (1 row) count ------- 77 (1 row) count ------- 137 (1 row) count ------- 215 (1 row) count ------- 98 (1 row) count ------- 168 (1 row) count ------- 150 (1 row) count ------- 122 (1 row) count ------- 47 (1 row) count ------- 65 (1 row) count ------- 61 (1 row) count ------- 159 (1 row) count ------- 140 (1 row) count ------- 134 (1 row) count ------- 101 (1 row) count ------- 113 (1 row) count ------- 182 (1 row) count ------- 82 (1 row) count ------- 253 (1 row) count ------- 35 (1 row) count ------- 63 (1 row) count ------- 10 (1 row) count ------- 116 (1 row) count ------- 107 (1 row) count ------- 75 (1 row) count ------- 190 (1 row) count ------- 100 (1 row) count ------- 94 (1 row) count ------- 13 (1 row) count ------- 109 (1 row) count ------- 150 (1 row) count ------- 207 (1 row) count ------- 24 (1 row) count ------- 220 (1 row) count ------- 160 (1 row) count ------- 115 (1 row) count ------- 261 (1 row) count ------- 172 (1 row) count ------- 222 (1 row) count ------- 109 (1 row) count ------- 108 (1 row) count ------- 57 (1 row) count ------- 81 (1 row) count ------- 82 (1 row) count ------- 31 (1 row) count ------- 70 (1 row) count ------- 56 (1 row) count ------- 82 (1 row) count ------- 66 (1 row) count ------- 46 (1 row) count ------- 32 (1 row) count ------- 192 (1 row) count ------- 73 (1 row) count ------- 250 (1 row) count ------- 196 (1 row) count ------- 133 (1 row) count ------- 314 (1 row) count ------- 37 (1 row) count ------- 96 (1 row) count ------- 189 (1 row) count ------- 174 (1 row) count ------- 151 (1 row) count ------- 242 (1 row) count ------- 122 (1 row) count ------- 102 (1 row) count ------- 81 (1 row) count ------- 155 (1 row) count ------- 102 (1 row) count ------- 152 (1 row) count ------- 101 (1 row) count ------- 53 (1 row) count ------- 82 (1 row) count ------- 80 (1 row) count ------- 199 (1 row) count ------- 50 (1 row) count ------- 19 (1 row) count ------- 194 (1 row) count ------- 131 (1 row) count ------- 10 (1 row) count ------- 203 (1 row) count ------- 159 (1 row) count ------- 110 (1 row) count ------- 95 (1 row) count ------- 371 (1 row) count ------- 30 (1 row) count ------- 60 (1 row) count ------- 153 (1 row) count ------- 40 (1 row) count ------- 6 (1 row) count ------- 126 (1 row) count ------- 115 (1 row) count ------- 76 (1 row) count ------- 99 (1 row) count ------- 288 (1 row) count ------- 83 (1 row) count ------- 120 (1 row) count ------- 23 (1 row) count ------- 84 (1 row) count ------- 137 (1 row) count ------- 138 (1 row) count ------- 79 (1 row) count ------- 84 (1 row) count ------- 270 (1 row) count ------- 182 (1 row) count ------- 56 (1 row) count ------- 35 (1 row) count ------- 109 (1 row) count ------- 69 (1 row) count ------- 105 (1 row) count ------- 121 (1 row) count ------- 89 (1 row) count ------- 7 (1 row) count ------- 95 (1 row) count ------- 12 (1 row) count ------- 87 (1 row) count ------- 82 (1 row) count ------- 130 (1 row) count ------- 202 (1 row) count ------- 75 (1 row) count ------- 129 (1 row) count ------- 169 (1 row) count ------- 117 (1 row) count ------- 79 (1 row) count ------- 57 (1 row) count ------- 181 (1 row) count ------- 54 (1 row) count ------- 313 (1 row) count ------- 236 (1 row) count ------- 42 (1 row) count ------- 189 (1 row) count ------- 292 (1 row) count ------- 162 (1 row) count ------- 55 (1 row) count ------- 142 (1 row) count ------- 17 (1 row) count ------- 246 (1 row) count ------- 236 (1 row) count ------- 65 (1 row) count ------- 245 (1 row) count ------- 102 (1 row) count ------- 180 (1 row) count ------- 156 (1 row) count ------- 133 (1 row) count ------- 81 (1 row) count ------- 223 (1 row) count ------- 142 (1 row) count ------- 93 (1 row) count ------- 179 (1 row) count ------- 124 (1 row) count ------- 108 (1 row) count ------- 88 (1 row) count ------- 112 (1 row) count ------- 231 (1 row) count ------- 178 (1 row) count ------- 13 (1 row) count ------- 153 (1 row) count ------- 96 (1 row) count ------- 282 (1 row) count ------- 165 (1 row) count ------- 114 (1 row) count ------- 22 (1 row) count ------- 134 (1 row) count ------- 21 (1 row) count ------- 157 (1 row) count ------- 2 (1 row) count ------- 74 (1 row) count ------- 5 (1 row) count ------- 162 (1 row) count ------- 144 (1 row) count ------- 382 (1 row) count ------- 112 (1 row) count ------- 217 (1 row) count ------- 3 (1 row) count ------- 147 (1 row) count ------- 70 (1 row) count ------- 165 (1 row) count ------- 133 (1 row) count ------- 244 (1 row) count ------- 59 (1 row) count ------- 140 (1 row) count ------- 165 (1 row) count ------- 144 (1 row) count ------- 98 (1 row) count ------- 117 (1 row) count ------- 112 (1 row) count ------- 264 (1 row) count ------- 85 (1 row) count ------- 135 (1 row) count ------- 147 (1 row) count ------- 140 (1 row) count ------- 79 (1 row) count ------- 92 (1 row) count ------- 35 (1 row) count ------- 127 (1 row) count ------- 32 (1 row) count ------- 171 (1 row) count ------- 176 (1 row) count ------- 141 (1 row) count ------- 140 (1 row) count ------- 163 (1 row) count ------- 133 (1 row) count ------- 37 (1 row) count ------- 6 (1 row) count ------- 173 (1 row) count ------- 271 (1 row) count ------- 330 (1 row) count ------- 77 (1 row) count ------- 168 (1 row) count ------- 150 (1 row) count ------- 167 (1 row) count ------- 1 (1 row) count ------- 142 (1 row) count ------- 153 (1 row) count ------- 175 (1 row) count ------- 35 (1 row) count ------- 69 (1 row) count ------- 132 (1 row) count ------- 74 (1 row) count ------- 63 (1 row) count ------- 154 (1 row) count ------- 210 (1 row) count ------- 102 (1 row) count ------- 313 (1 row) count ------- 21 (1 row) count ------- 30 (1 row) count ------- 221 (1 row) count ------- 107 (1 row) count ------- 117 (1 row) count ------- 117 (1 row) count ------- 151 (1 row) count ------- 91 (1 row) count ------- 250 (1 row) count ------- 156 (1 row) count ------- 78 (1 row) count ------- 76 (1 row) count ------- 262 (1 row) count ------- 106 (1 row) count ------- 80 (1 row) count ------- 172 (1 row) count ------- 130 (1 row) count ------- 46 (1 row) count ------- 154 (1 row) count ------- 196 (1 row) count ------- 63 (1 row) count ------- 257 (1 row) count ------- 194 (1 row) count ------- 194 (1 row) count ------- 106 (1 row) count ------- 31 (1 row) count ------- 76 (1 row) count ------- 45 (1 row) count ------- 255 (1 row) count ------- 182 (1 row) count ------- 13 (1 row) count ------- 253 (1 row) count ------- 97 (1 row) count ------- 12 (1 row) count ------- 12 (1 row) count ------- 181 (1 row) count ------- 137 (1 row) count ------- 147 (1 row) count ------- 63 (1 row) count ------- 172 (1 row) count ------- 42 (1 row) count ------- 48 (1 row) count ------- 143 (1 row) count ------- 50 (1 row) count ------- 80 (1 row) count ------- 143 (1 row) count ------- 164 (1 row) count ------- 59 (1 row) count ------- 168 (1 row) count ------- 232 (1 row) count ------- 88 (1 row) count ------- 124 (1 row) count ------- 174 (1 row) count ------- 107 (1 row) count ------- 119 (1 row) count ------- 55 (1 row) count ------- 26 (1 row) count ------- 135 (1 row) count ------- 86 (1 row) count ------- 198 (1 row) count ------- 126 (1 row) count ------- 22 (1 row) count ------- 22 (1 row) count ------- 31 (1 row) count ------- 43 (1 row) count ------- 267 (1 row) count ------- 55 (1 row) count ------- 109 (1 row) count ------- 119 (1 row) count ------- 70 (1 row) count ------- 57 (1 row) count ------- 130 (1 row) count ------- 88 (1 row) count ------- 213 (1 row) count ------- 172 (1 row) count ------- 196 (1 row) count ------- 116 (1 row) count ------- 192 (1 row) count ------- 117 (1 row) count ------- 121 (1 row) count ------- 64 (1 row) count ------- 157 (1 row) count ------- 8 (1 row) count ------- 9 (1 row) count ------- 133 (1 row) count ------- 113 (1 row) count ------- 135 (1 row) count ------- 53 (1 row) count ------- 221 (1 row) count ------- 166 (1 row) count ------- 34 (1 row) count ------- 81 (1 row) count ------- 142 (1 row) count ------- 117 (1 row) count ------- 182 (1 row) count ------- 205 (1 row) count ------- 127 (1 row) count ------- 285 (1 row) count ------- 238 (1 row) count ------- 274 (1 row) count ------- 155 (1 row) count ------- 84 (1 row) count ------- 204 (1 row) count ------- 240 (1 row) count ------- 22 (1 row) count ------- 60 (1 row) count ------- 121 (1 row) count ------- 134 (1 row) count ------- 121 (1 row) count ------- 131 (1 row) count ------- 32 (1 row) count ------- 97 (1 row) count ------- 174 (1 row) count ------- 27 (1 row) count ------- 124 (1 row) count ------- 27 (1 row) count ------- 49 (1 row) count ------- 98 (1 row) count ------- 101 (1 row) count ------- 3 (1 row) count ------- 159 (1 row) count ------- 87 (1 row) count ------- 151 (1 row) count ------- 15 (1 row) count ------- 187 (1 row) count ------- 117 (1 row) count ------- 147 (1 row) count ------- 59 (1 row) count ------- 292 (1 row) count ------- 202 (1 row) count ------- 60 (1 row) count ------- 146 (1 row) count ------- 75 (1 row) count ------- 184 (1 row) count ------- 209 (1 row) count ------- 169 (1 row) count ------- 70 (1 row) count ------- 131 (1 row) count ------- 72 (1 row) count ------- 133 (1 row) count ------- 97 (1 row) count ------- 107 (1 row) count ------- 199 (1 row) count ------- 334 (1 row) count ------- 64 (1 row) count ------- 34 (1 row) count ------- 156 (1 row) count ------- 22 (1 row) count ------- 215 (1 row) count ------- 7 (1 row) count ------- 103 (1 row) count ------- 162 (1 row) count ------- 102 (1 row) count ------- 182 (1 row) count ------- 71 (1 row) count ------- 105 (1 row) count ------- 133 (1 row) count ------- 141 (1 row) count ------- 311 (1 row) count ------- 83 (1 row) count ------- 84 (1 row) count ------- 170 (1 row) count ------- 21 (1 row) count ------- 71 (1 row) count ------- 72 (1 row) count ------- 50 (1 row) count ------- 84 (1 row) count ------- 107 (1 row) count ------- 159 (1 row) count ------- 162 (1 row) count ------- 105 (1 row) count ------- 277 (1 row) count ------- 160 (1 row) count ------- 46 (1 row) count ------- 20 (1 row) count ------- 176 (1 row) count ------- 31 (1 row) count ------- 58 (1 row) count ------- 181 (1 row) count ------- 150 (1 row) count ------- 64 (1 row) count ------- 134 (1 row) count ------- 106 (1 row) count ------- 186 (1 row) count ------- 47 (1 row) count ------- 108 (1 row) count ------- 100 (1 row) count ------- 98 (1 row) count ------- 78 (1 row) count ------- 145 (1 row) count ------- 162 (1 row) count ------- 265 (1 row) count ------- 12 (1 row) count ------- 54 (1 row) count ------- 280 (1 row) count ------- 147 (1 row) count ------- 160 (1 row) count ------- 98 (1 row) count ------- 63 (1 row) count ------- 119 (1 row) count ------- 151 (1 row) count ------- 50 (1 row) count ------- 150 (1 row) count ------- 115 (1 row) count ------- 105 (1 row) count ------- 99 (1 row) count ------- 42 (1 row) count ------- 108 (1 row) count ------- 185 (1 row) count ------- 106 (1 row) count ------- 157 (1 row) count ------- 24 (1 row) count ------- 176 (1 row) count ------- 196 (1 row) count ------- 9 (1 row) count ------- 212 (1 row) count ------- 209 (1 row) count ------- 86 (1 row) count ------- 236 (1 row) count ------- 67 (1 row) count ------- 51 (1 row) count ------- 29 (1 row) count ------- 123 (1 row) count ------- 102 (1 row) count ------- 164 (1 row) count ------- 142 (1 row) count ------- 138 (1 row) count ------- 136 (1 row) count ------- 283 (1 row) count ------- 119 (1 row) count ------- 174 (1 row) count ------- 140 (1 row) count ------- 126 (1 row) count ------- 54 (1 row) count ------- 160 (1 row) count ------- 100 (1 row) count ------- 79 (1 row) count ------- 51 (1 row) count ------- 26 (1 row) count ------- 196 (1 row) count ------- 118 (1 row) count ------- 45 (1 row) count ------- 78 (1 row) count ------- 53 (1 row) count ------- 99 (1 row) count ------- 53 (1 row) count ------- 63 (1 row) count ------- 79 (1 row) count ------- 125 (1 row) count ------- 194 (1 row) count ------- 243 (1 row) count ------- 79 (1 row) count ------- 192 (1 row) count ------- 120 (1 row) count ------- 288 (1 row) count ------- 134 (1 row) count ------- 261 (1 row) count ------- 105 (1 row) count ------- 230 (1 row) count ------- 182 (1 row) count ------- 70 (1 row) count ------- 145 (1 row) count ------- 14 (1 row) count ------- 164 (1 row) count ------- 49 (1 row) count ------- 24 (1 row) count ------- 129 (1 row) count ------- 117 (1 row) count ------- 280 (1 row) count ------- 190 (1 row) count ------- 108 (1 row) count ------- 112 (1 row) count ------- 45 (1 row) count ------- 10 (1 row) count ------- 2 (1 row) count ------- 83 (1 row) count ------- 125 (1 row) count ------- 107 (1 row) count ------- 168 (1 row) count ------- 64 (1 row) count ------- 67 (1 row) count ------- 50 (1 row) count ------- 315 (1 row) count ------- 124 (1 row) count ------- 203 (1 row) count ------- 94 (1 row) count ------- 139 (1 row) count ------- 229 (1 row) count ------- 128 (1 row) count ------- 85 (1 row) count ------- 71 (1 row) count ------- 125 (1 row) count ------- 219 (1 row) count ------- 39 (1 row) count ------- 266 (1 row) count ------- 71 (1 row) count ------- 183 (1 row) count ------- 81 (1 row) count ------- 48 (1 row) count ------- 134 (1 row) count ------- 200 (1 row) count ------- 142 (1 row) count ------- 147 (1 row) count ------- 132 (1 row) count ------- 28 (1 row) count ------- 178 (1 row) count ------- 122 (1 row) count ------- 140 (1 row) count ------- 192 (1 row) count ------- 70 (1 row) count ------- 82 (1 row) count ------- 8 (1 row) count ------- 12 (1 row) count ------- 138 (1 row) count ------- 85 (1 row) count ------- 66 (1 row) count ------- 53 (1 row) count ------- 46 (1 row) count ------- 223 (1 row) count ------- 8 (1 row) count ------- 202 (1 row) count ------- 76 (1 row) count ------- 54 (1 row) count ------- 183 (1 row) count ------- 129 (1 row) count ------- 122 (1 row) count ------- 86 (1 row) count ------- 50 (1 row) count ------- 31 (1 row) count ------- 129 (1 row) count ------- 27 (1 row) count ------- 29 (1 row) count ------- 122 (1 row) count ------- 110 (1 row) count ------- 146 (1 row) count ------- 174 (1 row) count ------- 106 (1 row) count ------- 146 (1 row) count ------- 165 (1 row) count ------- 126 (1 row) count ------- 177 (1 row) count ------- 122 (1 row) count ------- 7 (1 row) count ------- 124 (1 row) count ------- 102 (1 row) count ------- 35 (1 row) count ------- 285 (1 row) count ------- 49 (1 row) count ------- 50 (1 row) count ------- 221 (1 row) count ------- 208 (1 row) count ------- 81 (1 row) count ------- 195 (1 row) count ------- 239 (1 row) count ------- 199 (1 row) count ------- 96 (1 row) count ------- 58 (1 row) count ------- 94 (1 row) count ------- 194 (1 row) count ------- 97 (1 row) count ------- 90 (1 row) count ------- 138 (1 row) count ------- 129 (1 row) count ------- 82 (1 row) count ------- 191 (1 row) count ------- 47 (1 row) count ------- 101 (1 row) count ------- 88 (1 row) count ------- 225 (1 row) count ------- 11 (1 row) count ------- 63 (1 row) count ------- 124 (1 row) count ------- 244 (1 row) count ------- 61 (1 row) count ------- 118 (1 row) count ------- 103 (1 row) count ------- 85 (1 row) count ------- 116 (1 row) count ------- 31 (1 row) count ------- 145 (1 row) count ------- 64 (1 row) count ------- 73 (1 row) count ------- 152 (1 row) count ------- 100 (1 row) count ------- 157 (1 row) count ------- 119 (1 row) count ------- 125 (1 row) count ------- 57 (1 row) count ------- 128 (1 row) count ------- 107 (1 row) count ------- 231 (1 row) count ------- 147 (1 row) count ------- 171 (1 row) count ------- 54 (1 row) count ------- 13 (1 row) count ------- 28 (1 row) count ------- 220 (1 row) count ------- 63 (1 row) count ------- 213 (1 row) count ------- 80 (1 row) count ------- 82 (1 row) count ------- 70 (1 row) count ------- 63 (1 row) count ------- 34 (1 row) count ------- 158 (1 row) count ------- 80 (1 row) count ------- 177 (1 row) count ------- 253 (1 row) count ------- 66 (1 row) count ------- 100 (1 row) count ------- 65 (1 row) count ------- 64 (1 row) count ------- 181 (1 row) count ------- 31 (1 row) count ------- 63 (1 row) count ------- 151 (1 row) count ------- 126 (1 row) count ------- 216 (1 row) count ------- 47 (1 row) count ------- 91 (1 row) count ------- 131 (1 row) count ------- 160 (1 row) count ------- 17 (1 row) count ------- 93 (1 row) count ------- 31 (1 row) count ------- 171 (1 row) count ------- 144 (1 row) count ------- 52 (1 row) count ------- 136 (1 row) count ------- 193 (1 row) count ------- 75 (1 row) count ------- 114 (1 row) count ------- 113 (1 row) count ------- 157 (1 row) count ------- 91 (1 row) count ------- 50 (1 row) count ------- 155 (1 row) count ------- 29 (1 row) count ------- 178 (1 row) count ------- 77 (1 row) count ------- 18 (1 row) count ------- 112 (1 row) count ------- 118 (1 row) count ------- 81 (1 row) count ------- 201 (1 row) count ------- 204 (1 row) count ------- 93 (1 row) count ------- 145 (1 row) count ------- 50 (1 row) count ------- 71 (1 row) count ------- 45 (1 row) count ------- 161 (1 row) count ------- 70 (1 row) count ------- 36 (1 row) count ------- 112 (1 row) count ------- 131 (1 row) count ------- 159 (1 row) count ------- 168 (1 row) count ------- 69 (1 row) count ------- 51 (1 row) count ------- 39 (1 row) count ------- 63 (1 row) count ------- 105 (1 row) count ------- 107 (1 row) count ------- 62 (1 row) count ------- 250 (1 row) count ------- 183 (1 row) count ------- 143 (1 row) count ------- 145 (1 row) count ------- 55 (1 row) count ------- 124 (1 row) count ------- 244 (1 row) count ------- 4 (1 row) count ------- 10 (1 row) count ------- 201 (1 row) count ------- 11 (1 row) count ------- 77 (1 row) count ------- 81 (1 row) count ------- 295 (1 row) count ------- 170 (1 row) count ------- 69 (1 row) count ------- 102 (1 row) count ------- 227 (1 row) count ------- 101 (1 row) count ------- 49 (1 row) count ------- 130 (1 row) count ------- 26 (1 row) count ------- 114 (1 row) count ------- 383 (1 row) count ------- 205 (1 row) count ------- 66 (1 row) count ------- 89 (1 row) count ------- 135 (1 row) count ------- 178 (1 row) count ------- 150 (1 row) count ------- 199 (1 row) count ------- 44 (1 row) count ------- 25 (1 row) count ------- 130 (1 row) count ------- 65 (1 row) count ------- 12 (1 row) count ------- 248 (1 row) count ------- 172 (1 row) count ------- 48 (1 row) count ------- 150 (1 row) count ------- 21 (1 row) count ------- 109 (1 row) count ------- 49 (1 row) count ------- 117 (1 row) count ------- 128 (1 row) count ------- 130 (1 row) count ------- 60 (1 row) count ------- 181 (1 row) count ------- 157 (1 row) count ------- 193 (1 row) count ------- 73 (1 row) count ------- 120 (1 row) count ------- 170 (1 row) count ------- 54 (1 row) count ------- 112 (1 row) count ------- 68 (1 row) count ------- 335 (1 row) count ------- 132 (1 row) count ------- 53 (1 row) count ------- 139 (1 row) count ------- 109 (1 row) count ------- 47 (1 row) count ------- 87 (1 row) count ------- 188 (1 row) count ------- 130 (1 row) count ------- 189 (1 row) count ------- 76 (1 row) count ------- 28 (1 row) count ------- 48 (1 row) count ------- 204 (1 row) count ------- 35 (1 row) count ------- 160 (1 row) count ------- 112 (1 row) count ------- 202 (1 row) count ------- 83 (1 row) count ------- 24 (1 row) count ------- 6 (1 row) count ------- 13 (1 row) count ------- 188 (1 row) count ------- 124 (1 row) count ------- 117 (1 row) count ------- 112 (1 row) count ------- 164 (1 row) count ------- 80 (1 row) count ------- 96 (1 row) count ------- 48 (1 row) count ------- 94 (1 row) count ------- 168 (1 row) count ------- 38 (1 row) count ------- 65 (1 row) count ------- 77 (1 row) count ------- 14 (1 row) count ------- 77 (1 row) count ------- 221 (1 row) count ------- 203 (1 row) count ------- 111 (1 row) count ------- 127 (1 row) count ------- 128 (1 row) count ------- 150 (1 row) count ------- 95 (1 row) count ------- 44 (1 row) count ------- 92 (1 row) count ------- 155 (1 row) count ------- 167 (1 row) count ------- 138 (1 row) count ------- 148 (1 row) count ------- 64 (1 row) count ------- 158 (1 row) count ------- 43 (1 row) count ------- 149 (1 row) count ------- 21 (1 row) count ------- 21 (1 row) count ------- 115 (1 row) count ------- 85 (1 row) count ------- 22 (1 row) count ------- 191 (1 row) count ------- 52 (1 row) count ------- 32 (1 row) count ------- 66 (1 row) count ------- 126 (1 row) count ------- 53 (1 row) count ------- 104 (1 row) count ------- 22 (1 row) count ------- 38 (1 row) count ------- 82 (1 row) count ------- 125 (1 row) count ------- 162 (1 row) count ------- 253 (1 row) count ------- 104 (1 row) count ------- 187 (1 row) count ------- 50 (1 row) count ------- 194 (1 row) count ------- 70 (1 row) count ------- 134 (1 row) count ------- 147 (1 row) count ------- 248 (1 row) count ------- 83 (1 row) count ------- 94 (1 row) count ------- 31 (1 row) count ------- 24 (1 row) count ------- 160 (1 row) count ------- 227 (1 row) count ------- 247 (1 row) count ------- 75 (1 row) count ------- 146 (1 row) count ------- 5 (1 row) count ------- 67 (1 row) count ------- 70 (1 row) count ------- 67 (1 row) count ------- 76 (1 row) count ------- 150 (1 row) count ------- 23 (1 row) count ------- 233 (1 row) count ------- 74 (1 row) count ------- 116 (1 row) count ------- 276 (1 row) count ------- 209 (1 row) count ------- 62 (1 row) count ------- 57 (1 row) count ------- 71 (1 row) count ------- 109 (1 row) count ------- 238 (1 row) count ------- 78 (1 row) count ------- 91 (1 row) count ------- 49 (1 row) count ------- 87 (1 row) count ------- 59 (1 row) count ------- 338 (1 row) count ------- 79 (1 row) count ------- 191 (1 row) count ------- 69 (1 row) count ------- 121 (1 row) count ------- 363 (1 row) count ------- 97 (1 row) count ------- 194 (1 row) count ------- 136 (1 row) count ------- 169 (1 row) count ------- 244 (1 row) count ------- 200 (1 row) count ------- 92 (1 row) count ------- 58 (1 row) count ------- 168 (1 row) count ------- 165 (1 row) count ------- 89 (1 row) count ------- 108 (1 row) count ------- 56 (1 row) count ------- 144 (1 row) count ------- 13 (1 row) count ------- 31 (1 row) count ------- 34 (1 row) count ------- 51 (1 row) count ------- 121 (1 row) count ------- 70 (1 row) count ------- 116 (1 row) count ------- 171 (1 row) count ------- 136 (1 row) count ------- 176 (1 row) count ------- 254 (1 row) count ------- 126 (1 row) count ------- 130 (1 row) count ------- 175 (1 row) count ------- 3 (1 row) count ------- 96 (1 row) count ------- 249 (1 row) count ------- 178 (1 row) count ------- 216 (1 row) count ------- 61 (1 row) count ------- 49 (1 row) count ------- 108 (1 row) count ------- 66 (1 row) count ------- 238 (1 row) count ------- 42 (1 row) count ------- 81 (1 row) count ------- 25 (1 row) count ------- 44 (1 row) count ------- 67 (1 row) count ------- 104 (1 row) count ------- 68 (1 row) count ------- 79 (1 row) count ------- 72 (1 row) count ------- 182 (1 row) count ------- 123 (1 row) count ------- 108 (1 row) count ------- 64 (1 row) count ------- 38 (1 row) count ------- 145 (1 row) count ------- 69 (1 row) count ------- 37 (1 row) count ------- 81 (1 row) count ------- 122 (1 row) count ------- 45 (1 row) count ------- 126 (1 row) count ------- 187 (1 row) count ------- 237 (1 row) count ------- 122 (1 row) count ------- 55 (1 row) count ------- 8 (1 row) count ------- 78 (1 row) count ------- 107 (1 row) count ------- 177 (1 row) count ------- 3 (1 row) count ------- 172 (1 row) count ------- 166 (1 row) count ------- 218 (1 row) count ------- 115 (1 row) count ------- 94 (1 row) count ------- 4 (1 row) count ------- 91 (1 row) count ------- 96 (1 row) count ------- 70 (1 row) count ------- 109 (1 row) count ------- 283 (1 row) count ------- 261 (1 row) count ------- 62 (1 row) count ------- 99 (1 row) count ------- 134 (1 row) count ------- 175 (1 row) count ------- 296 (1 row) count ------- 109 (1 row) count ------- 76 (1 row) count ------- 219 (1 row) count ------- 145 (1 row) count ------- 274 (1 row) count ------- 97 (1 row) count ------- 25 (1 row) count ------- 122 (1 row) count ------- 88 (1 row) count ------- 114 (1 row) count ------- 178 (1 row) count ------- 334 (1 row) count ------- 13 (1 row) count ------- 38 (1 row) count ------- 143 (1 row) count ------- 84 (1 row) count ------- 282 (1 row) count ------- 91 (1 row) count ------- 158 (1 row) count ------- 144 (1 row) count ------- 83 (1 row) count ------- 151 (1 row) count ------- 219 (1 row) count ------- 139 (1 row) count ------- 176 (1 row) count ------- 200 (1 row) count ------- 59 (1 row) count ------- 101 (1 row) count ------- 60 (1 row) count ------- 166 (1 row) count ------- 185 (1 row) count ------- 87 (1 row) count ------- 84 (1 row) count ------- 84 (1 row) count ------- 164 (1 row) count ------- 151 (1 row) count ------- 160 (1 row) count ------- 62 (1 row) count ------- 102 (1 row) count ------- 63 (1 row) count ------- 88 (1 row) count ------- 102 (1 row) count ------- 110 (1 row) count ------- 144 (1 row) count ------- 166 (1 row) count ------- 204 (1 row) count ------- 13 (1 row) count ------- 142 (1 row) count ------- 81 (1 row) count ------- 31 (1 row) count ------- 2 (1 row) count ------- 271 (1 row) count ------- 154 (1 row) count ------- 115 (1 row) count ------- 160 (1 row) count ------- 20 (1 row) count ------- 120 (1 row) count ------- 116 (1 row) count ------- 235 (1 row) count ------- 134 (1 row) count ------- 113 (1 row) count ------- 115 (1 row) count ------- 151 (1 row) count ------- 142 (1 row) count ------- 92 (1 row) count ------- 33 (1 row) count ------- 117 (1 row) count ------- 153 (1 row) count ------- 128 (1 row) count ------- 10 (1 row) count ------- 49 (1 row) count ------- 225 (1 row) count ------- 14 (1 row) count ------- 27 (1 row) count ------- 19 (1 row) count ------- 114 (1 row) count ------- 113 (1 row) count ------- 48 (1 row) count ------- 10 (1 row) count ------- 67 (1 row) count ------- 172 (1 row) count ------- 214 (1 row) count ------- 151 (1 row) count ------- 128 (1 row) count ------- 119 (1 row) count ------- 119 (1 row) count ------- 100 (1 row) count ------- 100 (1 row) count ------- 26 (1 row) count ------- 32 (1 row) count ------- 122 (1 row) count ------- 97 (1 row) count ------- 257 (1 row) count ------- 136 (1 row) count ------- 108 (1 row) count ------- 206 (1 row) count ------- 220 (1 row) count ------- 114 (1 row) count ------- 36 (1 row) count ------- 83 (1 row) count ------- 72 (1 row) count ------- 83 (1 row) count ------- 124 (1 row) count ------- 319 (1 row) count ------- 74 (1 row) count ------- 30 (1 row) count ------- 61 (1 row) count ------- 290 (1 row) count ------- 82 (1 row) count ------- 109 (1 row) count ------- 185 (1 row) count ------- 34 (1 row) count ------- 157 (1 row) count ------- 131 (1 row) count ------- 81 (1 row) count ------- 1 (1 row) count ------- 9 (1 row) count ------- 133 (1 row) count ------- 56 (1 row) count ------- 49 (1 row) count ------- 92 (1 row) count ------- 227 (1 row) count ------- 112 (1 row) count ------- 266 (1 row) count ------- 146 (1 row) count ------- 75 (1 row) count ------- 76 (1 row) count ------- 200 (1 row) count ------- 239 (1 row) count ------- 233 (1 row) count ------- 125 (1 row) count ------- 57 (1 row) count ------- 101 (1 row) count ------- 188 (1 row) count ------- 55 (1 row) count ------- 5 (1 row) count ------- 76 (1 row) count ------- 161 (1 row) count ------- 41 (1 row) count ------- 24 (1 row) count ------- 107 (1 row) count ------- 244 (1 row) count ------- 5 (1 row) count ------- 40 (1 row) count ------- 69 (1 row) count ------- 126 (1 row) count ------- 97 (1 row) count ------- 42 (1 row) count ------- 76 (1 row) count ------- 92 (1 row) count ------- 96 (1 row) count ------- 143 (1 row) count ------- 77 (1 row) count ------- 158 (1 row) count ------- 183 (1 row) count ------- 252 (1 row) count ------- 113 (1 row) count ------- 174 (1 row) count ------- 92 (1 row) count ------- 91 (1 row) count ------- 37 (1 row) count ------- 131 (1 row) count ------- 30 (1 row) count ------- 165 (1 row) count ------- 92 (1 row) count ------- 201 (1 row) count ------- 9 (1 row) count ------- 83 (1 row) count ------- 141 (1 row) count ------- 192 (1 row) count ------- 86 (1 row) count ------- 115 (1 row) count ------- 62 (1 row) count ------- 108 (1 row) count ------- 54 (1 row) count ------- 243 (1 row) count ------- 238 (1 row) count ------- 33 (1 row) count ------- 202 (1 row) count ------- 68 (1 row) count ------- 170 (1 row) count ------- 71 (1 row) count ------- 81 (1 row) count ------- 39 (1 row) count ------- 128 (1 row) count ------- 110 (1 row) count ------- 101 (1 row) count ------- 225 (1 row) count ------- 190 (1 row) count ------- 25 (1 row) count ------- 103 (1 row) count ------- 204 (1 row) count ------- 82 (1 row) count ------- 86 (1 row) count ------- 209 (1 row) count ------- 24 (1 row) count ------- 11 (1 row) count ------- 69 (1 row) count ------- 12 (1 row) count ------- 221 (1 row) count ------- 206 (1 row) count ------- 180 (1 row) count ------- 68 (1 row) count ------- 10 (1 row) count ------- 38 (1 row) count ------- 65 (1 row) count ------- 141 (1 row) count ------- 136 (1 row) count ------- 2 (1 row) count ------- 91 (1 row) count ------- 227 (1 row) count ------- 158 (1 row) count ------- 127 (1 row) count ------- 192 (1 row) count ------- 14 (1 row) count ------- 199 (1 row) count ------- 225 (1 row) count ------- 144 (1 row) count ------- 226 (1 row) count ------- 83 (1 row) count ------- 31 (1 row) count ------- 9 (1 row) count ------- 101 (1 row) count ------- 67 (1 row) count ------- 59 (1 row) count ------- 132 (1 row) count ------- 45 (1 row) count ------- 20 (1 row) count ------- 191 (1 row) count ------- 44 (1 row) count ------- 277 (1 row) count ------- 202 (1 row) count ------- 143 (1 row) count ------- 162 (1 row) count ------- 148 (1 row) count ------- 212 (1 row) count ------- 228 (1 row) count ------- 100 (1 row) count ------- 168 (1 row) count ------- 143 (1 row) count ------- 90 (1 row) count ------- 147 (1 row) count ------- 31 (1 row) count ------- 83 (1 row) count ------- 287 (1 row) count ------- 213 (1 row) count ------- 81 (1 row) count ------- 176 (1 row) count ------- 86 (1 row) count ------- 147 (1 row) count ------- 109 (1 row) count ------- 77 (1 row) count ------- 229 (1 row) count ------- 152 (1 row) count ------- 68 (1 row) count ------- 210 (1 row) count ------- 148 (1 row) count ------- 76 (1 row) count ------- 157 (1 row) count ------- 52 (1 row) count ------- 148 (1 row) count ------- 121 (1 row) count ------- 182 (1 row) count ------- 146 (1 row) count ------- 119 (1 row) count ------- 253 (1 row) count ------- 164 (1 row) count ------- 133 (1 row) count ------- 31 (1 row) count ------- 80 (1 row) count ------- 247 (1 row) count ------- 197 (1 row) count ------- 28 (1 row) count ------- 255 (1 row) count ------- 40 (1 row) count ------- 149 (1 row) count ------- 152 (1 row) count ------- 100 (1 row) count ------- 66 (1 row) count ------- 285 (1 row) count ------- 122 (1 row) count ------- 108 (1 row) count ------- 198 (1 row) count ------- 257 (1 row) count ------- 49 (1 row) count ------- 179 (1 row) count ------- 3 (1 row) count ------- 112 (1 row) count ------- 165 (1 row) count ------- 219 (1 row) count ------- 120 (1 row) count ------- 69 (1 row) count ------- 168 (1 row) count ------- 103 (1 row) count ------- 112 (1 row) count ------- 173 (1 row) count ------- 139 (1 row) count ------- 56 (1 row) count ------- 100 (1 row) count ------- 54 (1 row) count ------- 10 (1 row) count ------- 123 (1 row) count ------- 30 (1 row) count ------- 183 (1 row) count ------- 190 (1 row) count ------- 19 (1 row) count ------- 113 (1 row) count ------- 70 (1 row) count ------- 164 (1 row) count ------- 51 (1 row) count ------- 31 (1 row) count ------- 116 (1 row) count ------- 281 (1 row) count ------- 52 (1 row) count ------- 152 (1 row) count ------- 68 (1 row) count ------- 190 (1 row) count ------- 112 (1 row) count ------- 108 (1 row) count ------- 140 (1 row) count ------- 108 (1 row) count ------- 308 (1 row) count ------- 256 (1 row) count ------- 5 (1 row) count ------- 133 (1 row) count ------- 90 (1 row) count ------- 101 (1 row) count ------- 117 (1 row) count ------- 36 (1 row) count ------- 81 (1 row) count ------- 158 (1 row) count ------- 35 (1 row) count ------- 235 (1 row) count ------- 154 (1 row) count ------- 164 (1 row) count ------- 200 (1 row) count ------- 152 (1 row) count ------- 199 (1 row) count ------- 73 (1 row) count ------- 98 (1 row) count ------- 55 (1 row) count ------- 52 (1 row) count ------- 156 (1 row) count ------- 49 (1 row) count ------- 132 (1 row) count ------- 90 (1 row) count ------- 68 (1 row) count ------- 77 (1 row) count ------- 81 (1 row) count ------- 136 (1 row) count ------- 93 (1 row) count ------- 47 (1 row) count ------- 27 (1 row) count ------- 190 (1 row) count ------- 128 (1 row) count ------- 155 (1 row) count ------- 66 (1 row) count ------- 54 (1 row) count ------- 104 (1 row) count ------- 50 (1 row) count ------- 168 (1 row) count ------- 148 (1 row) count ------- 133 (1 row) count ------- 107 (1 row) count ------- 39 (1 row) count ------- 135 (1 row) count ------- 68 (1 row) count ------- 178 (1 row) count ------- 206 (1 row) count ------- 128 (1 row) count ------- 82 (1 row) count ------- 269 (1 row) count ------- 150 (1 row) count ------- 172 (1 row) count ------- 73 (1 row) count ------- 62 (1 row) count ------- 172 (1 row) count ------- 23 (1 row) count ------- 106 (1 row) count ------- 150 (1 row) count ------- 72 (1 row) count ------- 192 (1 row) count ------- 98 (1 row) count ------- 96 (1 row) count ------- 117 (1 row) count ------- 70 (1 row) count ------- 145 (1 row) count ------- 132 (1 row) count ------- 79 (1 row) count ------- 197 (1 row) count ------- 106 (1 row) count ------- 170 (1 row) count ------- 70 (1 row) count ------- 24 (1 row) count ------- 157 (1 row) count ------- 105 (1 row) count ------- 62 (1 row) count ------- 248 (1 row) count ------- 83 (1 row) count ------- 118 (1 row) count ------- 182 (1 row) count ------- 213 (1 row) count ------- 106 (1 row) count ------- 235 (1 row) count ------- 229 (1 row) count ------- 73 (1 row) count ------- 208 (1 row) count ------- 4 (1 row) count ------- 35 (1 row) count ------- 95 (1 row) count ------- 66 (1 row) count ------- 98 (1 row) count ------- 48 (1 row) count ------- 21 (1 row) count ------- 54 (1 row) count ------- 250 (1 row) count ------- 16 (1 row) count ------- 53 (1 row) count ------- 9 (1 row) count ------- 25 (1 row) count ------- 72 (1 row) count ------- 115 (1 row) count ------- 129 (1 row) count ------- 107 (1 row) count ------- 25 (1 row) count ------- 91 (1 row) count ------- 248 (1 row) count ------- 34 (1 row) count ------- 114 (1 row) count ------- 105 (1 row) count ------- 155 (1 row) count ------- 162 (1 row) count ------- 85 (1 row) count ------- 127 (1 row) count ------- 134 (1 row) count ------- 152 (1 row) count ------- 154 (1 row) count ------- 129 (1 row) count ------- 180 (1 row) count ------- 102 (1 row) count ------- 131 (1 row) count ------- 44 (1 row) count ------- 185 (1 row) count ------- 129 (1 row) count ------- 87 (1 row) count ------- 117 (1 row) count ------- 84 (1 row) count ------- 142 (1 row) count ------- 221 (1 row) count ------- 151 (1 row) count ------- 58 (1 row) count ------- 75 (1 row) count ------- 220 (1 row) count ------- 44 (1 row) count ------- 154 (1 row) count ------- 22 (1 row) count ------- 225 (1 row) count ------- 50 (1 row) count ------- 60 (1 row) count ------- 220 (1 row) count ------- 296 (1 row) count ------- 219 (1 row) count ------- 194 (1 row) count ------- 264 (1 row) count ------- 156 (1 row) count ------- 102 (1 row) count ------- 137 (1 row) count ------- 202 (1 row) count ------- 236 (1 row) count ------- 201 (1 row) count ------- 83 (1 row) count ------- 46 (1 row) count ------- 137 (1 row) count ------- 63 (1 row) count ------- 87 (1 row) count ------- 156 (1 row) count ------- 52 (1 row) count ------- 171 (1 row) count ------- 148 (1 row) count ------- 196 (1 row) count ------- 198 (1 row) count ------- 194 (1 row) count ------- 4 (1 row) count ------- 57 (1 row) count ------- 49 (1 row) count ------- 123 (1 row) count ------- 137 (1 row) count ------- 173 (1 row) count ------- 55 (1 row) count ------- 74 (1 row) count ------- 179 (1 row) count ------- 76 (1 row) count ------- 93 (1 row) count ------- 290 (1 row) count ------- 36 (1 row) count ------- 224 (1 row) count ------- 138 (1 row) count ------- 43 (1 row) count ------- 276 (1 row) count ------- 190 (1 row) count ------- 84 (1 row) count ------- 184 (1 row) count ------- 194 (1 row) count ------- 104 (1 row) count ------- 15 (1 row) count ------- 141 (1 row) count ------- 66 (1 row) count ------- 31 (1 row) count ------- 165 (1 row) count ------- 58 (1 row) count ------- 10 (1 row) count ------- 104 (1 row) count ------- 129 (1 row) count ------- 86 (1 row) count ------- 45 (1 row) count ------- 47 (1 row) count ------- 53 (1 row) count ------- 125 (1 row) count ------- 83 (1 row) count ------- 190 (1 row) count ------- 283 (1 row) count ------- 121 (1 row) count ------- 47 (1 row) count ------- 58 (1 row) count ------- 65 (1 row) count ------- 135 (1 row) count ------- 222 (1 row) count ------- 120 (1 row) count ------- 91 (1 row) count ------- 92 (1 row) count ------- 146 (1 row) count ------- 91 (1 row) count ------- 159 (1 row) count ------- 178 (1 row) count ------- 160 (1 row) count ------- 24 (1 row) count ------- 112 (1 row) count ------- 111 (1 row) count ------- 253 (1 row) count ------- 119 (1 row) count ------- 42 (1 row) count ------- 137 (1 row) count ------- 306 (1 row) count ------- 103 (1 row) count ------- 112 (1 row) count ------- 221 (1 row) count ------- 101 (1 row) count ------- 264 (1 row) count ------- 35 (1 row) count ------- 162 (1 row) count ------- 58 (1 row) count ------- 39 (1 row) count ------- 261 (1 row) count ------- 215 (1 row) count ------- 132 (1 row) count ------- 171 (1 row) count ------- 41 (1 row) count ------- 178 (1 row) count ------- 90 (1 row) count ------- 156 (1 row) count ------- 125 (1 row) count ------- 204 (1 row) count ------- 179 (1 row) count ------- 68 (1 row) count ------- 138 (1 row) count ------- 140 (1 row) count ------- 52 (1 row) count ------- 182 (1 row) count ------- 119 (1 row) count ------- 154 (1 row) count ------- 53 (1 row) count ------- 158 (1 row) count ------- 64 (1 row) count ------- 145 (1 row) count ------- 27 (1 row) count ------- 64 (1 row) count ------- 149 (1 row) count ------- 65 (1 row) count ------- 31 (1 row) count ------- 178 (1 row) count ------- 166 (1 row) count ------- 51 (1 row) count ------- 136 (1 row) count ------- 81 (1 row) count ------- 130 (1 row) count ------- 8 (1 row) count ------- 134 (1 row) count ------- 112 (1 row) count ------- 106 (1 row) count ------- 167 (1 row) count ------- 68 (1 row) count ------- 180 (1 row) count ------- 99 (1 row) count ------- 32 (1 row) count ------- 38 (1 row) count ------- 81 (1 row) count ------- 109 (1 row) count ------- 202 (1 row) count ------- 126 (1 row) count ------- 92 (1 row) count ------- 71 (1 row) count ------- 23 (1 row) count ------- 154 (1 row) count ------- 218 (1 row) count ------- 125 (1 row) count ------- 71 (1 row) count ------- 265 (1 row) count ------- 211 (1 row) count ------- 238 (1 row) count ------- 10 (1 row) count ------- 88 (1 row) count ------- 155 (1 row) count ------- 191 (1 row) count ------- 24 (1 row) count ------- 74 (1 row) count ------- 134 (1 row) count ------- 80 (1 row) count ------- 317 (1 row) count ------- 188 (1 row) count ------- 30 (1 row) count ------- 237 (1 row) count ------- 110 (1 row) count ------- 109 (1 row) count ------- 13 (1 row) count ------- 3 (1 row) count ------- 71 (1 row) count ------- 96 (1 row) count ------- 97 (1 row) count ------- 60 (1 row) count ------- 169 (1 row) count ------- 291 (1 row) count ------- 250 (1 row) count ------- 70 (1 row) count ------- 80 (1 row) count ------- 142 (1 row) count ------- 38 (1 row) count ------- 93 (1 row) count ------- 52 (1 row) count ------- 83 (1 row) count ------- 114 (1 row) count ------- 192 (1 row) count ------- 114 (1 row) count ------- 175 (1 row) count ------- 37 (1 row) count ------- 32 (1 row) count ------- 182 (1 row) count ------- 70 (1 row) count ------- 137 (1 row) count ------- 105 (1 row) count ------- 207 (1 row) count ------- 95 (1 row) count ------- 79 (1 row) count ------- 26 (1 row) count ------- 222 (1 row) count ------- 211 (1 row) count ------- 64 (1 row) count ------- 131 (1 row) count ------- 333 (1 row) count ------- 181 (1 row) count ------- 155 (1 row) count ------- 164 (1 row) count ------- 108 (1 row) count ------- 82 (1 row) count ------- 114 (1 row) count ------- 53 (1 row) count ------- 80 (1 row) count ------- 72 (1 row) count ------- 110 (1 row) count ------- 112 (1 row) count ------- 123 (1 row) count ------- 66 (1 row) count ------- 140 (1 row) count ------- 102 (1 row) count ------- 102 (1 row) count ------- 78 (1 row) count ------- 63 (1 row) count ------- 228 (1 row) count ------- 143 (1 row) count ------- 111 (1 row) count ------- 110 (1 row) count ------- 39 (1 row) count ------- 115 (1 row) count ------- 173 (1 row) count ------- 51 (1 row) count ------- 46 (1 row) count ------- 149 (1 row) count ------- 173 (1 row) count ------- 143 (1 row) count ------- 148 (1 row) count ------- 122 (1 row) count ------- 108 (1 row) count ------- 84 (1 row) count ------- 121 (1 row) count ------- 291 (1 row) count ------- 130 (1 row) count ------- 5 (1 row) count ------- 262 (1 row) count ------- 45 (1 row) count ------- 177 (1 row) count ------- 65 (1 row) count ------- 93 (1 row) count ------- 31 (1 row) count ------- 32 (1 row) count ------- 21 (1 row) count ------- 175 (1 row) count ------- 79 (1 row) count ------- 123 (1 row) count ------- 66 (1 row) count ------- 51 (1 row) count ------- 256 (1 row) count ------- 75 (1 row) count ------- 172 (1 row) count ------- 192 (1 row) count ------- 120 (1 row) count ------- 165 (1 row) count ------- 156 (1 row) count ------- 98 (1 row) count ------- 212 (1 row) count ------- 156 (1 row) count ------- 74 (1 row) count ------- 146 (1 row) count ------- 125 (1 row) count ------- 132 (1 row) count ------- 241 (1 row) count ------- 49 (1 row) count ------- 204 (1 row) count ------- 66 (1 row) count ------- 202 (1 row) count ------- 190 (1 row) count ------- 95 (1 row) count ------- 89 (1 row) count ------- 142 (1 row) count ------- 114 (1 row) count ------- 207 (1 row) count ------- 21 (1 row) count ------- 67 (1 row) count ------- 249 (1 row) count ------- 55 (1 row) count ------- 140 (1 row) count ------- 218 (1 row) count ------- 131 (1 row) count ------- 386 (1 row) count ------- 155 (1 row) count ------- 90 (1 row) count ------- 315 (1 row) count ------- 124 (1 row) count ------- 167 (1 row) count ------- 220 (1 row) count ------- 6 (1 row) count ------- 32 (1 row) count ------- 158 (1 row) count ------- 104 (1 row) count ------- 65 (1 row) count ------- 269 (1 row) count ------- 21 (1 row) count ------- 115 (1 row) count ------- 118 (1 row) count ------- 69 (1 row) count ------- 99 (1 row) count ------- 30 (1 row) count ------- 102 (1 row) count ------- 113 (1 row) count ------- 262 (1 row) count ------- 169 (1 row) count ------- 55 (1 row) count ------- 125 (1 row) count ------- 310 (1 row) count ------- 87 (1 row) count ------- 99 (1 row) count ------- 61 (1 row) count ------- 71 (1 row) count ------- 213 (1 row) count ------- 316 (1 row) count ------- 177 (1 row) count ------- 10 (1 row) count ------- 237 (1 row) count ------- 193 (1 row) count ------- 140 (1 row) count ------- 135 (1 row) count ------- 120 (1 row) count ------- 16 (1 row) count ------- 60 (1 row) count ------- 77 (1 row) count ------- 23 (1 row) count ------- 4 (1 row) count ------- 165 (1 row) count ------- 139 (1 row) count ------- 128 (1 row) count ------- 128 (1 row) count ------- 148 (1 row) count ------- 304 (1 row) count ------- 113 (1 row) count ------- 194 (1 row) count ------- 11 (1 row) count ------- 221 (1 row) count ------- 126 (1 row) count ------- 22 (1 row) count ------- 78 (1 row) count ------- 53 (1 row) count ------- 110 (1 row) count ------- 95 (1 row) count ------- 30 (1 row) count ------- 66 (1 row) count ------- 230 (1 row) count ------- 62 (1 row) count ------- 158 (1 row) count ------- 180 (1 row) count ------- 38 (1 row) count ------- 136 (1 row) count ------- 144 (1 row) count ------- 20 (1 row) count ------- 156 (1 row) count ------- 176 (1 row) count ------- 159 (1 row) count ------- 129 (1 row) count ------- 108 (1 row) count ------- 22 (1 row) count ------- 112 (1 row) count ------- 162 (1 row) count ------- 20 (1 row) count ------- 131 (1 row) count ------- 127 (1 row) count ------- 102 (1 row) count ------- 116 (1 row) count ------- 45 (1 row) count ------- 38 (1 row) count ------- 2 (1 row) count ------- 91 (1 row) count ------- 168 (1 row) count ------- 81 (1 row) count ------- 184 (1 row) count ------- 126 (1 row) count ------- 103 (1 row) count ------- 51 (1 row) count ------- 107 (1 row) count ------- 112 (1 row) count ------- 207 (1 row) count ------- 40 (1 row) count ------- 121 (1 row) count ------- 123 (1 row) count ------- 147 (1 row) count ------- 225 (1 row) count ------- 133 (1 row) count ------- 83 (1 row) count ------- 127 (1 row) count ------- 61 (1 row) count ------- 161 (1 row) count ------- 95 (1 row) count ------- 81 (1 row) count ------- 137 (1 row) count ------- 307 (1 row) count ------- 236 (1 row) count ------- 178 (1 row) count ------- 168 (1 row) count ------- 212 (1 row) count ------- 304 (1 row) count ------- 18 (1 row) count ------- 69 (1 row) count ------- 162 (1 row) count ------- 116 (1 row) count ------- 147 (1 row) count ------- 226 (1 row) count ------- 154 (1 row) count ------- 45 (1 row) count ------- 154 (1 row) count ------- 268 (1 row) count ------- 102 (1 row) count ------- 67 (1 row) count ------- 111 (1 row) count ------- 84 (1 row) count ------- 16 (1 row) count ------- 65 (1 row) count ------- 136 (1 row) count ------- 79 (1 row) count ------- 166 (1 row) count ------- 192 (1 row) count ------- 295 (1 row) count ------- 72 (1 row) count ------- 145 (1 row) count ------- 92 (1 row) count ------- 179 (1 row) count ------- 151 (1 row) count ------- 271 (1 row) count ------- 54 (1 row) count ------- 263 (1 row) count ------- 187 (1 row) count ------- 246 (1 row) count ------- 71 (1 row) count ------- 85 (1 row) count ------- 75 (1 row) count ------- 92 (1 row) count ------- 121 (1 row) count ------- 207 (1 row) count ------- 90 (1 row) count ------- 108 (1 row) count ------- 189 (1 row) count ------- 181 (1 row) count ------- 132 (1 row) count ------- 241 (1 row) count ------- 248 (1 row) count ------- 208 (1 row) count ------- 142 (1 row) count ------- 69 (1 row) count ------- 228 (1 row) count ------- 68 (1 row) count ------- 251 (1 row) count ------- 193 (1 row) count ------- 157 (1 row) count ------- 132 (1 row) count ------- 250 (1 row) count ------- 225 (1 row) count ------- 24 (1 row) count ------- 193 (1 row) count ------- 244 (1 row) count ------- 74 (1 row) count ------- 150 (1 row) count ------- 273 (1 row) count ------- 203 (1 row) count ------- 48 (1 row) count ------- 66 (1 row) count ------- 192 (1 row) count ------- 134 (1 row) count ------- 184 (1 row) count ------- 119 (1 row) count ------- 60 (1 row) count ------- 79 (1 row) count ------- 93 (1 row) count ------- 38 (1 row) count ------- 119 (1 row) count ------- 142 (1 row) count ------- 179 (1 row) count ------- 96 (1 row) count ------- 154 (1 row) count ------- 229 (1 row) count ------- 79 (1 row) count ------- 178 (1 row) count ------- 33 (1 row) count ------- 86 (1 row) count ------- 118 (1 row) count ------- 36 (1 row) count ------- 84 (1 row) count ------- 99 (1 row) count ------- 175 (1 row) count ------- 15 (1 row) count ------- 53 (1 row) count ------- 96 (1 row) count ------- 138 (1 row) count ------- 197 (1 row) count ------- 85 (1 row) count ------- 83 (1 row) count ------- 43 (1 row) count ------- 89 (1 row) count ------- 10 (1 row) count ------- 113 (1 row) count ------- 103 (1 row) count ------- 15 (1 row) count ------- 103 (1 row) count ------- 86 (1 row) count ------- 26 (1 row) count ------- 83 (1 row) count ------- 94 (1 row) count ------- 86 (1 row) count ------- 175 (1 row) count ------- 88 (1 row) count ------- 311 (1 row) count ------- 144 (1 row) count ------- 55 (1 row) count ------- 176 (1 row) count ------- 292 (1 row) count ------- 75 (1 row) count ------- 93 (1 row) count ------- 94 (1 row) count ------- 57 (1 row) count ------- 68 (1 row) count ------- 254 (1 row) count ------- 116 (1 row) count ------- 69 (1 row) count ------- 165 (1 row) count ------- 70 (1 row) count ------- 71 (1 row) count ------- 70 (1 row) count ------- 113 (1 row) count ------- 121 (1 row) count ------- 27 (1 row) count ------- 170 (1 row) count ------- 207 (1 row) count ------- 139 (1 row) count ------- 203 (1 row) count ------- 93 (1 row) count ------- 30 (1 row) count ------- 39 (1 row) count ------- 78 (1 row) count ------- 50 (1 row) count ------- 64 (1 row) count ------- 119 (1 row) count ------- 115 (1 row) count ------- 180 (1 row) count ------- 171 (1 row) count ------- 49 (1 row) count ------- 183 (1 row) count ------- 159 (1 row) count ------- 115 (1 row) count ------- 152 (1 row) count ------- 104 (1 row) count ------- 167 (1 row) count ------- 43 (1 row) count ------- 233 (1 row) count ------- 147 (1 row) count ------- 80 (1 row) count ------- 62 (1 row) count ------- 129 (1 row) count ------- 126 (1 row) count ------- 87 (1 row) count ------- 216 (1 row) count ------- 102 (1 row) count ------- 137 (1 row) count ------- 120 (1 row) count ------- 118 (1 row) count ------- 276 (1 row) count ------- 189 (1 row) count ------- 312 (1 row) count ------- 21 (1 row) count ------- 44 (1 row) count ------- 230 (1 row) count ------- 75 (1 row) count ------- 108 (1 row) count ------- 1 (1 row) count ------- 58 (1 row) count ------- 214 (1 row) count ------- 93 (1 row) count ------- 190 (1 row) count ------- 115 (1 row) count ------- 149 (1 row) count ------- 203 (1 row) count ------- 47 (1 row) count ------- 262 (1 row) count ------- 67 (1 row) count ------- 151 (1 row) count ------- 213 (1 row) count ------- 107 (1 row) count ------- 111 (1 row) count ------- 120 (1 row) count ------- 23 (1 row) count ------- 26 (1 row) count ------- 4 (1 row) count ------- 239 (1 row) count ------- 110 (1 row) count ------- 91 (1 row) count ------- 257 (1 row) count ------- 65 (1 row) count ------- 34 (1 row) count ------- 16 (1 row) count ------- 7 (1 row) count ------- 175 (1 row) count ------- 86 (1 row) count ------- 88 (1 row) count ------- 238 (1 row) count ------- 144 (1 row) count ------- 126 (1 row) count ------- 153 (1 row) count ------- 30 (1 row) count ------- 105 (1 row) count ------- 104 (1 row) count ------- 80 (1 row) count ------- 81 (1 row) count ------- 105 (1 row) count ------- 121 (1 row) count ------- 110 (1 row) count ------- 87 (1 row) count ------- 110 (1 row) count ------- 74 (1 row) count ------- 165 (1 row) count ------- 65 (1 row) count ------- 228 (1 row) count ------- 112 (1 row) count ------- 162 (1 row) count ------- 134 (1 row) count ------- 82 (1 row) count ------- 57 (1 row) count ------- 101 (1 row) count ------- 137 (1 row) count ------- 187 (1 row) count ------- 146 (1 row) count ------- 110 (1 row) count ------- 168 (1 row) count ------- 143 (1 row) count ------- 110 (1 row) count ------- 281 (1 row) count ------- 78 (1 row) count ------- 172 (1 row) count ------- 39 (1 row) count ------- 98 (1 row) count ------- 122 (1 row) count ------- 42 (1 row) count ------- 88 (1 row) count ------- 180 (1 row) count ------- 11 (1 row) count ------- 157 (1 row) count ------- 181 (1 row) count ------- 220 (1 row) count ------- 90 (1 row) count ------- 317 (1 row) count ------- 208 (1 row) count ------- 10 (1 row) count ------- 200 (1 row) count ------- 122 (1 row) count ------- 105 (1 row) count ------- 244 (1 row) count ------- 68 (1 row) count ------- 98 (1 row) count ------- 114 (1 row) count ------- 98 (1 row) count ------- 242 (1 row) count ------- 149 (1 row) count ------- 146 (1 row) count ------- 118 (1 row) count ------- 166 (1 row) count ------- 51 (1 row) count ------- 270 (1 row) count ------- 148 (1 row) count ------- 33 (1 row) count ------- 154 (1 row) count ------- 129 (1 row) count ------- 108 (1 row) count ------- 40 (1 row) count ------- 136 (1 row) count ------- 120 (1 row) count ------- 182 (1 row) count ------- 43 (1 row) count ------- 191 (1 row) count ------- 73 (1 row) count ------- 154 (1 row) count ------- 53 (1 row) count ------- 179 (1 row) count ------- 111 (1 row) count ------- 73 (1 row) count ------- 35 (1 row) count ------- 73 (1 row) count ------- 111 (1 row) count ------- 314 (1 row) count ------- 140 (1 row) count ------- 40 (1 row) count ------- 177 (1 row) count ------- 115 (1 row) count ------- 311 (1 row) count ------- 99 (1 row) count ------- 162 (1 row) count ------- 112 (1 row) count ------- 254 (1 row) count ------- 111 (1 row) count ------- 94 (1 row) count ------- 83 (1 row) count ------- 66 (1 row) count ------- 98 (1 row) count ------- 115 (1 row) count ------- 109 (1 row) count ------- 123 (1 row) count ------- 175 (1 row) count ------- 93 (1 row) count ------- 11 (1 row) count ------- 12 (1 row) count ------- 191 (1 row) count ------- 177 (1 row) count ------- 13 (1 row) count ------- 51 (1 row) count ------- 160 (1 row) count ------- 8 (1 row) count ------- 68 (1 row) count ------- 119 (1 row) count ------- 173 (1 row) count ------- 69 (1 row) count ------- 29 (1 row) count ------- 167 (1 row) count ------- 289 (1 row) count ------- 96 (1 row) count ------- 313 (1 row) count ------- 72 (1 row) count ------- 86 (1 row) count ------- 143 (1 row) count ------- 74 (1 row) count ------- 276 (1 row) count ------- 91 (1 row) count ------- 161 (1 row) count ------- 149 (1 row) count ------- 20 (1 row) count ------- 14 (1 row) count ------- 197 (1 row) count ------- 36 (1 row) count ------- 97 (1 row) count ------- 167 (1 row) count ------- 217 (1 row) count ------- 144 (1 row) count ------- 55 (1 row) count ------- 145 (1 row) count ------- 59 (1 row) count ------- 151 (1 row) count ------- 200 (1 row) count ------- 160 (1 row) count ------- 104 (1 row) count ------- 30 (1 row) count ------- 141 (1 row) count ------- 44 (1 row) count ------- 205 (1 row) count ------- 63 (1 row) count ------- 63 (1 row) count ------- 113 (1 row) count ------- 74 (1 row) count ------- 61 (1 row) count ------- 2 (1 row) count ------- 194 (1 row) count ------- 150 (1 row) count ------- 54 (1 row) count ------- 101 (1 row) count ------- 171 (1 row) count ------- 36 (1 row) count ------- 164 (1 row) count ------- 120 (1 row) count ------- 72 (1 row) count ------- 196 (1 row) count ------- 80 (1 row) count ------- 144 (1 row) count ------- 146 (1 row) count ------- 55 (1 row) count ------- 216 (1 row) count ------- 87 (1 row) count ------- 244 (1 row) count ------- 53 (1 row) count ------- 181 (1 row) count ------- 148 (1 row) count ------- 147 (1 row) count ------- 148 (1 row) count ------- 115 (1 row) count ------- 116 (1 row) count ------- 27 (1 row) count ------- 38 (1 row) count ------- 150 (1 row) count ------- 34 (1 row) count ------- 179 (1 row) count ------- 196 (1 row) count ------- 97 (1 row) count ------- 132 (1 row) count ------- 35 (1 row) count ------- 160 (1 row) count ------- 138 (1 row) count ------- 74 (1 row) count ------- 77 (1 row) count ------- 62 (1 row) count ------- 125 (1 row) count ------- 179 (1 row) count ------- 55 (1 row) count ------- 124 (1 row) count ------- 23 (1 row) count ------- 202 (1 row) count ------- 92 (1 row) count ------- 7 (1 row) count ------- 100 (1 row) count ------- 100 (1 row) count ------- 142 (1 row) count ------- 138 (1 row) count ------- 128 (1 row) count ------- 355 (1 row) count ------- 120 (1 row) count ------- 125 (1 row) count ------- 58 (1 row) count ------- 153 (1 row) count ------- 166 (1 row) count ------- 41 (1 row) count ------- 193 (1 row) count ------- 185 (1 row) count ------- 7 (1 row) count ------- 61 (1 row) count ------- 140 (1 row) count ------- 54 (1 row) count ------- 168 (1 row) count ------- 68 (1 row) count ------- 62 (1 row) count ------- 45 (1 row) count ------- 115 (1 row) count ------- 234 (1 row) count ------- 360 (1 row) count ------- 67 (1 row) count ------- 117 (1 row) count ------- 193 (1 row) count ------- 172 (1 row) count ------- 14 (1 row) count ------- 167 (1 row) count ------- 107 (1 row) count ------- 2 (1 row) count ------- 39 (1 row) count ------- 96 (1 row) count ------- 182 (1 row) count ------- 175 (1 row) count ------- 67 (1 row) count ------- 134 (1 row) count ------- 205 (1 row) count ------- 56 (1 row) count ------- 42 (1 row) count ------- 158 (1 row) count ------- 139 (1 row) count ------- 83 (1 row) count ------- 340 (1 row) count ------- 176 (1 row) count ------- 58 (1 row) count ------- 140 (1 row) count ------- 109 (1 row) count ------- 188 (1 row) count ------- 122 (1 row) count ------- 69 (1 row) count ------- 105 (1 row) count ------- 41 (1 row) count ------- 147 (1 row) count ------- 104 (1 row) count ------- 123 (1 row) count ------- 232 (1 row) count ------- 175 (1 row) count ------- 84 (1 row) count ------- 209 (1 row) count ------- 181 (1 row) count ------- 190 (1 row) count ------- 28 (1 row) count ------- 202 (1 row) count ------- 228 (1 row) count ------- 74 (1 row) count ------- 191 (1 row) count ------- 58 (1 row) count ------- 14 (1 row) count ------- 35 (1 row) count ------- 162 (1 row) count ------- 50 (1 row) count ------- 67 (1 row) count ------- 174 (1 row) count ------- 189 (1 row) count ------- 234 (1 row) count ------- 127 (1 row) count ------- 162 (1 row) count ------- 145 (1 row) count ------- 74 (1 row) count ------- 155 (1 row) count ------- 88 (1 row) count ------- 139 (1 row) count ------- 110 (1 row) count ------- 50 (1 row) count ------- 102 (1 row) count ------- 26 (1 row) count ------- 24 (1 row) count ------- 115 (1 row) count ------- 90 (1 row) count ------- 172 (1 row) count ------- 102 (1 row) count ------- 78 (1 row) count ------- 172 (1 row) count ------- 61 (1 row) count ------- 46 (1 row) count ------- 5 (1 row) count ------- 76 (1 row) count ------- 83 (1 row) count ------- 152 (1 row) count ------- 148 (1 row) count ------- 60 (1 row) count ------- 179 (1 row) count ------- 169 (1 row) count ------- 289 (1 row) count ------- 158 (1 row) count ------- 56 (1 row) count ------- 240 (1 row) count ------- 47 (1 row) count ------- 238 (1 row) count ------- 92 (1 row) count ------- 84 (1 row) count ------- 92 (1 row) count ------- 6 (1 row) count ------- 211 (1 row) count ------- 84 (1 row) count ------- 166 (1 row) count ------- 144 (1 row) count ------- 196 (1 row) count ------- 44 (1 row) count ------- 81 (1 row) count ------- 107 (1 row) count ------- 107 (1 row) count ------- 72 (1 row) count ------- 133 (1 row) count ------- 183 (1 row) count ------- 66 (1 row) count ------- 255 (1 row) count ------- 67 (1 row) count ------- 118 (1 row) count ------- 262 (1 row) count ------- 183 (1 row) count ------- 250 (1 row) count ------- 201 (1 row) count ------- 130 (1 row) count ------- 152 (1 row) count ------- 223 (1 row) count ------- 32 (1 row) count ------- 117 (1 row) count ------- 67 (1 row) count ------- 94 (1 row) count ------- 216 (1 row) count ------- 229 (1 row) count ------- 172 (1 row) count ------- 225 (1 row) count ------- 181 (1 row) count ------- 1 (1 row) count ------- 155 (1 row) count ------- 188 (1 row) count ------- 191 (1 row) count ------- 109 (1 row) count ------- 112 (1 row) count ------- 88 (1 row) count ------- 108 (1 row) count ------- 154 (1 row) count ------- 173 (1 row) count ------- 144 (1 row) count ------- 106 (1 row) count ------- 2 (1 row) count ------- 57 (1 row) count ------- 50 (1 row) count ------- 31 (1 row) count ------- 41 (1 row) count ------- 153 (1 row) count ------- 66 (1 row) count ------- 66 (1 row) count ------- 110 (1 row) count ------- 75 (1 row) count ------- 123 (1 row) count ------- 131 (1 row) count ------- 50 (1 row) count ------- 127 (1 row) count ------- 163 (1 row) count ------- 44 (1 row) count ------- 76 (1 row) count ------- 161 (1 row) count ------- 125 (1 row) count ------- 155 (1 row) count ------- 85 (1 row) count ------- 49 (1 row) count ------- 109 (1 row) count ------- 110 (1 row) count ------- 200 (1 row) count ------- 55 (1 row) count ------- 181 (1 row) count ------- 110 (1 row) count ------- 187 (1 row) count ------- 87 (1 row) count ------- 85 (1 row) count ------- 10 (1 row) count ------- 236 (1 row) count ------- 26 (1 row) count ------- 240 (1 row) count ------- 136 (1 row) count ------- 106 (1 row) count ------- 77 (1 row) count ------- 131 (1 row) count ------- 167 (1 row) count ------- 216 (1 row) count ------- 170 (1 row) count ------- 172 (1 row) count ------- 133 (1 row) count ------- 132 (1 row) count ------- 241 (1 row) count ------- 94 (1 row) count ------- 155 (1 row) count ------- 130 (1 row) count ------- 70 (1 row) count ------- 140 (1 row) count ------- 88 (1 row) count ------- 95 (1 row) count ------- 201 (1 row) count ------- 115 (1 row) count ------- 160 (1 row) count ------- 39 (1 row) count ------- 13 (1 row) count ------- 269 (1 row) count ------- 42 (1 row) count ------- 239 (1 row) count ------- 122 (1 row) count ------- 238 (1 row) count ------- 120 (1 row) count ------- 45 (1 row) count ------- 172 (1 row) count ------- 57 (1 row) count ------- 161 (1 row) count ------- 194 (1 row) count ------- 124 (1 row) count ------- 168 (1 row) count ------- 126 (1 row) count ------- 153 (1 row) count ------- 49 (1 row) count ------- 178 (1 row) count ------- 167 (1 row) count ------- 101 (1 row) count ------- 19 (1 row) count ------- 143 (1 row) count ------- 172 (1 row) count ------- 159 (1 row) count ------- 225 (1 row) count ------- 18 (1 row) count ------- 73 (1 row) count ------- 49 (1 row) count ------- 167 (1 row) count ------- 93 (1 row) count ------- 3 (1 row) count ------- 203 (1 row) count ------- 93 (1 row) count ------- 91 (1 row) count ------- 122 (1 row) count ------- 186 (1 row) count ------- 145 (1 row) count ------- 18 (1 row) count ------- 340 (1 row) count ------- 172 (1 row) count ------- 180 (1 row) count ------- 209 (1 row) count ------- 90 (1 row) count ------- 107 (1 row) count ------- 73 (1 row) count ------- 71 (1 row) count ------- 32 (1 row) count ------- 107 (1 row) count ------- 13 (1 row) count ------- 102 (1 row) count ------- 37 (1 row) count ------- 47 (1 row) count ------- 139 (1 row) count ------- 20 (1 row) count ------- 111 (1 row) count ------- 81 (1 row) count ------- 153 (1 row) count ------- 228 (1 row) count ------- 108 (1 row) count ------- 134 (1 row) count ------- 28 (1 row) count ------- 26 (1 row) count ------- 91 (1 row) count ------- 94 (1 row) count ------- 20 (1 row) count ------- 84 (1 row) count ------- 209 (1 row) count ------- 84 (1 row) count ------- 92 (1 row) count ------- 223 (1 row) count ------- 70 (1 row) count ------- 257 (1 row) count ------- 28 (1 row) count ------- 43 (1 row) count ------- 185 (1 row) count ------- 18 (1 row) count ------- 94 (1 row) count ------- 30 (1 row) count ------- 42 (1 row) count ------- 21 (1 row) count ------- 342 (1 row) count ------- 9 (1 row) count ------- 135 (1 row) count ------- 238 (1 row) count ------- 63 (1 row) count ------- 206 (1 row) count ------- 80 (1 row) count ------- 176 (1 row) count ------- 110 (1 row) count ------- 49 (1 row) count ------- 179 (1 row) count ------- 230 (1 row) count ------- 148 (1 row) count ------- 28 (1 row) count ------- 59 (1 row) count ------- 139 (1 row) count ------- 155 (1 row) count ------- 70 (1 row) count ------- 151 (1 row) count ------- 131 (1 row) count ------- 43 (1 row) count ------- 106 (1 row) count ------- 135 (1 row) count ------- 214 (1 row) count ------- 90 (1 row) count ------- 28 (1 row) count ------- 10 (1 row) count ------- 43 (1 row) count ------- 125 (1 row) count ------- 184 (1 row) count ------- 140 (1 row) count ------- 90 (1 row) count ------- 137 (1 row) count ------- 121 (1 row) count ------- 150 (1 row) count ------- 55 (1 row) count ------- 24 (1 row) count ------- 177 (1 row) count ------- 6 (1 row) count ------- 227 (1 row) count ------- 43 (1 row) count ------- 95 (1 row) count ------- 96 (1 row) count ------- 229 (1 row) count ------- 113 (1 row) count ------- 153 (1 row) count ------- 118 (1 row) count ------- 76 (1 row) count ------- 245 (1 row) count ------- 202 (1 row) count ------- 131 (1 row) count ------- 73 (1 row) count ------- 120 (1 row) count ------- 62 (1 row) count ------- 172 (1 row) count ------- 155 (1 row) count ------- 238 (1 row) count ------- 28 (1 row) count ------- 183 (1 row) count ------- 184 (1 row) count ------- 192 (1 row) count ------- 115 (1 row) count ------- 62 (1 row) count ------- 93 (1 row) count ------- 132 (1 row) count ------- 200 (1 row) count ------- 205 (1 row) count ------- 225 (1 row) count ------- 178 (1 row) count ------- 73 (1 row) count ------- 71 (1 row) count ------- 53 (1 row) count ------- 59 (1 row) count ------- 200 (1 row) count ------- 116 (1 row) count ------- 146 (1 row) count ------- 159 (1 row) count ------- 186 (1 row) count ------- 89 (1 row) count ------- 97 (1 row) count ------- 99 (1 row) count ------- 94 (1 row) count ------- 131 (1 row) count ------- 14 (1 row) count ------- 184 (1 row) count ------- 75 (1 row) count ------- 124 (1 row) count ------- 95 (1 row) count ------- 136 (1 row) count ------- 123 (1 row) count ------- 60 (1 row) count ------- 104 (1 row) count ------- 23 (1 row) count ------- 15 (1 row) count ------- 134 (1 row) count ------- 163 (1 row) count ------- 183 (1 row) count ------- 32 (1 row) count ------- 144 (1 row) count ------- 19 (1 row) count ------- 118 (1 row) count ------- 101 (1 row) count ------- 231 (1 row) count ------- 5 (1 row) count ------- 109 (1 row) count ------- 193 (1 row) count ------- 113 (1 row) count ------- 129 (1 row) count ------- 76 (1 row) count ------- 257 (1 row) count ------- 53 (1 row) count ------- 25 (1 row) count ------- 25 (1 row) count ------- 106 (1 row) count ------- 72 (1 row) count ------- 111 (1 row) count ------- 108 (1 row) count ------- 90 (1 row) count ------- 39 (1 row) count ------- 141 (1 row) count ------- 35 (1 row) count ------- 109 (1 row) count ------- 83 (1 row) count ------- 57 (1 row) count ------- 45 (1 row) count ------- 83 (1 row) count ------- 161 (1 row) count ------- 11 (1 row) count ------- 121 (1 row) count ------- 270 (1 row) count ------- 4 (1 row) count ------- 6 (1 row) count ------- 244 (1 row) count ------- 68 (1 row) count ------- 18 (1 row) count ------- 138 (1 row) count ------- 54 (1 row) count ------- 112 (1 row) count ------- 26 (1 row) count ------- 246 (1 row) count ------- 101 (1 row) count ------- 64 (1 row) count ------- 120 (1 row) count ------- 67 (1 row) count ------- 49 (1 row) count ------- 164 (1 row) count ------- 29 (1 row) count ------- 113 (1 row) count ------- 83 (1 row) count ------- 174 (1 row) count ------- 91 (1 row) count ------- 105 (1 row) count ------- 231 (1 row) count ------- 220 (1 row) count ------- 108 (1 row) count ------- 124 (1 row) count ------- 100 (1 row) count ------- 101 (1 row) count ------- 14 (1 row) count ------- 131 (1 row) count ------- 114 (1 row) count ------- 118 (1 row) count ------- 158 (1 row) count ------- 120 (1 row) count ------- 203 (1 row) count ------- 98 (1 row) count ------- 193 (1 row) count ------- 95 (1 row) count ------- 188 (1 row) count ------- 130 (1 row) count ------- 142 (1 row) count ------- 117 (1 row) count ------- 203 (1 row) count ------- 35 (1 row) count ------- 35 (1 row) count ------- 167 (1 row) count ------- 59 (1 row) count ------- 212 (1 row) count ------- 128 (1 row) count ------- 54 (1 row) count ------- 139 (1 row) count ------- 97 (1 row) count ------- 29 (1 row) count ------- 154 (1 row) count ------- 81 (1 row) count ------- 143 (1 row) count ------- 56 (1 row) count ------- 191 (1 row) count ------- 16 (1 row) count ------- 39 (1 row) count ------- 202 (1 row) count ------- 74 (1 row) count ------- 163 (1 row) count ------- 277 (1 row) count ------- 79 (1 row) count ------- 30 (1 row) count ------- 86 (1 row) count ------- 111 (1 row) count ------- 99 (1 row) count ------- 122 (1 row) count ------- 155 (1 row) count ------- 269 (1 row) count ------- 168 (1 row) count ------- 231 (1 row) count ------- 116 (1 row) count ------- 213 (1 row) count ------- 162 (1 row) count ------- 85 (1 row) count ------- 106 (1 row) count ------- 69 (1 row) count ------- 79 (1 row) count ------- 113 (1 row) count ------- 108 (1 row) count ------- 148 (1 row) count ------- 8 (1 row) count ------- 82 (1 row) count ------- 38 (1 row) count ------- 143 (1 row) count ------- 21 (1 row) count ------- 63 (1 row) count ------- 51 (1 row) count ------- 92 (1 row) count ------- 126 (1 row) count ------- 55 (1 row) count ------- 248 (1 row) count ------- 52 (1 row) count ------- 159 (1 row) count ------- 104 (1 row) count ------- 255 (1 row) count ------- 67 (1 row) count ------- 124 (1 row) count ------- 81 (1 row) count ------- 92 (1 row) count ------- 53 (1 row) count ------- 121 (1 row) count ------- 208 (1 row) count ------- 103 (1 row) count ------- 231 (1 row) count ------- 94 (1 row) count ------- 239 (1 row) count ------- 68 (1 row) count ------- 108 (1 row) count ------- 160 (1 row) count ------- 1 (1 row) count ------- 190 (1 row) count ------- 262 (1 row) count ------- 63 (1 row) count ------- 36 (1 row) count ------- 51 (1 row) count ------- 55 (1 row) count ------- 55 (1 row) count ------- 83 (1 row) count ------- 68 (1 row) count ------- 85 (1 row) count ------- 41 (1 row) count ------- 62 (1 row) count ------- 55 (1 row) count ------- 73 (1 row) count ------- 100 (1 row) count ------- 157 (1 row) count ------- 134 (1 row) count ------- 139 (1 row) count ------- 34 (1 row) count ------- 117 (1 row) count ------- 114 (1 row) count ------- 88 (1 row) count ------- 103 (1 row) count ------- 184 (1 row) count ------- 173 (1 row) count ------- 11 (1 row) count ------- 161 (1 row) count ------- 86 (1 row) count ------- 125 (1 row) count ------- 220 (1 row) count ------- 78 (1 row) count ------- 190 (1 row) count ------- 115 (1 row) count ------- 82 (1 row) count ------- 357 (1 row) count ------- 19 (1 row) count ------- 116 (1 row) count ------- 39 (1 row) count ------- 73 (1 row) count ------- 96 (1 row) count ------- 11 (1 row) count ------- 290 (1 row) count ------- 115 (1 row) count ------- 124 (1 row) count ------- 110 (1 row) count ------- 191 (1 row) count ------- 12 (1 row) count ------- 214 (1 row) count ------- 209 (1 row) count ------- 75 (1 row) count ------- 169 (1 row) count ------- 164 (1 row) count ------- 215 (1 row) count ------- 115 (1 row) count ------- 223 (1 row) count ------- 179 (1 row) count ------- 61 (1 row) count ------- 57 (1 row) count ------- 39 (1 row) count ------- 165 (1 row) count ------- 42 (1 row) count ------- 95 (1 row) count ------- 360 (1 row) count ------- 169 (1 row) count ------- 129 (1 row) count ------- 175 (1 row) count ------- 55 (1 row) count ------- 115 (1 row) count ------- 220 (1 row) count ------- 138 (1 row) count ------- 133 (1 row) count ------- 120 (1 row) count ------- 238 (1 row) count ------- 173 (1 row) count ------- 120 (1 row) count ------- 129 (1 row) count ------- 165 (1 row) count ------- 81 (1 row) count ------- 100 (1 row) count ------- 240 (1 row) count ------- 174 (1 row) count ------- 177 (1 row) count ------- 178 (1 row) count ------- 131 (1 row) count ------- 101 (1 row) count ------- 184 (1 row) count ------- 226 (1 row) count ------- 32 (1 row) count ------- 158 (1 row) count ------- 237 (1 row) count ------- 93 (1 row) count ------- 191 (1 row) count ------- 170 (1 row) count ------- 158 (1 row) count ------- 57 (1 row) count ------- 73 (1 row) count ------- 179 (1 row) count ------- 84 (1 row) count ------- 98 (1 row) count ------- 189 (1 row) count ------- 178 (1 row) count ------- 75 (1 row) count ------- 35 (1 row) count ------- 78 (1 row) count ------- 76 (1 row) count ------- 183 (1 row) count ------- 63 (1 row) count ------- 119 (1 row) count ------- 164 (1 row) count ------- 91 (1 row) count ------- 127 (1 row) count ------- 162 (1 row) count ------- 224 (1 row) count ------- 367 (1 row) count ------- 188 (1 row) count ------- 245 (1 row) count ------- 147 (1 row) count ------- 125 (1 row) count ------- 120 (1 row) count ------- 111 (1 row) count ------- 153 (1 row) count ------- 109 (1 row) count ------- 126 (1 row) count ------- 132 (1 row) count ------- 95 (1 row) count ------- 126 (1 row) count ------- 249 (1 row) count ------- 122 (1 row) count ------- 195 (1 row) count ------- 130 (1 row) count ------- 327 (1 row) count ------- 41 (1 row) count ------- 38 (1 row) count ------- 122 (1 row) count ------- 66 (1 row) count ------- 215 (1 row) count ------- 224 (1 row) count ------- 146 (1 row) count ------- 145 (1 row) count ------- 45 (1 row) count ------- 75 (1 row) count ------- 186 (1 row) count ------- 193 (1 row) count ------- 73 (1 row) count ------- 140 (1 row) count ------- 21 (1 row) count ------- 84 (1 row) count ------- 107 (1 row) count ------- 34 (1 row) count ------- 167 (1 row) count ------- 130 (1 row) count ------- 97 (1 row) count ------- 13 (1 row) count ------- 89 (1 row) count ------- 45 (1 row) count ------- 147 (1 row) count ------- 127 (1 row) count ------- 115 (1 row) count ------- 256 (1 row) count ------- 57 (1 row) count ------- 160 (1 row) count ------- 140 (1 row) count ------- 55 (1 row) count ------- 193 (1 row) count ------- 174 (1 row) count ------- 85 (1 row) count ------- 72 (1 row) count ------- 36 (1 row) count ------- 160 (1 row) count ------- 36 (1 row) count ------- 157 (1 row) count ------- 258 (1 row) count ------- 213 (1 row) count ------- 112 (1 row) count ------- 193 (1 row) count ------- 78 (1 row) count ------- 95 (1 row) count ------- 96 (1 row) count ------- 97 (1 row) count ------- 265 (1 row) count ------- 223 (1 row) count ------- 160 (1 row) count ------- 168 (1 row) count ------- 94 (1 row) count ------- 13 (1 row) count ------- 149 (1 row) count ------- 101 (1 row) count ------- 201 (1 row) count ------- 88 (1 row) count ------- 119 (1 row) count ------- 129 (1 row) count ------- 47 (1 row) count ------- 78 (1 row) count ------- 235 (1 row) count ------- 90 (1 row) count ------- 141 (1 row) count ------- 75 (1 row) count ------- 177 (1 row) count ------- 305 (1 row) count ------- 93 (1 row) count ------- 115 (1 row) count ------- 109 (1 row) count ------- 287 (1 row) count ------- 157 (1 row) count ------- 175 (1 row) count ------- 139 (1 row) count ------- 156 (1 row) count ------- 147 (1 row) count ------- 26 (1 row) count ------- 65 (1 row) count ------- 62 (1 row) count ------- 64 (1 row) count ------- 130 (1 row) count ------- 177 (1 row) count ------- 162 (1 row) count ------- 187 (1 row) count ------- 48 (1 row) count ------- 40 (1 row) count ------- 225 (1 row) count ------- 189 (1 row) count ------- 49 (1 row) count ------- 257 (1 row) count ------- 46 (1 row) count ------- 112 (1 row) count ------- 85 (1 row) count ------- 65 (1 row) count ------- 166 (1 row) count ------- 151 (1 row) count ------- 172 (1 row) count ------- 95 (1 row) count ------- 188 (1 row) count ------- 169 (1 row) count ------- 86 (1 row) count ------- 179 (1 row) count ------- 69 (1 row) count ------- 157 (1 row) count ------- 149 (1 row) count ------- 60 (1 row) count ------- 156 (1 row) count ------- 43 (1 row) count ------- 39 (1 row) count ------- 93 (1 row) count ------- 118 (1 row) count ------- 67 (1 row) count ------- 102 (1 row) count ------- 110 (1 row) count ------- 113 (1 row) count ------- 20 (1 row) count ------- 227 (1 row) count ------- 143 (1 row) count ------- 165 (1 row) count ------- 214 (1 row) count ------- 154 (1 row) count ------- 84 (1 row) count ------- 85 (1 row) count ------- 38 (1 row) count ------- 127 (1 row) count ------- 236 (1 row) count ------- 103 (1 row) count ------- 191 (1 row) count ------- 95 (1 row) count ------- 195 (1 row) count ------- 60 (1 row) count ------- 103 (1 row) count ------- 19 (1 row) count ------- 23 (1 row) count ------- 103 (1 row) count ------- 98 (1 row) count ------- 20 (1 row) count ------- 104 (1 row) count ------- 57 (1 row) count ------- 136 (1 row) count ------- 93 (1 row) count ------- 62 (1 row) count ------- 30 (1 row) count ------- 67 (1 row) count ------- 16 (1 row) count ------- 128 (1 row) count ------- 64 (1 row) count ------- 103 (1 row) count ------- 78 (1 row) count ------- 87 (1 row) count ------- 68 (1 row) count ------- 71 (1 row) count ------- 216 (1 row) count ------- 60 (1 row) count ------- 38 (1 row) count ------- 247 (1 row) count ------- 53 (1 row) count ------- 167 (1 row) count ------- 195 (1 row) count ------- 95 (1 row) count ------- 119 (1 row) count ------- 338 (1 row) count ------- 142 (1 row) count ------- 93 (1 row) count ------- 51 (1 row) count ------- 189 (1 row) count ------- 84 (1 row) count ------- 123 (1 row) count ------- 61 (1 row) count ------- 50 (1 row) count ------- 75 (1 row) count ------- 202 (1 row) count ------- 225 (1 row) count ------- 138 (1 row) count ------- 81 (1 row) count ------- 137 (1 row) count ------- 102 (1 row) count ------- 6 (1 row) count ------- 74 (1 row) count ------- 122 (1 row) count ------- 151 (1 row) count ------- 68 (1 row) count ------- 205 (1 row) count ------- 86 (1 row) count ------- 271 (1 row) count ------- 201 (1 row) count ------- 185 (1 row) count ------- 9 (1 row) count ------- 159 (1 row) count ------- 7 (1 row) count ------- 159 (1 row) count ------- 75 (1 row) count ------- 332 (1 row) count ------- 73 (1 row) count ------- 54 (1 row) count ------- 133 (1 row) count ------- 179 (1 row) count ------- 26 (1 row) count ------- 110 (1 row) count ------- 191 (1 row) count ------- 97 (1 row) count ------- 303 (1 row) count ------- 119 (1 row) count ------- 222 (1 row) count ------- 133 (1 row) count ------- 122 (1 row) count ------- 111 (1 row) count ------- 122 (1 row) count ------- 183 (1 row) count ------- 134 (1 row) count ------- 155 (1 row) count ------- 91 (1 row) count ------- 175 (1 row) count ------- 88 (1 row) count ------- 155 (1 row) count ------- 61 (1 row) count ------- 83 (1 row) count ------- 229 (1 row) count ------- 14 (1 row) count ------- 154 (1 row) count ------- 226 (1 row) count ------- 107 (1 row) count ------- 232 (1 row) count ------- 117 (1 row) count ------- 98 (1 row) count ------- 169 (1 row) count ------- 229 (1 row) count ------- 56 (1 row) count ------- 186 (1 row) count ------- 44 (1 row) count ------- 207 (1 row) count ------- 68 (1 row) count ------- 161 (1 row) count ------- 307 (1 row) count ------- 215 (1 row) count ------- 300 (1 row) count ------- 306 (1 row) count ------- 135 (1 row) count ------- 173 (1 row) count ------- 42 (1 row) count ------- 42 (1 row) count ------- 186 (1 row) count ------- 77 (1 row) count ------- 110 (1 row) count ------- 131 (1 row) count ------- 90 (1 row) count ------- 75 (1 row) count ------- 169 (1 row) count ------- 77 (1 row) count ------- 133 (1 row) count ------- 117 (1 row) count ------- 68 (1 row) count ------- 31 (1 row) count ------- 226 (1 row) count ------- 110 (1 row) count ------- 66 (1 row) count ------- 111 (1 row) count ------- 128 (1 row) count ------- 87 (1 row) count ------- 95 (1 row) count ------- 21 (1 row) count ------- 48 (1 row) count ------- 88 (1 row) count ------- 104 (1 row) count ------- 180 (1 row) count ------- 31 (1 row) count ------- 106 (1 row) count ------- 66 (1 row) count ------- 88 (1 row) count ------- 162 (1 row) count ------- 51 (1 row) count ------- 234 (1 row) count ------- 90 (1 row) count ------- 31 (1 row) count ------- 7 (1 row) count ------- 75 (1 row) count ------- 126 (1 row) count ------- 90 (1 row) count ------- 133 (1 row) count ------- 70 (1 row) count ------- 80 (1 row) count ------- 191 (1 row) count ------- 45 (1 row) count ------- 64 (1 row) count ------- 92 (1 row) count ------- 229 (1 row) count ------- 118 (1 row) count ------- 201 (1 row) count ------- 117 (1 row) count ------- 144 (1 row) count ------- 137 (1 row) count ------- 17 (1 row) count ------- 161 (1 row) count ------- 113 (1 row) count ------- 42 (1 row) count ------- 232 (1 row) count ------- 102 (1 row) count ------- 116 (1 row) count ------- 7 (1 row) count ------- 140 (1 row) count ------- 54 (1 row) count ------- 142 (1 row) count ------- 121 (1 row) count ------- 94 (1 row) count ------- 57 (1 row) count ------- 235 (1 row) count ------- 296 (1 row) count ------- 122 (1 row) count ------- 131 (1 row) count ------- 32 (1 row) count ------- 39 (1 row) count ------- 191 (1 row) count ------- 51 (1 row) count ------- 95 (1 row) count ------- 180 (1 row) count ------- 186 (1 row) count ------- 228 (1 row) count ------- 54 (1 row) count ------- 121 (1 row) count ------- 30 (1 row) count ------- 45 (1 row) count ------- 97 (1 row) count ------- 183 (1 row) count ------- 254 (1 row) count ------- 165 (1 row) count ------- 73 (1 row) count ------- 20 (1 row) count ------- 166 (1 row) count ------- 40 (1 row) count ------- 111 (1 row) count ------- 269 (1 row) count ------- 149 (1 row) count ------- 122 (1 row) count ------- 259 (1 row) count ------- 97 (1 row) count ------- 181 (1 row) count ------- 140 (1 row) count ------- 63 (1 row) count ------- 1 (1 row) count ------- 231 (1 row) count ------- 207 (1 row) count ------- 131 (1 row) count ------- 53 (1 row) count ------- 91 (1 row) count ------- 297 (1 row) count ------- 214 (1 row) count ------- 86 (1 row) count ------- 95 (1 row) count ------- 181 (1 row) count ------- 76 (1 row) count ------- 222 (1 row) count ------- 81 (1 row) count ------- 122 (1 row) count ------- 131 (1 row) count ------- 114 (1 row) count ------- 99 (1 row) count ------- 207 (1 row) count ------- 15 (1 row) count ------- 61 (1 row) count ------- 69 (1 row) count ------- 158 (1 row) count ------- 202 (1 row) count ------- 75 (1 row) count ------- 155 (1 row) count ------- 104 (1 row) count ------- 30 (1 row) count ------- 126 (1 row) count ------- 76 (1 row) count ------- 34 (1 row) count ------- 181 (1 row) count ------- 62 (1 row) count ------- 48 (1 row) count ------- 103 (1 row) count ------- 17 (1 row) count ------- 102 (1 row) count ------- 84 (1 row) count ------- 47 (1 row) count ------- 226 (1 row) count ------- 140 (1 row) count ------- 108 (1 row) count ------- 168 (1 row) count ------- 39 (1 row) count ------- 229 (1 row) count ------- 312 (1 row) count ------- 82 (1 row) count ------- 79 (1 row) count ------- 122 (1 row) count ------- 172 (1 row) count ------- 57 (1 row) count ------- 198 (1 row) count ------- 134 (1 row) count ------- 194 (1 row) count ------- 87 (1 row) count ------- 43 (1 row) count ------- 87 (1 row) count ------- 68 (1 row) count ------- 78 (1 row) count ------- 189 (1 row) count ------- 216 (1 row) count ------- 95 (1 row) count ------- 202 (1 row) count ------- 101 (1 row) count ------- 25 (1 row) count ------- 110 (1 row) count ------- 45 (1 row) count ------- 79 (1 row) count ------- 138 (1 row) count ------- 116 (1 row) count ------- 161 (1 row) count ------- 59 (1 row) count ------- 182 (1 row) count ------- 99 (1 row) count ------- 79 (1 row) count ------- 197 (1 row) count ------- 58 (1 row) count ------- 49 (1 row) count ------- 163 (1 row) count ------- 109 (1 row) count ------- 126 (1 row) count ------- 154 (1 row) count ------- 77 (1 row) count ------- 105 (1 row) count ------- 37 (1 row) count ------- 42 (1 row) count ------- 63 (1 row) count ------- 238 (1 row) count ------- 103 (1 row) count ------- 109 (1 row) count ------- 40 (1 row) count ------- 42 (1 row) count ------- 177 (1 row) count ------- 41 (1 row) count ------- 36 (1 row) count ------- 120 (1 row) count ------- 196 (1 row) count ------- 115 (1 row) count ------- 118 (1 row) count ------- 29 (1 row) count ------- 60 (1 row) count ------- 194 (1 row) count ------- 50 (1 row) count ------- 0 (1 row) count ------- 150 (1 row) count ------- 282 (1 row) count ------- 124 (1 row) count ------- 49 (1 row) count ------- 212 (1 row) count ------- 38 (1 row) count ------- 69 (1 row) count ------- 130 (1 row) count ------- 92 (1 row) count ------- 115 (1 row) count ------- 227 (1 row) count ------- 108 (1 row) count ------- 103 (1 row) count ------- 54 (1 row) count ------- 196 (1 row) count ------- 96 (1 row) count ------- 111 (1 row) count ------- 15 (1 row) count ------- 105 (1 row) count ------- 75 (1 row) count ------- 139 (1 row) count ------- 164 (1 row) count ------- 68 (1 row) count ------- 105 (1 row) count ------- 23 (1 row) count ------- 162 (1 row) count ------- 65 (1 row) count ------- 113 (1 row) count ------- 181 (1 row) count ------- 126 (1 row) count ------- 86 (1 row) count ------- 106 (1 row) count ------- 95 (1 row) count ------- 70 (1 row) count ------- 72 (1 row) count ------- 77 (1 row) count ------- 63 (1 row) count ------- 48 (1 row) count ------- 119 (1 row) count ------- 193 (1 row) count ------- 152 (1 row) count ------- 104 (1 row) count ------- 65 (1 row) count ------- 83 (1 row) count ------- 167 (1 row) count ------- 294 (1 row) count ------- 95 (1 row) count ------- 221 (1 row) count ------- 217 (1 row) count ------- 41 (1 row) count ------- 103 (1 row) count ------- 101 (1 row) count ------- 0 (1 row) count ------- 126 (1 row) count ------- 110 (1 row) count ------- 114 (1 row) count ------- 50 (1 row) count ------- 270 (1 row) count ------- 104 (1 row) count ------- 36 (1 row) count ------- 188 (1 row) count ------- 116 (1 row) count ------- 212 (1 row) count ------- 134 (1 row) count ------- 108 (1 row) count ------- 117 (1 row) count ------- 159 (1 row) count ------- 170 (1 row) count ------- 205 (1 row) count ------- 96 (1 row) count ------- 5 (1 row) count ------- 126 (1 row) count ------- 293 (1 row) count ------- 62 (1 row) count ------- 166 (1 row) count ------- 99 (1 row) count ------- 113 (1 row) count ------- 225 (1 row) count ------- 217 (1 row) count ------- 197 (1 row) count ------- 115 (1 row) count ------- 179 (1 row) count ------- 220 (1 row) count ------- 267 (1 row) count ------- 122 (1 row) count ------- 168 (1 row) count ------- 117 (1 row) count ------- 100 (1 row) count ------- 177 (1 row) count ------- 124 (1 row) count ------- 133 (1 row) count ------- 49 (1 row) count ------- 226 (1 row) count ------- 200 (1 row) count ------- 97 (1 row) count ------- 99 (1 row) count ------- 155 (1 row) count ------- 27 (1 row) count ------- 159 (1 row) count ------- 5 (1 row) count ------- 62 (1 row) count ------- 94 (1 row) count ------- 36 (1 row) count ------- 199 (1 row) count ------- 204 (1 row) count ------- 114 (1 row) count ------- 77 (1 row) count ------- 6 (1 row) count ------- 110 (1 row) count ------- 117 (1 row) count ------- 80 (1 row) count ------- 92 (1 row) count ------- 0 (1 row) count ------- 109 (1 row) count ------- 189 (1 row) count ------- 145 (1 row) count ------- 160 (1 row) count ------- 43 (1 row) count ------- 30 (1 row) count ------- 47 (1 row) count ------- 168 (1 row) count ------- 139 (1 row) count ------- 196 (1 row) count ------- 24 (1 row) count ------- 169 (1 row) count ------- 57 (1 row) count ------- 162 (1 row) count ------- 90 (1 row) count ------- 118 (1 row) count ------- 188 (1 row) count ------- 181 (1 row) count ------- 105 (1 row) count ------- 45 (1 row) count ------- 193 (1 row) count ------- 171 (1 row) count ------- 152 (1 row) count ------- 53 (1 row) count ------- 117 (1 row) count ------- 59 (1 row) count ------- 23 (1 row) count ------- 22 (1 row) count ------- 79 (1 row) count ------- 127 (1 row) count ------- 221 (1 row) count ------- 150 (1 row) count ------- 271 (1 row) count ------- 154 (1 row) count ------- 22 (1 row) count ------- 117 (1 row) count ------- 113 (1 row) count ------- 31 (1 row) count ------- 59 (1 row) count ------- 66 (1 row) count ------- 35 (1 row) count ------- 95 (1 row) count ------- 61 (1 row) count ------- 158 (1 row) count ------- 18 (1 row) count ------- 125 (1 row) count ------- 69 (1 row) count ------- 112 (1 row) count ------- 127 (1 row) count ------- 223 (1 row) count ------- 199 (1 row) count ------- 121 (1 row) count ------- 127 (1 row) count ------- 241 (1 row) count ------- 121 (1 row) count ------- 3 (1 row) count ------- 103 (1 row) count ------- 73 (1 row) count ------- 0 (1 row) count ------- 74 (1 row) count ------- 110 (1 row) count ------- 89 (1 row) count ------- 105 (1 row) count ------- 189 (1 row) count ------- 75 (1 row) count ------- 121 (1 row) count ------- 145 (1 row) count ------- 188 (1 row) count ------- 40 (1 row) count ------- 47 (1 row) count ------- 27 (1 row) count ------- 239 (1 row) count ------- 67 (1 row) count ------- 13 (1 row) count ------- 79 (1 row) count ------- 176 (1 row) count ------- 64 (1 row) count ------- 97 (1 row) count ------- 134 (1 row) count ------- 111 (1 row) count ------- 145 (1 row) count ------- 53 (1 row) count ------- 43 (1 row) count ------- 55 (1 row) count ------- 219 (1 row) count ------- 55 (1 row) count ------- 203 (1 row) count ------- 148 (1 row) count ------- 79 (1 row) count ------- 28 (1 row) count ------- 88 (1 row) count ------- 120 (1 row) count ------- 108 (1 row) count ------- 90 (1 row) count ------- 120 (1 row) count ------- 92 (1 row) count ------- 156 (1 row) count ------- 189 (1 row) count ------- 137 (1 row) count ------- 35 (1 row) count ------- 233 (1 row) count ------- 216 (1 row) count ------- 71 (1 row) count ------- 17 (1 row) count ------- 112 (1 row) count ------- 5 (1 row) count ------- 73 (1 row) count ------- 92 (1 row) count ------- 97 (1 row) count ------- 99 (1 row) count ------- 156 (1 row) count ------- 131 (1 row) count ------- 8 (1 row) count ------- 162 (1 row) count ------- 165 (1 row) count ------- 11 (1 row) count ------- 52 (1 row) count ------- 220 (1 row) count ------- 100 (1 row) count ------- 117 (1 row) count ------- 46 (1 row) count ------- 110 (1 row) count ------- 22 (1 row) count ------- 23 (1 row) count ------- 236 (1 row) count ------- 232 (1 row) count ------- 21 (1 row) count ------- 318 (1 row) count ------- 52 (1 row) count ------- 72 (1 row) count ------- 89 (1 row) count ------- 22 (1 row) count ------- 104 (1 row) count ------- 171 (1 row) count ------- 238 (1 row) count ------- 82 (1 row) count ------- 53 (1 row) count ------- 117 (1 row) count ------- 229 (1 row) count ------- 74 (1 row) count ------- 52 (1 row) count ------- 23 (1 row) count ------- 129 (1 row) count ------- 9 (1 row) count ------- 69 (1 row) count ------- 15 (1 row) count ------- 162 (1 row) count ------- 120 (1 row) count ------- 60 (1 row) count ------- 29 (1 row) count ------- 198 (1 row) count ------- 193 (1 row) count ------- 68 (1 row) count ------- 65 (1 row) count ------- 16 (1 row) count ------- 122 (1 row) count ------- 80 (1 row) count ------- 131 (1 row) count ------- 118 (1 row) count ------- 245 (1 row) count ------- 113 (1 row) count ------- 24 (1 row) count ------- 189 (1 row) count ------- 118 (1 row) count ------- 58 (1 row) count ------- 161 (1 row) count ------- 22 (1 row) count ------- 141 (1 row) count ------- 186 (1 row) count ------- 166 (1 row) count ------- 71 (1 row) count ------- 80 (1 row) count ------- 133 (1 row) count ------- 165 (1 row) count ------- 104 (1 row) count ------- 296 (1 row) count ------- 106 (1 row) count ------- 51 (1 row) count ------- 125 (1 row) count ------- 136 (1 row) count ------- 125 (1 row) count ------- 79 (1 row) count ------- 100 (1 row) count ------- 137 (1 row) count ------- 89 (1 row) count ------- 241 (1 row) count ------- 49 (1 row) count ------- 79 (1 row) count ------- 92 (1 row) count ------- 22 (1 row) count ------- 173 (1 row) count ------- 66 (1 row) count ------- 206 (1 row) count ------- 104 (1 row) count ------- 117 (1 row) count ------- 97 (1 row) count ------- 34 (1 row) count ------- 89 (1 row) count ------- 38 (1 row) count ------- 51 (1 row) count ------- 148 (1 row) count ------- 150 (1 row) count ------- 56 (1 row) count ------- 142 (1 row) count ------- 55 (1 row) count ------- 183 (1 row) count ------- 129 (1 row) count ------- 114 (1 row) count ------- 133 (1 row) count ------- 103 (1 row) count ------- 82 (1 row) count ------- 165 (1 row) count ------- 195 (1 row) count ------- 60 (1 row) count ------- 57 (1 row) count ------- 48 (1 row) count ------- 218 (1 row) count ------- 70 (1 row) count ------- 102 (1 row) count ------- 146 (1 row) count ------- 25 (1 row) count ------- 146 (1 row) count ------- 181 (1 row) count ------- 120 (1 row) count ------- 63 (1 row) count ------- 361 (1 row) count ------- 133 (1 row) count ------- 240 (1 row) count ------- 194 (1 row) count ------- 90 (1 row) count ------- 83 (1 row) count ------- 234 (1 row) count ------- 56 (1 row) count ------- 87 (1 row) count ------- 72 (1 row) count ------- 146 (1 row) count ------- 53 (1 row) count ------- 128 (1 row) count ------- 49 (1 row) count ------- 136 (1 row) count ------- 133 (1 row) count ------- 198 (1 row) count ------- 236 (1 row) count ------- 82 (1 row) count ------- 178 (1 row) count ------- 89 (1 row) count ------- 170 (1 row) count ------- 29 (1 row) count ------- 118 (1 row) count ------- 69 (1 row) count ------- 148 (1 row) count ------- 234 (1 row) count ------- 39 (1 row) count ------- 26 (1 row) count ------- 80 (1 row) count ------- 98 (1 row) count ------- 88 (1 row) count ------- 8 (1 row) count ------- 109 (1 row) count ------- 2 (1 row) count ------- 96 (1 row) count ------- 164 (1 row) count ------- 31 (1 row) count ------- 173 (1 row) count ------- 169 (1 row) count ------- 152 (1 row) count ------- 165 (1 row) count ------- 227 (1 row) count ------- 32 (1 row) count ------- 196 (1 row) count ------- 35 (1 row) count ------- 91 (1 row) count ------- 134 (1 row) count ------- 221 (1 row) count ------- 95 (1 row) count ------- 18 (1 row) count ------- 42 (1 row) count ------- 160 (1 row) count ------- 105 (1 row) count ------- 165 (1 row) count ------- 78 (1 row) count ------- 194 (1 row) count ------- 111 (1 row) count ------- 152 (1 row) count ------- 89 (1 row) count ------- 46 (1 row) count ------- 108 (1 row) count ------- 13 (1 row) count ------- 72 (1 row) count ------- 65 (1 row) count ------- 66 (1 row) count ------- 82 (1 row) count ------- 8 (1 row) count ------- 187 (1 row) count ------- 100 (1 row) count ------- 97 (1 row) count ------- 185 (1 row) count ------- 33 (1 row) count ------- 197 (1 row) count ------- 183 (1 row) count ------- 26 (1 row) count ------- 189 (1 row) count ------- 77 (1 row) count ------- 16 (1 row) count ------- 22 (1 row) count ------- 165 (1 row) count ------- 4 (1 row) count ------- 144 (1 row) count ------- 226 (1 row) count ------- 39 (1 row) count ------- 263 (1 row) count ------- 108 (1 row) count ------- 148 (1 row) count ------- 78 (1 row) count ------- 137 (1 row) count ------- 27 (1 row) count ------- 132 (1 row) count ------- 96 (1 row) count ------- 176 (1 row) count ------- 52 (1 row) count ------- 211 (1 row) count ------- 171 (1 row) count ------- 80 (1 row) count ------- 104 (1 row) count ------- 103 (1 row) count ------- 327 (1 row) count ------- 91 (1 row) count ------- 20 (1 row) count ------- 84 (1 row) count ------- 40 (1 row) count ------- 198 (1 row) count ------- 184 (1 row) count ------- 81 (1 row) count ------- 178 (1 row) count ------- 72 (1 row) count ------- 45 (1 row) count ------- 221 (1 row) count ------- 193 (1 row) count ------- 101 (1 row) count ------- 283 (1 row) count ------- 104 (1 row) count ------- 78 (1 row) count ------- 36 (1 row) count ------- 197 (1 row) count ------- 52 (1 row) count ------- 131 (1 row) count ------- 138 (1 row) count ------- 2 (1 row) count ------- 233 (1 row) count ------- 93 (1 row) count ------- 86 (1 row) count ------- 60 (1 row) count ------- 130 (1 row) count ------- 229 (1 row) count ------- 167 (1 row) count ------- 184 (1 row) count ------- 59 (1 row) count ------- 77 (1 row) count ------- 23 (1 row) count ------- 134 (1 row) count ------- 270 (1 row) count ------- 156 (1 row) count ------- 54 (1 row) count ------- 11 (1 row) count ------- 64 (1 row) count ------- 71 (1 row) count ------- 82 (1 row) count ------- 19 (1 row) count ------- 115 (1 row) count ------- 26 (1 row) count ------- 71 (1 row) count ------- 311 (1 row) count ------- 65 (1 row) count ------- 148 (1 row) count ------- 76 (1 row) count ------- 48 (1 row) count ------- 50 (1 row) count ------- 83 (1 row) count ------- 84 (1 row) count ------- 114 (1 row) count ------- 32 (1 row) count ------- 143 (1 row) count ------- 277 (1 row) count ------- 32 (1 row) count ------- 121 (1 row) count ------- 122 (1 row) count ------- 28 (1 row) count ------- 123 (1 row) count ------- 86 (1 row) count ------- 11 (1 row) count ------- 12 (1 row) count ------- 90 (1 row) count ------- 40 (1 row) count ------- 248 (1 row) count ------- 201 (1 row) count ------- 114 (1 row) count ------- 54 (1 row) count ------- 192 (1 row) count ------- 167 (1 row) count ------- 195 (1 row) count ------- 77 (1 row) count ------- 203 (1 row) count ------- 122 (1 row) count ------- 165 (1 row) count ------- 29 (1 row) count ------- 158 (1 row) count ------- 120 (1 row) count ------- 160 (1 row) count ------- 64 (1 row) count ------- 48 (1 row) count ------- 270 (1 row) count ------- 71 (1 row) count ------- 207 (1 row) count ------- 38 (1 row) count ------- 125 (1 row) count ------- 105 (1 row) count ------- 158 (1 row) count ------- 75 (1 row) count ------- 34 (1 row) count ------- 106 (1 row) count ------- 82 (1 row) count ------- 53 (1 row) count ------- 31 (1 row) count ------- 142 (1 row) count ------- 122 (1 row) count ------- 19 (1 row) count ------- 161 (1 row) count ------- 127 (1 row) count ------- 236 (1 row) count ------- 66 (1 row) count ------- 25 (1 row) count ------- 16 (1 row) count ------- 47 (1 row) count ------- 6 (1 row) count ------- 73 (1 row) count ------- 95 (1 row) count ------- 298 (1 row) count ------- 19 (1 row) count ------- 75 (1 row) count ------- 154 (1 row) count ------- 115 (1 row) count ------- 8 (1 row) count ------- 158 (1 row) count ------- 105 (1 row) count ------- 43 (1 row) count ------- 180 (1 row) count ------- 116 (1 row) count ------- 60 (1 row) count ------- 79 (1 row) count ------- 54 (1 row) count ------- 69 (1 row) count ------- 21 (1 row) count ------- 248 (1 row) count ------- 61 (1 row) count ------- 37 (1 row) count ------- 140 (1 row) count ------- 102 (1 row) count ------- 148 (1 row) count ------- 123 (1 row) count ------- 217 (1 row) count ------- 75 (1 row) count ------- 91 (1 row) count ------- 68 (1 row) count ------- 85 (1 row) count ------- 228 (1 row) count ------- 115 (1 row) count ------- 90 (1 row) count ------- 50 (1 row) count ------- 129 (1 row) count ------- 8 (1 row) count ------- 76 (1 row) count ------- 89 (1 row) count ------- 230 (1 row) count ------- 134 (1 row) count ------- 219 (1 row) count ------- 36 (1 row) count ------- 16 (1 row) count ------- 90 (1 row) count ------- 86 (1 row) count ------- 149 (1 row) count ------- 126 (1 row) count ------- 101 (1 row) count ------- 12 (1 row) count ------- 257 (1 row) count ------- 35 (1 row) count ------- 138 (1 row) count ------- 186 (1 row) count ------- 85 (1 row) count ------- 43 (1 row) count ------- 94 (1 row) count ------- 316 (1 row) count ------- 226 (1 row) count ------- 106 (1 row) count ------- 223 (1 row) count ------- 179 (1 row) count ------- 180 (1 row) count ------- 24 (1 row) count ------- 189 (1 row) count ------- 46 (1 row) count ------- 54 (1 row) count ------- 79 (1 row) count ------- 69 (1 row) count ------- 41 (1 row) count ------- 123 (1 row) count ------- 155 (1 row) count ------- 114 (1 row) count ------- 132 (1 row) count ------- 54 (1 row) count ------- 150 (1 row) count ------- 248 (1 row) count ------- 46 (1 row) count ------- 105 (1 row) count ------- 48 (1 row) count ------- 60 (1 row) count ------- 74 (1 row) count ------- 228 (1 row) count ------- 257 (1 row) count ------- 124 (1 row) count ------- 45 (1 row) count ------- 43 (1 row) count ------- 224 (1 row) count ------- 84 (1 row) count ------- 177 (1 row) count ------- 177 (1 row) count ------- 69 (1 row) count ------- 70 (1 row) count ------- 93 (1 row) count ------- 104 (1 row) count ------- 83 (1 row) count ------- 46 (1 row) count ------- 75 (1 row) count ------- 105 (1 row) count ------- 100 (1 row) count ------- 38 (1 row) count ------- 184 (1 row) count ------- 60 (1 row) count ------- 79 (1 row) count ------- 18 (1 row) count ------- 120 (1 row) count ------- 207 (1 row) count ------- 77 (1 row) count ------- 54 (1 row) count ------- 58 (1 row) count ------- 185 (1 row) count ------- 197 (1 row) count ------- 127 (1 row) count ------- 178 (1 row) count ------- 34 (1 row) count ------- 52 (1 row) count ------- 115 (1 row) count ------- 130 (1 row) count ------- 8 (1 row) count ------- 78 (1 row) count ------- 171 (1 row) count ------- 221 (1 row) count ------- 172 (1 row) count ------- 52 (1 row) count ------- 69 (1 row) count ------- 82 (1 row) count ------- 85 (1 row) count ------- 50 (1 row) count ------- 49 (1 row) count ------- 53 (1 row) count ------- 204 (1 row) count ------- 90 (1 row) count ------- 106 (1 row) count ------- 135 (1 row) count ------- 86 (1 row) count ------- 118 (1 row) count ------- 69 (1 row) count ------- 81 (1 row) count ------- 142 (1 row) count ------- 113 (1 row) count ------- 215 (1 row) count ------- 192 (1 row) count ------- 68 (1 row) count ------- 188 (1 row) count ------- 71 (1 row) count ------- 146 (1 row) count ------- 110 (1 row) count ------- 31 (1 row) count ------- 53 (1 row) count ------- 169 (1 row) count ------- 165 (1 row) count ------- 156 (1 row) count ------- 191 (1 row) count ------- 73 (1 row) count ------- 119 (1 row) count ------- 103 (1 row) count ------- 15 (1 row) count ------- 178 (1 row) count ------- 380 (1 row) count ------- 96 (1 row) count ------- 207 (1 row) count ------- 20 (1 row) count ------- 140 (1 row) count ------- 214 (1 row) count ------- 260 (1 row) count ------- 35 (1 row) count ------- 41 (1 row) count ------- 185 (1 row) count ------- 15 (1 row) count ------- 124 (1 row) count ------- 67 (1 row) count ------- 128 (1 row) count ------- 330 (1 row) count ------- 208 (1 row) count ------- 126 (1 row) count ------- 103 (1 row) count ------- 82 (1 row) count ------- 63 (1 row) count ------- 154 (1 row) count ------- 42 (1 row) count ------- 47 (1 row) count ------- 201 (1 row) count ------- 122 (1 row) count ------- 38 (1 row) count ------- 51 (1 row) count ------- 64 (1 row) count ------- 96 (1 row) count ------- 102 (1 row) count ------- 36 (1 row) count ------- 129 (1 row) count ------- 337 (1 row) count ------- 78 (1 row) count ------- 153 (1 row) count ------- 36 (1 row) count ------- 174 (1 row) count ------- 106 (1 row) count ------- 30 (1 row) count ------- 113 (1 row) count ------- 55 (1 row) count ------- 62 (1 row) count ------- 3 (1 row) count ------- 72 (1 row) count ------- 3 (1 row) count ------- 43 (1 row) count ------- 7 (1 row) count ------- 218 (1 row) count ------- 95 (1 row) count ------- 51 (1 row) count ------- 92 (1 row) count ------- 110 (1 row) count ------- 57 (1 row) count ------- 16 (1 row) count ------- 109 (1 row) count ------- 15 (1 row) count ------- 58 (1 row) count ------- 67 (1 row) count ------- 187 (1 row) count ------- 183 (1 row) count ------- 49 (1 row) count ------- 70 (1 row) count ------- 196 (1 row) count ------- 123 (1 row) count ------- 279 (1 row) count ------- 203 (1 row) count ------- 195 (1 row) count ------- 168 (1 row) count ------- 172 (1 row) count ------- 76 (1 row) count ------- 221 (1 row) count ------- 216 (1 row) count ------- 220 (1 row) count ------- 172 (1 row) count ------- 56 (1 row) count ------- 116 (1 row) count ------- 246 (1 row) count ------- 113 (1 row) count ------- 148 (1 row) count ------- 191 (1 row) count ------- 85 (1 row) count ------- 18 (1 row) count ------- 243 (1 row) count ------- 72 (1 row) count ------- 171 (1 row) count ------- 23 (1 row) count ------- 137 (1 row) count ------- 126 (1 row) count ------- 68 (1 row) count ------- 119 (1 row) count ------- 98 (1 row) count ------- 114 (1 row) count ------- 59 (1 row) count ------- 153 (1 row) count ------- 98 (1 row) count ------- 106 (1 row) count ------- 110 (1 row) count ------- 131 (1 row) count ------- 124 (1 row) count ------- 8 (1 row) count ------- 103 (1 row) count ------- 157 (1 row) count ------- 150 (1 row) count ------- 105 (1 row) count ------- 147 (1 row) count ------- 104 (1 row) count ------- 55 (1 row) count ------- 142 (1 row) count ------- 88 (1 row) count ------- 92 (1 row) count ------- 128 (1 row) count ------- 269 (1 row) count ------- 307 (1 row) count ------- 49 (1 row) count ------- 65 (1 row) count ------- 46 (1 row) count ------- 69 (1 row) count ------- 128 (1 row) count ------- 107 (1 row) count ------- 35 (1 row) count ------- 141 (1 row) count ------- 61 (1 row) count ------- 131 (1 row) count ------- 288 (1 row) count ------- 106 (1 row) count ------- 181 (1 row) count ------- 207 (1 row) count ------- 54 (1 row) count ------- 71 (1 row) count ------- 219 (1 row) count ------- 77 (1 row) count ------- 115 (1 row) count ------- 138 (1 row) count ------- 115 (1 row) count ------- 226 (1 row) count ------- 139 (1 row) count ------- 282 (1 row) count ------- 69 (1 row) count ------- 39 (1 row) count ------- 299 (1 row) count ------- 184 (1 row) count ------- 156 (1 row) count ------- 33 (1 row) count ------- 82 (1 row) count ------- 26 (1 row) count ------- 140 (1 row) count ------- 159 (1 row) count ------- 190 (1 row) count ------- 147 (1 row) count ------- 52 (1 row) count ------- 52 (1 row) count ------- 107 (1 row) count ------- 101 (1 row) count ------- 70 (1 row) count ------- 60 (1 row) count ------- 154 (1 row) count ------- 207 (1 row) count ------- 73 (1 row) count ------- 64 (1 row) count ------- 179 (1 row) count ------- 123 (1 row) count ------- 95 (1 row) count ------- 73 (1 row) count ------- 12 (1 row) count ------- 11 (1 row) count ------- 128 (1 row) count ------- 116 (1 row) count ------- 130 (1 row) count ------- 31 (1 row) count ------- 84 (1 row) count ------- 61 (1 row) count ------- 150 (1 row) count ------- 49 (1 row) count ------- 40 (1 row) count ------- 44 (1 row) count ------- 52 (1 row) count ------- 156 (1 row) count ------- 207 (1 row) count ------- 153 (1 row) count ------- 157 (1 row) count ------- 179 (1 row) count ------- 58 (1 row) count ------- 80 (1 row) count ------- 155 (1 row) count ------- 45 (1 row) count ------- 47 (1 row) count ------- 81 (1 row) count ------- 141 (1 row) count ------- 99 (1 row) count ------- 160 (1 row) count ------- 67 (1 row) count ------- 79 (1 row) count ------- 140 (1 row) count ------- 117 (1 row) count ------- 204 (1 row) count ------- 21 (1 row) count ------- 132 (1 row) count ------- 96 (1 row) count ------- 94 (1 row) count ------- 16 (1 row) count ------- 17 (1 row) count ------- 295 (1 row) count ------- 107 (1 row) count ------- 120 (1 row) count ------- 124 (1 row) count ------- 45 (1 row) count ------- 105 (1 row) count ------- 187 (1 row) count ------- 145 (1 row) count ------- 215 (1 row) count ------- 3 (1 row) count ------- 215 (1 row) count ------- 163 (1 row) count ------- 77 (1 row) count ------- 187 (1 row) count ------- 139 (1 row) count ------- 61 (1 row) count ------- 131 (1 row) count ------- 118 (1 row) count ------- 124 (1 row) count ------- 97 (1 row) count ------- 49 (1 row) count ------- 16 (1 row) count ------- 87 (1 row) count ------- 107 (1 row) count ------- 179 (1 row) count ------- 49 (1 row) count ------- 106 (1 row) count ------- 170 (1 row) count ------- 60 (1 row) count ------- 145 (1 row) count ------- 76 (1 row) count ------- 160 (1 row) count ------- 175 (1 row) count ------- 159 (1 row) count ------- 199 (1 row) count ------- 78 (1 row) count ------- 239 (1 row) count ------- 27 (1 row) count ------- 114 (1 row) count ------- 1 (1 row) count ------- 139 (1 row) count ------- 109 (1 row) count ------- 148 (1 row) count ------- 160 (1 row) count ------- 153 (1 row) count ------- 101 (1 row) count ------- 97 (1 row) count ------- 157 (1 row) count ------- 98 (1 row) count ------- 146 (1 row) count ------- 107 (1 row) count ------- 63 (1 row) count ------- 52 (1 row) count ------- 112 (1 row) count ------- 274 (1 row) count ------- 173 (1 row) count ------- 235 (1 row) count ------- 50 (1 row) count ------- 154 (1 row) count ------- 119 (1 row) count ------- 144 (1 row) count ------- 212 (1 row) count ------- 129 (1 row) count ------- 145 (1 row) count ------- 87 (1 row) count ------- 65 (1 row) count ------- 167 (1 row) count ------- 64 (1 row) count ------- 59 (1 row) count ------- 147 (1 row) count ------- 145 (1 row) count ------- 83 (1 row) count ------- 85 (1 row) count ------- 151 (1 row) count ------- 148 (1 row) count ------- 142 (1 row) count ------- 298 (1 row) count ------- 165 (1 row) count ------- 93 (1 row) count ------- 289 (1 row) count ------- 64 (1 row) count ------- 162 (1 row) count ------- 420 (1 row) count ------- 22 (1 row) count ------- 134 (1 row) count ------- 162 (1 row) count ------- 20 (1 row) count ------- 108 (1 row) count ------- 82 (1 row) count ------- 98 (1 row) count ------- 69 (1 row) count ------- 37 (1 row) count ------- 153 (1 row) count ------- 102 (1 row) count ------- 204 (1 row) count ------- 223 (1 row) count ------- 185 (1 row) count ------- 49 (1 row) count ------- 146 (1 row) count ------- 177 (1 row) count ------- 124 (1 row) count ------- 118 (1 row) count ------- 89 (1 row) count ------- 3 (1 row) count ------- 13 (1 row) count ------- 195 (1 row) count ------- 231 (1 row) count ------- 125 (1 row) count ------- 11 (1 row) count ------- 23 (1 row) count ------- 97 (1 row) count ------- 158 (1 row) count ------- 99 (1 row) count ------- 65 (1 row) count ------- 122 (1 row) count ------- 120 (1 row) count ------- 111 (1 row) count ------- 118 (1 row) count ------- 142 (1 row) count ------- 62 (1 row) count ------- 51 (1 row) count ------- 171 (1 row) count ------- 198 (1 row) count ------- 173 (1 row) count ------- 347 (1 row) count ------- 155 (1 row) count ------- 314 (1 row) count ------- 199 (1 row) count ------- 157 (1 row) count ------- 264 (1 row) count ------- 84 (1 row) count ------- 95 (1 row) count ------- 97 (1 row) count ------- 104 (1 row) count ------- 116 (1 row) count ------- 88 (1 row) count ------- 342 (1 row) count ------- 44 (1 row) count ------- 84 (1 row) count ------- 51 (1 row) count ------- 37 (1 row) count ------- 194 (1 row) count ------- 32 (1 row) count ------- 186 (1 row) count ------- 60 (1 row) count ------- 219 (1 row) count ------- 179 (1 row) count ------- 135 (1 row) count ------- 57 (1 row) count ------- 131 (1 row) count ------- 89 (1 row) count ------- 144 (1 row) count ------- 98 (1 row) count ------- 259 (1 row) count ------- 251 (1 row) count ------- 72 (1 row) count ------- 8 (1 row) count ------- 121 (1 row) count ------- 93 (1 row) count ------- 173 (1 row) count ------- 178 (1 row) count ------- 204 (1 row) count ------- 207 (1 row) count ------- 10 (1 row) count ------- 267 (1 row) count ------- 173 (1 row) count ------- 126 (1 row) count ------- 77 (1 row) count ------- 46 (1 row) count ------- 148 (1 row) count ------- 27 (1 row) count ------- 55 (1 row) count ------- 30 (1 row) count ------- 12 (1 row) count ------- 92 (1 row) count ------- 102 (1 row) count ------- 94 (1 row) count ------- 116 (1 row) count ------- 66 (1 row) count ------- 111 (1 row) count ------- 237 (1 row) count ------- 61 (1 row) count ------- 209 (1 row) count ------- 61 (1 row) count ------- 185 (1 row) count ------- 84 (1 row) count ------- 89 (1 row) count ------- 40 (1 row) count ------- 68 (1 row) count ------- 151 (1 row) count ------- 54 (1 row) count ------- 204 (1 row) count ------- 229 (1 row) count ------- 183 (1 row) count ------- 117 (1 row) count ------- 93 (1 row) count ------- 46 (1 row) count ------- 123 (1 row) count ------- 92 (1 row) count ------- 59 (1 row) count ------- 70 (1 row) count ------- 120 (1 row) count ------- 245 (1 row) count ------- 192 (1 row) count ------- 24 (1 row) count ------- 35 (1 row) count ------- 166 (1 row) count ------- 184 (1 row) count ------- 80 (1 row) count ------- 21 (1 row) count ------- 11 (1 row) count ------- 249 (1 row) count ------- 27 (1 row) count ------- 116 (1 row) count ------- 166 (1 row) count ------- 63 (1 row) count ------- 239 (1 row) count ------- 17 (1 row) count ------- 98 (1 row) count ------- 54 (1 row) count ------- 144 (1 row) count ------- 197 (1 row) count ------- 208 (1 row) count ------- 136 (1 row) count ------- 20 (1 row) count ------- 76 (1 row) count ------- 171 (1 row) count ------- 140 (1 row) count ------- 100 (1 row) count ------- 33 (1 row) count ------- 47 (1 row) count ------- 69 (1 row) count ------- 89 (1 row) count ------- 65 (1 row) count ------- 127 (1 row) count ------- 217 (1 row) count ------- 210 (1 row) count ------- 144 (1 row) count ------- 112 (1 row) count ------- 172 (1 row) count ------- 124 (1 row) count ------- 68 (1 row) count ------- 144 (1 row) count ------- 85 (1 row) count ------- 172 (1 row) count ------- 138 (1 row) count ------- 93 (1 row) count ------- 206 (1 row) count ------- 63 (1 row) count ------- 173 (1 row) count ------- 11 (1 row) count ------- 17 (1 row) count ------- 124 (1 row) count ------- 44 (1 row) count ------- 113 (1 row) count ------- 42 (1 row) count ------- 87 (1 row) count ------- 109 (1 row) count ------- 94 (1 row) count ------- 107 (1 row) count ------- 139 (1 row) count ------- 103 (1 row) count ------- 193 (1 row) count ------- 205 (1 row) count ------- 156 (1 row) count ------- 63 (1 row) count ------- 84 (1 row) count ------- 233 (1 row) count ------- 377 (1 row) count ------- 254 (1 row) count ------- 195 (1 row) count ------- 80 (1 row) count ------- 132 (1 row) count ------- 86 (1 row) count ------- 327 (1 row) count ------- 62 (1 row) count ------- 95 (1 row) count ------- 47 (1 row) count ------- 96 (1 row) count ------- 110 (1 row) count ------- 279 (1 row) count ------- 129 (1 row) count ------- 237 (1 row) count ------- 179 (1 row) count ------- 41 (1 row) count ------- 225 (1 row) count ------- 162 (1 row) count ------- 118 (1 row) count ------- 80 (1 row) count ------- 102 (1 row) count ------- 219 (1 row) count ------- 180 (1 row) count ------- 222 (1 row) count ------- 224 (1 row) count ------- 26 (1 row) count ------- 117 (1 row) count ------- 123 (1 row) count ------- 83 (1 row) count ------- 185 (1 row) count ------- 141 (1 row) count ------- 165 (1 row) count ------- 44 (1 row) count ------- 41 (1 row) count ------- 20 (1 row) count ------- 78 (1 row) count ------- 91 (1 row) count ------- 80 (1 row) count ------- 123 (1 row) count ------- 5 (1 row) count ------- 77 (1 row) count ------- 63 (1 row) count ------- 70 (1 row) count ------- 74 (1 row) count ------- 159 (1 row) count ------- 92 (1 row) count ------- 180 (1 row) count ------- 7 (1 row) count ------- 150 (1 row) count ------- 393 (1 row) count ------- 146 (1 row) count ------- 200 (1 row) count ------- 62 (1 row) count ------- 61 (1 row) count ------- 27 (1 row) count ------- 224 (1 row) count ------- 207 (1 row) count ------- 35 (1 row) count ------- 147 (1 row) count ------- 147 (1 row) count ------- 26 (1 row) count ------- 98 (1 row) count ------- 13 (1 row) count ------- 251 (1 row) count ------- 8 (1 row) count ------- 88 (1 row) count ------- 85 (1 row) count ------- 102 (1 row) count ------- 203 (1 row) count ------- 282 (1 row) count ------- 107 (1 row) count ------- 122 (1 row) count ------- 63 (1 row) count ------- 170 (1 row) count ------- 249 (1 row) count ------- 134 (1 row) count ------- 38 (1 row) count ------- 203 (1 row) count ------- 91 (1 row) count ------- 137 (1 row) count ------- 91 (1 row) count ------- 66 (1 row) count ------- 243 (1 row) count ------- 9 (1 row) count ------- 115 (1 row) count ------- 117 (1 row) count ------- 78 (1 row) count ------- 129 (1 row) count ------- 6 (1 row) count ------- 70 (1 row) count ------- 83 (1 row) count ------- 9 (1 row) count ------- 152 (1 row) count ------- 223 (1 row) count ------- 147 (1 row) count ------- 17 (1 row) count ------- 198 (1 row) count ------- 204 (1 row) count ------- 186 (1 row) count ------- 82 (1 row) count ------- 328 (1 row) count ------- 94 (1 row) count ------- 180 (1 row) count ------- 26 (1 row) count ------- 51 (1 row) count ------- 38 (1 row) count ------- 79 (1 row) count ------- 347 (1 row) count ------- 184 (1 row) count ------- 17 (1 row) count ------- 217 (1 row) count ------- 57 (1 row) count ------- 60 (1 row) count ------- 212 (1 row) count ------- 50 (1 row) count ------- 39 (1 row) count ------- 66 (1 row) count ------- 98 (1 row) count ------- 76 (1 row) count ------- 166 (1 row) count ------- 60 (1 row) count ------- 116 (1 row) count ------- 9 (1 row) count ------- 126 (1 row) count ------- 191 (1 row) count ------- 76 (1 row) count ------- 156 (1 row) count ------- 94 (1 row) count ------- 26 (1 row) count ------- 89 (1 row) count ------- 67 (1 row) count ------- 113 (1 row) count ------- 109 (1 row) count ------- 133 (1 row) count ------- 81 (1 row) count ------- 276 (1 row) count ------- 90 (1 row) count ------- 277 (1 row) count ------- 113 (1 row) count ------- 23 (1 row) count ------- 48 (1 row) count ------- 300 (1 row) count ------- 77 (1 row) count ------- 175 (1 row) count ------- 125 (1 row) count ------- 249 (1 row) count ------- 61 (1 row) count ------- 85 (1 row) count ------- 121 (1 row) count ------- 205 (1 row) count ------- 131 (1 row) count ------- 162 (1 row) count ------- 64 (1 row) count ------- 70 (1 row) count ------- 140 (1 row) count ------- 119 (1 row) count ------- 155 (1 row) count ------- 66 (1 row) count ------- 103 (1 row) count ------- 39 (1 row) count ------- 119 (1 row) count ------- 177 (1 row) count ------- 131 (1 row) count ------- 29 (1 row) count ------- 96 (1 row) count ------- 56 (1 row) count ------- 154 (1 row) count ------- 291 (1 row) count ------- 54 (1 row) count ------- 123 (1 row) count ------- 146 (1 row) count ------- 150 (1 row) count ------- 212 (1 row) count ------- 105 (1 row) count ------- 83 (1 row) count ------- 95 (1 row) count ------- 57 (1 row) count ------- 15 (1 row) count ------- 279 (1 row) count ------- 240 (1 row) count ------- 55 (1 row) count ------- 81 (1 row) count ------- 173 (1 row) count ------- 189 (1 row) count ------- 111 (1 row) count ------- 128 (1 row) count ------- 209 (1 row) count ------- 106 (1 row) count ------- 172 (1 row) count ------- 161 (1 row) count ------- 117 (1 row) count ------- 146 (1 row) count ------- 237 (1 row) count ------- 65 (1 row) count ------- 32 (1 row) count ------- 238 (1 row) count ------- 50 (1 row) count ------- 181 (1 row) count ------- 13 (1 row) count ------- 107 (1 row) count ------- 251 (1 row) count ------- 178 (1 row) count ------- 104 (1 row) count ------- 36 (1 row) count ------- 200 (1 row) count ------- 150 (1 row) count ------- 154 (1 row) count ------- 144 (1 row) count ------- 114 (1 row) count ------- 43 (1 row) count ------- 260 (1 row) count ------- 125 (1 row) count ------- 18 (1 row) count ------- 55 (1 row) count ------- 81 (1 row) count ------- 58 (1 row) count ------- 145 (1 row) count ------- 261 (1 row) count ------- 79 (1 row) count ------- 163 (1 row) count ------- 79 (1 row) count ------- 169 (1 row) count ------- 147 (1 row) count ------- 135 (1 row) count ------- 261 (1 row) count ------- 103 (1 row) count ------- 186 (1 row) count ------- 27 (1 row) count ------- 136 (1 row) count ------- 2 (1 row) count ------- 34 (1 row) count ------- 39 (1 row) count ------- 139 (1 row) count ------- 92 (1 row) count ------- 178 (1 row) count ------- 222 (1 row) count ------- 76 (1 row) count ------- 55 (1 row) count ------- 153 (1 row) count ------- 103 (1 row) count ------- 77 (1 row) count ------- 207 (1 row) count ------- 70 (1 row) count ------- 3 (1 row) count ------- 169 (1 row) count ------- 132 (1 row) count ------- 8 (1 row) count ------- 144 (1 row) count ------- 213 (1 row) count ------- 134 (1 row) count ------- 156 (1 row) count ------- 14 (1 row) count ------- 89 (1 row) count ------- 131 (1 row) count ------- 294 (1 row) count ------- 8 (1 row) count ------- 75 (1 row) count ------- 162 (1 row) count ------- 65 (1 row) count ------- 108 (1 row) count ------- 128 (1 row) count ------- 176 (1 row) count ------- 134 (1 row) count ------- 133 (1 row) count ------- 343 (1 row) count ------- 157 (1 row) count ------- 166 (1 row) count ------- 210 (1 row) count ------- 112 (1 row) count ------- 136 (1 row) count ------- 170 (1 row) count ------- 56 (1 row) count ------- 268 (1 row) count ------- 67 (1 row) count ------- 88 (1 row) count ------- 24 (1 row) count ------- 195 (1 row) count ------- 107 (1 row) count ------- 203 (1 row) count ------- 94 (1 row) count ------- 62 (1 row) count ------- 41 (1 row) count ------- 39 (1 row) count ------- 285 (1 row) count ------- 190 (1 row) count ------- 53 (1 row) count ------- 76 (1 row) count ------- 227 (1 row) count ------- 59 (1 row) count ------- 171 (1 row) count ------- 223 (1 row) count ------- 154 (1 row) count ------- 155 (1 row) count ------- 139 (1 row) count ------- 125 (1 row) count ------- 19 (1 row) count ------- 109 (1 row) count ------- 150 (1 row) count ------- 117 (1 row) count ------- 144 (1 row) count ------- 95 (1 row) count ------- 126 (1 row) count ------- 0 (1 row) count ------- 1 (1 row) count ------- 150 (1 row) count ------- 176 (1 row) count ------- 53 (1 row) count ------- 331 (1 row) count ------- 159 (1 row) count ------- 89 (1 row) count ------- 219 (1 row) count ------- 169 (1 row) count ------- 118 (1 row) count ------- 253 (1 row) count ------- 70 (1 row) count ------- 182 (1 row) count ------- 89 (1 row) count ------- 256 (1 row) count ------- 83 (1 row) count ------- 139 (1 row) count ------- 72 (1 row) count ------- 296 (1 row) count ------- 87 (1 row) count ------- 64 (1 row) count ------- 243 (1 row) count ------- 113 (1 row) count ------- 42 (1 row) count ------- 147 (1 row) count ------- 152 (1 row) count ------- 10 (1 row) count ------- 100 (1 row) count ------- 161 (1 row) count ------- 215 (1 row) count ------- 118 (1 row) count ------- 118 (1 row) count ------- 219 (1 row) count ------- 142 (1 row) count ------- 155 (1 row) count ------- 197 (1 row) count ------- 91 (1 row) count ------- 46 (1 row) count ------- 138 (1 row) count ------- 56 (1 row) count ------- 13 (1 row) count ------- 99 (1 row) count ------- 101 (1 row) count ------- 20 (1 row) count ------- 125 (1 row) count ------- 194 (1 row) count ------- 38 (1 row) count ------- 7 (1 row) count ------- 122 (1 row) count ------- 106 (1 row) count ------- 249 (1 row) count ------- 5 (1 row) count ------- 221 (1 row) count ------- 222 (1 row) count ------- 65 (1 row) count ------- 38 (1 row) count ------- 8 (1 row) count ------- 155 (1 row) count ------- 204 (1 row) count ------- 130 (1 row) count ------- 163 (1 row) count ------- 118 (1 row) count ------- 106 (1 row) count ------- 161 (1 row) count ------- 229 (1 row) count ------- 114 (1 row) count ------- 56 (1 row) count ------- 44 (1 row) count ------- 122 (1 row) count ------- 121 (1 row) count ------- 18 (1 row) count ------- 60 (1 row) count ------- 45 (1 row) count ------- 173 (1 row) count ------- 83 (1 row) count ------- 213 (1 row) count ------- 57 (1 row) count ------- 289 (1 row) count ------- 142 (1 row) count ------- 107 (1 row) count ------- 107 (1 row) count ------- 32 (1 row) count ------- 22 (1 row) count ------- 148 (1 row) count ------- 15 (1 row) count ------- 52 (1 row) count ------- 73 (1 row) count ------- 216 (1 row) count ------- 161 (1 row) count ------- 94 (1 row) count ------- 22 (1 row) count ------- 98 (1 row) count ------- 167 (1 row) count ------- 202 (1 row) count ------- 168 (1 row) count ------- 337 (1 row) count ------- 69 (1 row) count ------- 18 (1 row) count ------- 168 (1 row) count ------- 20 (1 row) count ------- 216 (1 row) count ------- 5 (1 row) count ------- 39 (1 row) count ------- 178 (1 row) count ------- 103 (1 row) count ------- 193 (1 row) count ------- 106 (1 row) count ------- 212 (1 row) count ------- 181 (1 row) count ------- 0 (1 row) count ------- 121 (1 row) count ------- 54 (1 row) count ------- 83 (1 row) count ------- 186 (1 row) count ------- 86 (1 row) count ------- 165 (1 row) count ------- 157 (1 row) count ------- 33 (1 row) count ------- 108 (1 row) count ------- 170 (1 row) count ------- 66 (1 row) count ------- 196 (1 row) count ------- 31 (1 row) count ------- 80 (1 row) count ------- 54 (1 row) count ------- 85 (1 row) count ------- 173 (1 row) count ------- 38 (1 row) count ------- 163 (1 row) count ------- 202 (1 row) count ------- 139 (1 row) count ------- 121 (1 row) count ------- 43 (1 row) count ------- 47 (1 row) count ------- 251 (1 row) count ------- 218 (1 row) count ------- 142 (1 row) count ------- 69 (1 row) count ------- 41 (1 row) count ------- 161 (1 row) count ------- 43 (1 row) count ------- 130 (1 row) count ------- 171 (1 row) count ------- 173 (1 row) count ------- 79 (1 row) count ------- 22 (1 row) count ------- 58 (1 row) count ------- 79 (1 row) count ------- 173 (1 row) count ------- 140 (1 row) count ------- 147 (1 row) count ------- 76 (1 row) count ------- 136 (1 row) count ------- 117 (1 row) count ------- 56 (1 row) count ------- 52 (1 row) count ------- 163 (1 row) count ------- 371 (1 row) count ------- 127 (1 row) count ------- 124 (1 row) count ------- 30 (1 row) count ------- 68 (1 row) count ------- 128 (1 row) count ------- 62 (1 row) count ------- 196 (1 row) count ------- 249 (1 row) count ------- 98 (1 row) count ------- 115 (1 row) count ------- 163 (1 row) count ------- 34 (1 row) count ------- 277 (1 row) count ------- 68 (1 row) count ------- 76 (1 row) count ------- 160 (1 row) count ------- 206 (1 row) count ------- 106 (1 row) count ------- 100 (1 row) count ------- 144 (1 row) count ------- 186 (1 row) count ------- 132 (1 row) count ------- 33 (1 row) count ------- 116 (1 row) count ------- 33 (1 row) count ------- 136 (1 row) count ------- 173 (1 row) count ------- 160 (1 row) count ------- 174 (1 row) count ------- 65 (1 row) count ------- 130 (1 row) count ------- 45 (1 row) count ------- 19 (1 row) count ------- 205 (1 row) count ------- 126 (1 row) count ------- 11 (1 row) count ------- 74 (1 row) count ------- 132 (1 row) count ------- 115 (1 row) count ------- 35 (1 row) count ------- 134 (1 row) count ------- 74 (1 row) count ------- 64 (1 row) count ------- 251 (1 row) count ------- 33 (1 row) count ------- 24 (1 row) count ------- 3 (1 row) count ------- 126 (1 row) count ------- 77 (1 row) count ------- 77 (1 row) count ------- 152 (1 row) count ------- 53 (1 row) count ------- 176 (1 row) count ------- 158 (1 row) count ------- 52 (1 row) count ------- 93 (1 row) count ------- 18 (1 row) count ------- 170 (1 row) count ------- 198 (1 row) count ------- 65 (1 row) count ------- 181 (1 row) count ------- 201 (1 row) count ------- 176 (1 row) count ------- 209 (1 row) count ------- 91 (1 row) count ------- 206 (1 row) count ------- 24 (1 row) count ------- 157 (1 row) count ------- 155 (1 row) count ------- 115 (1 row) count ------- 26 (1 row) count ------- 105 (1 row) count ------- 117 (1 row) count ------- 39 (1 row) count ------- 195 (1 row) count ------- 163 (1 row) count ------- 84 (1 row) count ------- 42 (1 row) count ------- 98 (1 row) count ------- 85 (1 row) count ------- 120 (1 row) count ------- 192 (1 row) count ------- 152 (1 row) count ------- 40 (1 row) count ------- 51 (1 row) count ------- 66 (1 row) count ------- 132 (1 row) count ------- 181 (1 row) count ------- 80 (1 row) count ------- 210 (1 row) count ------- 64 (1 row) count ------- 122 (1 row) count ------- 45 (1 row) count ------- 75 (1 row) count ------- 40 (1 row) count ------- 96 (1 row) count ------- 116 (1 row) count ------- 98 (1 row) count ------- 38 (1 row) count ------- 132 (1 row) count ------- 184 (1 row) count ------- 168 (1 row) count ------- 97 (1 row) count ------- 84 (1 row) count ------- 153 (1 row) count ------- 160 (1 row) count ------- 173 (1 row) count ------- 166 (1 row) count ------- 53 (1 row) count ------- 210 (1 row) count ------- 163 (1 row) count ------- 92 (1 row) count ------- 136 (1 row) count ------- 51 (1 row) count ------- 75 (1 row) count ------- 136 (1 row) count ------- 81 (1 row) count ------- 117 (1 row) count ------- 74 (1 row) count ------- 11 (1 row) count ------- 23 (1 row) count ------- 106 (1 row) count ------- 137 (1 row) count ------- 72 (1 row) count ------- 103 (1 row) count ------- 34 (1 row) count ------- 38 (1 row) count ------- 108 (1 row) count ------- 219 (1 row) count ------- 184 (1 row) count ------- 50 (1 row) count ------- 79 (1 row) count ------- 78 (1 row) count ------- 109 (1 row) count ------- 120 (1 row) count ------- 137 (1 row) count ------- 82 (1 row) count ------- 43 (1 row) count ------- 190 (1 row) count ------- 256 (1 row) count ------- 283 (1 row) count ------- 67 (1 row) count ------- 187 (1 row) count ------- 204 (1 row) count ------- 126 (1 row) count ------- 25 (1 row) count ------- 114 (1 row) count ------- 141 (1 row) count ------- 21 (1 row) count ------- 28 (1 row) count ------- 100 (1 row) count ------- 64 (1 row) count ------- 42 (1 row) count ------- 28 (1 row) count ------- 123 (1 row) count ------- 9 (1 row) count ------- 62 (1 row) count ------- 84 (1 row) count ------- 199 (1 row) count ------- 148 (1 row) count ------- 112 (1 row) count ------- 202 (1 row) count ------- 170 (1 row) count ------- 100 (1 row) count ------- 159 (1 row) count ------- 58 (1 row) count ------- 170 (1 row) count ------- 197 (1 row) count ------- 79 (1 row) count ------- 74 (1 row) count ------- 26 (1 row) count ------- 245 (1 row) count ------- 114 (1 row) count ------- 128 (1 row) count ------- 139 (1 row) count ------- 169 (1 row) count ------- 69 (1 row) count ------- 218 (1 row) count ------- 131 (1 row) count ------- 114 (1 row) count ------- 21 (1 row) count ------- 107 (1 row) count ------- 78 (1 row) count ------- 66 (1 row) count ------- 162 (1 row) count ------- 305 (1 row) count ------- 90 (1 row) count ------- 69 (1 row) count ------- 99 (1 row) count ------- 112 (1 row) count ------- 127 (1 row) count ------- 85 (1 row) count ------- 91 (1 row) count ------- 84 (1 row) count ------- 120 (1 row) count ------- 114 (1 row) count ------- 197 (1 row) count ------- 108 (1 row) count ------- 86 (1 row) count ------- 146 (1 row) count ------- 31 (1 row) count ------- 182 (1 row) count ------- 56 (1 row) count ------- 85 (1 row) count ------- 183 (1 row) count ------- 139 (1 row) count ------- 90 (1 row) count ------- 44 (1 row) count ------- 201 (1 row) count ------- 48 (1 row) count ------- 101 (1 row) count ------- 213 (1 row) count ------- 76 (1 row) count ------- 82 (1 row) count ------- 186 (1 row) count ------- 67 (1 row) count ------- 107 (1 row) count ------- 53 (1 row) count ------- 284 (1 row) count ------- 46 (1 row) count ------- 133 (1 row) count ------- 212 (1 row) count ------- 96 (1 row) count ------- 45 (1 row) count ------- 191 (1 row) count ------- 206 (1 row) count ------- 63 (1 row) count ------- 105 (1 row) count ------- 248 (1 row) count ------- 227 (1 row) count ------- 252 (1 row) count ------- 102 (1 row) count ------- 125 (1 row) count ------- 26 (1 row) count ------- 174 (1 row) count ------- 92 (1 row) count ------- 80 (1 row) count ------- 28 (1 row) count ------- 85 (1 row) count ------- 238 (1 row) count ------- 142 (1 row) count ------- 101 (1 row) count ------- 67 (1 row) count ------- 174 (1 row) count ------- 113 (1 row) count ------- 107 (1 row) count ------- 342 (1 row) count ------- 181 (1 row) count ------- 91 (1 row) count ------- 123 (1 row) count ------- 128 (1 row) count ------- 244 (1 row) count ------- 172 (1 row) count ------- 83 (1 row) count ------- 48 (1 row) count ------- 129 (1 row) count ------- 132 (1 row) count ------- 127 (1 row) count ------- 223 (1 row) count ------- 118 (1 row) count ------- 68 (1 row) count ------- 221 (1 row) count ------- 6 (1 row) count ------- 44 (1 row) count ------- 1 (1 row) count ------- 67 (1 row) count ------- 27 (1 row) count ------- 107 (1 row) count ------- 187 (1 row) count ------- 31 (1 row) count ------- 170 (1 row) count ------- 27 (1 row) count ------- 116 (1 row) count ------- 81 (1 row) count ------- 175 (1 row) count ------- 269 (1 row) count ------- 87 (1 row) count ------- 119 (1 row) count ------- 6 (1 row) count ------- 163 (1 row) count ------- 179 (1 row) count ------- 200 (1 row) count ------- 95 (1 row) count ------- 34 (1 row) count ------- 78 (1 row) count ------- 189 (1 row) count ------- 0 (1 row) count ------- 214 (1 row) count ------- 23 (1 row) count ------- 68 (1 row) count ------- 196 (1 row) count ------- 162 (1 row) count ------- 181 (1 row) count ------- 141 (1 row) count ------- 155 (1 row) count ------- 101 (1 row) count ------- 49 (1 row) count ------- 64 (1 row) count ------- 10 (1 row) count ------- 111 (1 row) count ------- 81 (1 row) count ------- 61 (1 row) count ------- 305 (1 row) count ------- 162 (1 row) count ------- 226 (1 row) count ------- 35 (1 row) count ------- 156 (1 row) count ------- 17 (1 row) count ------- 128 (1 row) count ------- 126 (1 row) count ------- 152 (1 row) count ------- 81 (1 row) count ------- 8 (1 row) count ------- 76 (1 row) count ------- 185 (1 row) count ------- 26 (1 row) count ------- 265 (1 row) count ------- 25 (1 row) count ------- 212 (1 row) count ------- 107 (1 row) count ------- 124 (1 row) count ------- 127 (1 row) count ------- 131 (1 row) count ------- 93 (1 row) count ------- 87 (1 row) count ------- 24 (1 row) count ------- 58 (1 row) count ------- 128 (1 row) count ------- 197 (1 row) count ------- 39 (1 row) count ------- 89 (1 row) count ------- 182 (1 row) count ------- 234 (1 row) count ------- 59 (1 row) count ------- 132 (1 row) count ------- 25 (1 row) count ------- 207 (1 row) count ------- 67 (1 row) count ------- 131 (1 row) count ------- 124 (1 row) count ------- 210 (1 row) count ------- 108 (1 row) count ------- 271 (1 row) count ------- 170 (1 row) count ------- 171 (1 row) count ------- 81 (1 row) count ------- 24 (1 row) count ------- 183 (1 row) count ------- 4 (1 row) count ------- 195 (1 row) count ------- 109 (1 row) count ------- 16 (1 row) count ------- 26 (1 row) count ------- 106 (1 row) count ------- 159 (1 row) count ------- 125 (1 row) count ------- 289 (1 row) count ------- 84 (1 row) count ------- 273 (1 row) count ------- 26 (1 row) count ------- 153 (1 row) count ------- 17 (1 row) count ------- 71 (1 row) count ------- 177 (1 row) count ------- 87 (1 row) count ------- 180 (1 row) count ------- 165 (1 row) count ------- 42 (1 row) count ------- 156 (1 row) count ------- 95 (1 row) count ------- 161 (1 row) count ------- 108 (1 row) count ------- 124 (1 row) count ------- 3 (1 row) count ------- 126 (1 row) count ------- 6 (1 row) count ------- 71 (1 row) count ------- 204 (1 row) count ------- 71 (1 row) count ------- 50 (1 row) count ------- 223 (1 row) count ------- 51 (1 row) count ------- 81 (1 row) count ------- 36 (1 row) count ------- 124 (1 row) count ------- 54 (1 row) count ------- 195 (1 row) count ------- 63 (1 row) count ------- 121 (1 row) count ------- 183 (1 row) count ------- 181 (1 row) count ------- 36 (1 row) count ------- 24 (1 row) count ------- 154 (1 row) count ------- 111 (1 row) count ------- 144 (1 row) count ------- 22 (1 row) count ------- 80 (1 row) count ------- 186 (1 row) count ------- 20 (1 row) count ------- 39 (1 row) count ------- 45 (1 row) count ------- 195 (1 row) count ------- 76 (1 row) count ------- 85 (1 row) count ------- 45 (1 row) count ------- 105 (1 row) count ------- 50 (1 row) count ------- 120 (1 row) count ------- 35 (1 row) count ------- 343 (1 row) count ------- 105 (1 row) count ------- 78 (1 row) count ------- 233 (1 row) count ------- 48 (1 row) count ------- 39 (1 row) count ------- 35 (1 row) count ------- 141 (1 row) count ------- 54 (1 row) count ------- 55 (1 row) count ------- 239 (1 row) count ------- 65 (1 row) count ------- 171 (1 row) count ------- 120 (1 row) count ------- 75 (1 row) count ------- 92 (1 row) count ------- 47 (1 row) count ------- 110 (1 row) count ------- 201 (1 row) count ------- 52 (1 row) count ------- 74 (1 row) count ------- 66 (1 row) count ------- 147 (1 row) count ------- 134 (1 row) count ------- 161 (1 row) count ------- 273 (1 row) count ------- 115 (1 row) count ------- 131 (1 row) count ------- 152 (1 row) count ------- 38 (1 row) count ------- 117 (1 row) count ------- 156 (1 row) count ------- 102 (1 row) count ------- 110 (1 row) count ------- 28 (1 row) count ------- 99 (1 row) count ------- 201 (1 row) count ------- 119 (1 row) count ------- 219 (1 row) count ------- 9 (1 row) count ------- 182 (1 row) count ------- 151 (1 row) count ------- 349 (1 row) count ------- 288 (1 row) count ------- 233 (1 row) count ------- 195 (1 row) count ------- 159 (1 row) count ------- 81 (1 row) count ------- 102 (1 row) count ------- 183 (1 row) count ------- 277 (1 row) count ------- 98 (1 row) count ------- 93 (1 row) count ------- 207 (1 row) count ------- 154 (1 row) count ------- 166 (1 row) count ------- 100 (1 row) count ------- 28 (1 row) count ------- 161 (1 row) count ------- 101 (1 row) count ------- 86 (1 row) count ------- 80 (1 row) count ------- 102 (1 row) count ------- 132 (1 row) count ------- 91 (1 row) count ------- 132 (1 row) count ------- 21 (1 row) count ------- 61 (1 row) count ------- 146 (1 row) count ------- 38 (1 row) count ------- 121 (1 row) count ------- 145 (1 row) count ------- 90 (1 row) count ------- 75 (1 row) count ------- 169 (1 row) count ------- 142 (1 row) count ------- 252 (1 row) count ------- 53 (1 row) count ------- 125 (1 row) count ------- 81 (1 row) count ------- 151 (1 row) count ------- 174 (1 row) count ------- 220 (1 row) count ------- 148 (1 row) count ------- 71 (1 row) count ------- 62 (1 row) count ------- 187 (1 row) count ------- 179 (1 row) count ------- 53 (1 row) count ------- 87 (1 row) count ------- 153 (1 row) count ------- 41 (1 row) count ------- 59 (1 row) count ------- 11 (1 row) count ------- 113 (1 row) count ------- 113 (1 row) count ------- 137 (1 row) count ------- 70 (1 row) count ------- 154 (1 row) count ------- 245 (1 row) count ------- 3 (1 row) count ------- 86 (1 row) count ------- 21 (1 row) count ------- 36 (1 row) count ------- 40 (1 row) count ------- 142 (1 row) count ------- 117 (1 row) count ------- 115 (1 row) count ------- 230 (1 row) count ------- 38 (1 row) count ------- 12 (1 row) count ------- 262 (1 row) count ------- 170 (1 row) count ------- 63 (1 row) count ------- 186 (1 row) count ------- 13 (1 row) count ------- 81 (1 row) count ------- 35 (1 row) count ------- 89 (1 row) count ------- 2 (1 row) count ------- 134 (1 row) count ------- 195 (1 row) count ------- 198 (1 row) count ------- 39 (1 row) count ------- 190 (1 row) count ------- 26 (1 row) count ------- 55 (1 row) count ------- 219 (1 row) count ------- 433 (1 row) count ------- 208 (1 row) count ------- 78 (1 row) count ------- 109 (1 row) count ------- 63 (1 row) count ------- 72 (1 row) count ------- 72 (1 row) count ------- 213 (1 row) count ------- 81 (1 row) count ------- 78 (1 row) count ------- 226 (1 row) count ------- 181 (1 row) count ------- 52 (1 row) count ------- 356 (1 row) count ------- 77 (1 row) count ------- 42 (1 row) count ------- 157 (1 row) count ------- 146 (1 row) count ------- 110 (1 row) count ------- 214 (1 row) count ------- 264 (1 row) count ------- 126 (1 row) count ------- 140 (1 row) count ------- 24 (1 row) count ------- 20 (1 row) count ------- 93 (1 row) count ------- 79 (1 row) count ------- 192 (1 row) count ------- 49 (1 row) count ------- 145 (1 row) count ------- 151 (1 row) count ------- 7 (1 row) count ------- 127 (1 row) count ------- 106 (1 row) count ------- 90 (1 row) count ------- 137 (1 row) count ------- 213 (1 row) count ------- 109 (1 row) count ------- 88 (1 row) count ------- 99 (1 row) count ------- 106 (1 row) count ------- 71 (1 row) count ------- 39 (1 row) count ------- 31 (1 row) count ------- 24 (1 row) count ------- 131 (1 row) count ------- 57 (1 row) count ------- 146 (1 row) count ------- 138 (1 row) count ------- 121 (1 row) count ------- 165 (1 row) count ------- 49 (1 row) count ------- 113 (1 row) count ------- 151 (1 row) count ------- 44 (1 row) count ------- 103 (1 row) count ------- 167 (1 row) count ------- 29 (1 row) count ------- 24 (1 row) count ------- 36 (1 row) count ------- 39 (1 row) count ------- 62 (1 row) count ------- 37 (1 row) count ------- 212 (1 row) count ------- 155 (1 row) count ------- 33 (1 row) count ------- 37 (1 row) count ------- 95 (1 row) count ------- 203 (1 row) count ------- 140 (1 row) count ------- 160 (1 row) count ------- 176 (1 row) count ------- 27 (1 row) count ------- 106 (1 row) count ------- 63 (1 row) count ------- 176 (1 row) count ------- 45 (1 row) count ------- 56 (1 row) count ------- 37 (1 row) count ------- 64 (1 row) count ------- 87 (1 row) count ------- 235 (1 row) count ------- 84 (1 row) count ------- 54 (1 row) count ------- 5 (1 row) count ------- 208 (1 row) count ------- 81 (1 row) count ------- 272 (1 row) count ------- 138 (1 row) count ------- 18 (1 row) count ------- 209 (1 row) count ------- 72 (1 row) count ------- 235 (1 row) count ------- 241 (1 row) count ------- 167 (1 row) count ------- 21 (1 row) count ------- 91 (1 row) count ------- 118 (1 row) count ------- 190 (1 row) count ------- 138 (1 row) count ------- 107 (1 row) count ------- 208 (1 row) count ------- 137 (1 row) count ------- 82 (1 row) count ------- 43 (1 row) count ------- 85 (1 row) count ------- 182 (1 row) count ------- 145 (1 row) count ------- 93 (1 row) count ------- 41 (1 row) count ------- 88 (1 row) count ------- 43 (1 row) count ------- 25 (1 row) count ------- 143 (1 row) count ------- 134 (1 row) count ------- 146 (1 row) count ------- 94 (1 row) count ------- 90 (1 row) count ------- 95 (1 row) count ------- 72 (1 row) count ------- 151 (1 row) count ------- 165 (1 row) count ------- 150 (1 row) count ------- 145 (1 row) count ------- 74 (1 row) count ------- 34 (1 row) count ------- 174 (1 row) count ------- 151 (1 row) count ------- 169 (1 row) count ------- 76 (1 row) count ------- 132 (1 row) count ------- 133 (1 row) count ------- 225 (1 row) count ------- 107 (1 row) count ------- 53 (1 row) count ------- 314 (1 row) count ------- 53 (1 row) count ------- 265 (1 row) count ------- 187 (1 row) count ------- 125 (1 row) count ------- 6 (1 row) count ------- 221 (1 row) count ------- 97 (1 row) count ------- 195 (1 row) count ------- 33 (1 row) count ------- 68 (1 row) count ------- 343 (1 row) count ------- 81 (1 row) count ------- 93 (1 row) count ------- 131 (1 row) count ------- 128 (1 row) count ------- 183 (1 row) count ------- 304 (1 row) count ------- 134 (1 row) count ------- 147 (1 row) count ------- 30 (1 row) count ------- 207 (1 row) count ------- 118 (1 row) count ------- 80 (1 row) count ------- 162 (1 row) count ------- 148 (1 row) count ------- 120 (1 row) count ------- 13 (1 row) count ------- 184 (1 row) count ------- 56 (1 row) count ------- 17 (1 row) count ------- 13 (1 row) count ------- 135 (1 row) count ------- 20 (1 row) count ------- 67 (1 row) count ------- 192 (1 row) count ------- 59 (1 row) count ------- 169 (1 row) count ------- 126 (1 row) count ------- 197 (1 row) count ------- 180 (1 row) count ------- 32 (1 row) count ------- 68 (1 row) count ------- 170 (1 row) count ------- 106 (1 row) count ------- 109 (1 row) count ------- 252 (1 row) count ------- 60 (1 row) count ------- 131 (1 row) count ------- 49 (1 row) count ------- 113 (1 row) count ------- 223 (1 row) count ------- 173 (1 row) count ------- 18 (1 row) count ------- 30 (1 row) count ------- 40 (1 row) count ------- 200 (1 row) count ------- 53 (1 row) count ------- 86 (1 row) count ------- 43 (1 row) count ------- 123 (1 row) count ------- 74 (1 row) count ------- 132 (1 row) count ------- 19 (1 row) count ------- 70 (1 row) count ------- 94 (1 row) count ------- 161 (1 row) count ------- 150 (1 row) count ------- 50 (1 row) count ------- 99 (1 row) count ------- 83 (1 row) count ------- 76 (1 row) count ------- 153 (1 row) count ------- 176 (1 row) count ------- 148 (1 row) count ------- 30 (1 row) count ------- 22 (1 row) count ------- 154 (1 row) count ------- 115 (1 row) count ------- 78 (1 row) count ------- 90 (1 row) count ------- 116 (1 row) count ------- 205 (1 row) count ------- 190 (1 row) count ------- 84 (1 row) count ------- 6 (1 row) count ------- 146 (1 row) count ------- 40 (1 row) count ------- 151 (1 row) count ------- 270 (1 row) count ------- 210 (1 row) count ------- 52 (1 row) count ------- 14 (1 row) count ------- 50 (1 row) count ------- 279 (1 row) count ------- 129 (1 row) count ------- 204 (1 row) count ------- 50 (1 row) count ------- 88 (1 row) count ------- 157 (1 row) count ------- 75 (1 row) count ------- 102 (1 row) count ------- 182 (1 row) count ------- 126 (1 row) count ------- 69 (1 row) count ------- 132 (1 row) count ------- 205 (1 row) count ------- 167 (1 row) count ------- 126 (1 row) count ------- 186 (1 row) count ------- 55 (1 row) count ------- 200 (1 row) count ------- 130 (1 row) count ------- 162 (1 row) count ------- 89 (1 row) count ------- 220 (1 row) count ------- 135 (1 row) count ------- 87 (1 row) count ------- 137 (1 row) count ------- 188 (1 row) count ------- 52 (1 row) count ------- 168 (1 row) count ------- 143 (1 row) count ------- 172 (1 row) count ------- 34 (1 row) count ------- 337 (1 row) count ------- 197 (1 row) count ------- 100 (1 row) count ------- 135 (1 row) count ------- 63 (1 row) count ------- 184 (1 row) count ------- 128 (1 row) count ------- 112 (1 row) count ------- 193 (1 row) count ------- 24 (1 row) count ------- 69 (1 row) count ------- 34 (1 row) count ------- 86 (1 row) count ------- 191 (1 row) count ------- 144 (1 row) count ------- 202 (1 row) count ------- 88 (1 row) count ------- 18 (1 row) count ------- 74 (1 row) count ------- 152 (1 row) count ------- 196 (1 row) count ------- 85 (1 row) count ------- 99 (1 row) count ------- 328 (1 row) count ------- 157 (1 row) count ------- 123 (1 row) count ------- 49 (1 row) count ------- 205 (1 row) count ------- 225 (1 row) count ------- 84 (1 row) count ------- 189 (1 row) count ------- 102 (1 row) count ------- 126 (1 row) count ------- 93 (1 row) count ------- 305 (1 row) count ------- 88 (1 row) count ------- 7 (1 row) count ------- 73 (1 row) count ------- 73 (1 row) count ------- 11 (1 row) count ------- 76 (1 row) count ------- 108 (1 row) count ------- 129 (1 row) count ------- 98 (1 row) count ------- 203 (1 row) count ------- 38 (1 row) count ------- 83 (1 row) count ------- 246 (1 row) count ------- 39 (1 row) count ------- 32 (1 row) count ------- 132 (1 row) count ------- 55 (1 row) count ------- 260 (1 row) count ------- 184 (1 row) count ------- 0 (1 row) count ------- 205 (1 row) count ------- 102 (1 row) count ------- 102 (1 row) count ------- 104 (1 row) count ------- 40 (1 row) count ------- 150 (1 row) count ------- 224 (1 row) count ------- 45 (1 row) count ------- 169 (1 row) count ------- 257 (1 row) count ------- 102 (1 row) count ------- 135 (1 row) count ------- 177 (1 row) count ------- 102 (1 row) count ------- 92 (1 row) count ------- 212 (1 row) count ------- 276 (1 row) count ------- 15 (1 row) count ------- 60 (1 row) count ------- 165 (1 row) count ------- 104 (1 row) count ------- 66 (1 row) count ------- 218 (1 row) count ------- 8 (1 row) count ------- 184 (1 row) count ------- 155 (1 row) count ------- 147 (1 row) count ------- 268 (1 row) count ------- 179 (1 row) count ------- 114 (1 row) count ------- 173 (1 row) count ------- 92 (1 row) count ------- 67 (1 row) count ------- 91 (1 row) count ------- 139 (1 row) count ------- 191 (1 row) count ------- 132 (1 row) count ------- 202 (1 row) count ------- 148 (1 row) count ------- 13 (1 row) count ------- 65 (1 row) count ------- 16 (1 row) count ------- 54 (1 row) count ------- 124 (1 row) count ------- 58 (1 row) count ------- 189 (1 row) count ------- 109 (1 row) count ------- 88 (1 row) count ------- 172 (1 row) count ------- 248 (1 row) count ------- 26 (1 row) count ------- 52 (1 row) count ------- 28 (1 row) count ------- 151 (1 row) count ------- 108 (1 row) count ------- 229 (1 row) count ------- 172 (1 row) count ------- 120 (1 row) count ------- 154 (1 row) count ------- 63 (1 row) count ------- 98 (1 row) count ------- 118 (1 row) count ------- 44 (1 row) count ------- 59 (1 row) count ------- 215 (1 row) count ------- 88 (1 row) count ------- 208 (1 row) count ------- 99 (1 row) count ------- 91 (1 row) count ------- 109 (1 row) count ------- 162 (1 row) count ------- 87 (1 row) count ------- 282 (1 row) count ------- 24 (1 row) count ------- 151 (1 row) count ------- 246 (1 row) count ------- 40 (1 row) count ------- 148 (1 row) count ------- 109 (1 row) count ------- 151 (1 row) count ------- 124 (1 row) count ------- 95 (1 row) count ------- 100 (1 row) count ------- 18 (1 row) count ------- 239 (1 row) count ------- 43 (1 row) count ------- 62 (1 row) count ------- 116 (1 row) count ------- 140 (1 row) count ------- 318 (1 row) count ------- 0 (1 row) count ------- 85 (1 row) count ------- 52 (1 row) count ------- 245 (1 row) count ------- 80 (1 row) count ------- 179 (1 row) count ------- 142 (1 row) count ------- 46 (1 row) count ------- 171 (1 row) count ------- 197 (1 row) count ------- 39 (1 row) count ------- 40 (1 row) count ------- 200 (1 row) count ------- 38 (1 row) count ------- 190 (1 row) count ------- 197 (1 row) count ------- 135 (1 row) count ------- 126 (1 row) count ------- 156 (1 row) count ------- 153 (1 row) count ------- 209 (1 row) count ------- 107 (1 row) count ------- 84 (1 row) count ------- 172 (1 row) count ------- 24 (1 row) count ------- 88 (1 row) count ------- 181 (1 row) count ------- 37 (1 row) count ------- 167 (1 row) count ------- 177 (1 row) count ------- 112 (1 row) count ------- 96 (1 row) count ------- 175 (1 row) count ------- 96 (1 row) count ------- 168 (1 row) count ------- 101 (1 row) count ------- 160 (1 row) count ------- 273 (1 row) count ------- 85 (1 row) count ------- 98 (1 row) count ------- 73 (1 row) count ------- 51 (1 row) count ------- 58 (1 row) count ------- 193 (1 row) count ------- 16 (1 row) count ------- 274 (1 row) count ------- 141 (1 row) count ------- 109 (1 row) count ------- 77 (1 row) count ------- 189 (1 row) count ------- 218 (1 row) count ------- 143 (1 row) count ------- 118 (1 row) count ------- 75 (1 row) count ------- 179 (1 row) count ------- 74 (1 row) count ------- 35 (1 row) count ------- 59 (1 row) count ------- 45 (1 row) count ------- 157 (1 row) count ------- 161 (1 row) count ------- 39 (1 row) count ------- 108 (1 row) count ------- 86 (1 row) count ------- 215 (1 row) count ------- 11 (1 row) count ------- 57 (1 row) count ------- 57 (1 row) count ------- 243 (1 row) count ------- 82 (1 row) count ------- 159 (1 row) count ------- 96 (1 row) count ------- 31 (1 row) count ------- 53 (1 row) count ------- 21 (1 row) count ------- 142 (1 row) count ------- 61 (1 row) count ------- 141 (1 row) count ------- 89 (1 row) count ------- 37 (1 row) count ------- 125 (1 row) count ------- 85 (1 row) count ------- 77 (1 row) count ------- 158 (1 row) count ------- 212 (1 row) count ------- 146 (1 row) count ------- 57 (1 row) count ------- 122 (1 row) count ------- 134 (1 row) count ------- 159 (1 row) count ------- 240 (1 row) count ------- 97 (1 row) count ------- 126 (1 row) count ------- 93 (1 row) count ------- 82 (1 row) count ------- 147 (1 row) count ------- 165 (1 row) count ------- 145 (1 row) count ------- 49 (1 row) count ------- 212 (1 row) count ------- 47 (1 row) count ------- 167 (1 row) count ------- 136 (1 row) count ------- 39 (1 row) count ------- 170 (1 row) count ------- 166 (1 row) count ------- 110 (1 row) count ------- 179 (1 row) count ------- 294 (1 row) count ------- 102 (1 row) count ------- 62 (1 row) count ------- 40 (1 row) count ------- 150 (1 row) count ------- 208 (1 row) count ------- 92 (1 row) count ------- 18 (1 row) count ------- 126 (1 row) count ------- 128 (1 row) count ------- 25 (1 row) count ------- 151 (1 row) count ------- 156 (1 row) count ------- 130 (1 row) count ------- 76 (1 row) count ------- 132 (1 row) count ------- 82 (1 row) count ------- 203 (1 row) count ------- 97 (1 row) count ------- 237 (1 row) count ------- 121 (1 row) count ------- 242 (1 row) count ------- 142 (1 row) count ------- 259 (1 row) count ------- 189 (1 row) count ------- 179 (1 row) count ------- 131 (1 row) count ------- 141 (1 row) count ------- 122 (1 row) count ------- 70 (1 row) count ------- 171 (1 row) count ------- 105 (1 row) count ------- 125 (1 row) count ------- 74 (1 row) count ------- 16 (1 row) count ------- 242 (1 row) count ------- 103 (1 row) count ------- 167 (1 row) count ------- 122 (1 row) count ------- 144 (1 row) count ------- 225 (1 row) count ------- 105 (1 row) count ------- 38 (1 row) count ------- 175 (1 row) count ------- 60 (1 row) count ------- 168 (1 row) count ------- 60 (1 row) count ------- 219 (1 row) count ------- 133 (1 row) count ------- 152 (1 row) count ------- 167 (1 row) count ------- 234 (1 row) count ------- 168 (1 row) count ------- 79 (1 row) count ------- 142 (1 row) count ------- 216 (1 row) count ------- 140 (1 row) count ------- 86 (1 row) count ------- 192 (1 row) count ------- 7 (1 row) count ------- 188 (1 row) count ------- 54 (1 row) count ------- 124 (1 row) count ------- 84 (1 row) count ------- 119 (1 row) count ------- 220 (1 row) count ------- 77 (1 row) count ------- 36 (1 row) count ------- 98 (1 row) count ------- 231 (1 row) count ------- 140 (1 row) count ------- 178 (1 row) count ------- 185 (1 row) count ------- 42 (1 row) count ------- 191 (1 row) count ------- 147 (1 row) count ------- 148 (1 row) count ------- 112 (1 row) count ------- 186 (1 row) count ------- 30 (1 row) count ------- 130 (1 row) count ------- 134 (1 row) count ------- 30 (1 row) count ------- 190 (1 row) count ------- 90 (1 row) count ------- 211 (1 row) count ------- 24 (1 row) count ------- 112 (1 row) count ------- 96 (1 row) count ------- 139 (1 row) count ------- 147 (1 row) count ------- 108 (1 row) count ------- 195 (1 row) count ------- 52 (1 row) count ------- 259 (1 row) count ------- 154 (1 row) count ------- 99 (1 row) count ------- 64 (1 row) count ------- 108 (1 row) count ------- 10 (1 row) count ------- 77 (1 row) count ------- 128 (1 row) count ------- 65 (1 row) count ------- 144 (1 row) count ------- 145 (1 row) count ------- 168 (1 row) count ------- 37 (1 row) count ------- 74 (1 row) count ------- 52 (1 row) count ------- 65 (1 row) count ------- 308 (1 row) count ------- 28 (1 row) count ------- 124 (1 row) count ------- 241 (1 row) count ------- 143 (1 row) count ------- 2 (1 row) count ------- 145 (1 row) count ------- 16 (1 row) count ------- 136 (1 row) count ------- 103 (1 row) count ------- 53 (1 row) count ------- 103 (1 row) count ------- 20 (1 row) count ------- 113 (1 row) count ------- 91 (1 row) count ------- 43 (1 row) count ------- 262 (1 row) count ------- 136 (1 row) count ------- 207 (1 row) count ------- 223 (1 row) count ------- 176 (1 row) count ------- 85 (1 row) count ------- 70 (1 row) count ------- 122 (1 row) count ------- 239 (1 row) count ------- 140 (1 row) count ------- 129 (1 row) count ------- 132 (1 row) count ------- 110 (1 row) count ------- 191 (1 row) count ------- 59 (1 row) count ------- 92 (1 row) count ------- 281 (1 row) count ------- 0 (1 row) count ------- 36 (1 row) count ------- 97 (1 row) count ------- 115 (1 row) count ------- 70 (1 row) count ------- 229 (1 row) count ------- 51 (1 row) count ------- 198 (1 row) count ------- 76 (1 row) count ------- 264 (1 row) count ------- 84 (1 row) count ------- 60 (1 row) count ------- 95 (1 row) count ------- 90 (1 row) count ------- 42 (1 row) count ------- 161 (1 row) count ------- 378 (1 row) count ------- 30 (1 row) count ------- 190 (1 row) count ------- 25 (1 row) count ------- 34 (1 row) count ------- 144 (1 row) count ------- 137 (1 row) count ------- 95 (1 row) count ------- 111 (1 row) count ------- 31 (1 row) count ------- 6 (1 row) count ------- 184 (1 row) count ------- 219 (1 row) count ------- 35 (1 row) count ------- 144 (1 row) count ------- 98 (1 row) count ------- 156 (1 row) count ------- 17 (1 row) count ------- 99 (1 row) count ------- 194 (1 row) count ------- 144 (1 row) count ------- 89 (1 row) count ------- 149 (1 row) count ------- 21 (1 row) count ------- 29 (1 row) count ------- 60 (1 row) count ------- 190 (1 row) count ------- 253 (1 row) count ------- 68 (1 row) count ------- 124 (1 row) count ------- 233 (1 row) count ------- 114 (1 row) count ------- 2 (1 row) count ------- 179 (1 row) count ------- 128 (1 row) count ------- 75 (1 row) count ------- 93 (1 row) count ------- 79 (1 row) count ------- 61 (1 row) count ------- 170 (1 row) count ------- 133 (1 row) count ------- 316 (1 row) count ------- 123 (1 row) count ------- 132 (1 row) count ------- 123 (1 row) count ------- 123 (1 row) count ------- 48 (1 row) count ------- 197 (1 row) count ------- 46 (1 row) count ------- 110 (1 row) count ------- 122 (1 row) count ------- 54 (1 row) count ------- 33 (1 row) count ------- 273 (1 row) count ------- 162 (1 row) count ------- 171 (1 row) count ------- 216 (1 row) count ------- 114 (1 row) count ------- 177 (1 row) count ------- 109 (1 row) count ------- 128 (1 row) count ------- 112 (1 row) count ------- 159 (1 row) count ------- 72 (1 row) count ------- 198 (1 row) count ------- 165 (1 row) count ------- 136 (1 row) count ------- 127 (1 row) count ------- 106 (1 row) count ------- 58 (1 row) count ------- 194 (1 row) count ------- 76 (1 row) count ------- 84 (1 row) count ------- 173 (1 row) count ------- 32 (1 row) count ------- 58 (1 row) count ------- 216 (1 row) count ------- 170 (1 row) count ------- 6 (1 row) count ------- 96 (1 row) count ------- 106 (1 row) count ------- 127 (1 row) count ------- 87 (1 row) count ------- 103 (1 row) count ------- 179 (1 row) count ------- 210 (1 row) count ------- 51 (1 row) count ------- 78 (1 row) count ------- 121 (1 row) count ------- 86 (1 row) count ------- 149 (1 row) count ------- 116 (1 row) count ------- 108 (1 row) count ------- 288 (1 row) count ------- 100 (1 row) count ------- 66 (1 row) count ------- 192 (1 row) count ------- 153 (1 row) count ------- 123 (1 row) count ------- 87 (1 row) count ------- 77 (1 row) count ------- 124 (1 row) count ------- 121 (1 row) count ------- 203 (1 row) count ------- 79 (1 row) count ------- 92 (1 row) count ------- 72 (1 row) count ------- 99 (1 row) count ------- 292 (1 row) count ------- 103 (1 row) count ------- 13 (1 row) count ------- 134 (1 row) count ------- 29 (1 row) count ------- 87 (1 row) count ------- 127 (1 row) count ------- 163 (1 row) count ------- 158 (1 row) count ------- 153 (1 row) count ------- 69 (1 row) count ------- 22 (1 row) count ------- 110 (1 row) count ------- 44 (1 row) count ------- 162 (1 row) count ------- 66 (1 row) count ------- 135 (1 row) count ------- 116 (1 row) count ------- 147 (1 row) count ------- 258 (1 row) count ------- 27 (1 row) count ------- 125 (1 row) count ------- 65 (1 row) count ------- 29 (1 row) count ------- 10 (1 row) count ------- 144 (1 row) count ------- 91 (1 row) count ------- 253 (1 row) count ------- 145 (1 row) count ------- 68 (1 row) count ------- 9 (1 row) count ------- 197 (1 row) count ------- 79 (1 row) count ------- 147 (1 row) count ------- 103 (1 row) count ------- 107 (1 row) count ------- 129 (1 row) count ------- 27 (1 row) count ------- 51 (1 row) count ------- 84 (1 row) count ------- 137 (1 row) count ------- 84 (1 row) count ------- 129 (1 row) count ------- 135 (1 row) count ------- 39 (1 row) count ------- 70 (1 row) count ------- 137 (1 row) count ------- 155 (1 row) count ------- 9 (1 row) count ------- 330 (1 row) count ------- 61 (1 row) count ------- 90 (1 row) count ------- 122 (1 row) count ------- 38 (1 row) count ------- 148 (1 row) count ------- 99 (1 row) count ------- 67 (1 row) count ------- 105 (1 row) count ------- 222 (1 row) count ------- 61 (1 row) count ------- 89 (1 row) count ------- 36 (1 row) count ------- 115 (1 row) count ------- 185 (1 row) count ------- 155 (1 row) count ------- 99 (1 row) count ------- 43 (1 row) count ------- 81 (1 row) count ------- 203 (1 row) count ------- 73 (1 row) count ------- 123 (1 row) count ------- 146 (1 row) count ------- 81 (1 row) count ------- 110 (1 row) count ------- 223 (1 row) count ------- 215 (1 row) count ------- 89 (1 row) count ------- 14 (1 row) count ------- 145 (1 row) count ------- 279 (1 row) count ------- 140 (1 row) count ------- 389 (1 row) count ------- 103 (1 row) count ------- 72 (1 row) count ------- 159 (1 row) count ------- 22 (1 row) count ------- 48 (1 row) count ------- 247 (1 row) count ------- 152 (1 row) count ------- 214 (1 row) count ------- 96 (1 row) count ------- 254 (1 row) count ------- 203 (1 row) count ------- 104 (1 row) count ------- 7 (1 row) count ------- 168 (1 row) count ------- 167 (1 row) count ------- 251 (1 row) count ------- 130 (1 row) count ------- 105 (1 row) count ------- 11 (1 row) count ------- 74 (1 row) count ------- 17 (1 row) count ------- 150 (1 row) count ------- 57 (1 row) count ------- 165 (1 row) count ------- 195 (1 row) count ------- 98 (1 row) count ------- 189 (1 row) count ------- 221 (1 row) count ------- 148 (1 row) count ------- 191 (1 row) count ------- 131 (1 row) count ------- 43 (1 row) count ------- 4 (1 row) count ------- 164 (1 row) count ------- 138 (1 row) count ------- 49 (1 row) count ------- 51 (1 row) count ------- 105 (1 row) count ------- 187 (1 row) count ------- 338 (1 row) count ------- 91 (1 row) count ------- 184 (1 row) count ------- 91 (1 row) count ------- 34 (1 row) count ------- 117 (1 row) count ------- 31 (1 row) count ------- 175 (1 row) count ------- 176 (1 row) count ------- 87 (1 row) count ------- 236 (1 row) count ------- 265 (1 row) count ------- 272 (1 row) count ------- 96 (1 row) count ------- 180 (1 row) count ------- 155 (1 row) count ------- 219 (1 row) count ------- 91 (1 row) count ------- 54 (1 row) count ------- 56 (1 row) count ------- 84 (1 row) count ------- 12 (1 row) count ------- 20 (1 row) count ------- 105 (1 row) count ------- 264 (1 row) count ------- 205 (1 row) count ------- 19 (1 row) count ------- 212 (1 row) count ------- 246 (1 row) count ------- 10 (1 row) count ------- 57 (1 row) count ------- 55 (1 row) count ------- 159 (1 row) count ------- 36 (1 row) count ------- 330 (1 row) count ------- 169 (1 row) count ------- 121 (1 row) count ------- 274 (1 row) count ------- 167 (1 row) count ------- 42 (1 row) count ------- 87 (1 row) count ------- 258 (1 row) count ------- 252 (1 row) count ------- 42 (1 row) count ------- 80 (1 row) count ------- 190 (1 row) count ------- 98 (1 row) count ------- 150 (1 row) count ------- 170 (1 row) count ------- 215 (1 row) count ------- 214 (1 row) count ------- 153 (1 row) count ------- 119 (1 row) count ------- 235 (1 row) count ------- 117 (1 row) count ------- 62 (1 row) count ------- 100 (1 row) count ------- 25 (1 row) count ------- 208 (1 row) count ------- 101 (1 row) count ------- 238 (1 row) count ------- 263 (1 row) count ------- 34 (1 row) count ------- 115 (1 row) count ------- 6 (1 row) count ------- 86 (1 row) count ------- 109 (1 row) count ------- 192 (1 row) count ------- 221 (1 row) count ------- 110 (1 row) count ------- 115 (1 row) count ------- 133 (1 row) count ------- 283 (1 row) count ------- 81 (1 row) count ------- 31 (1 row) count ------- 18 (1 row) count ------- 248 (1 row) count ------- 195 (1 row) count ------- 218 (1 row) count ------- 140 (1 row) count ------- 74 (1 row) count ------- 202 (1 row) count ------- 140 (1 row) count ------- 19 (1 row) count ------- 76 (1 row) count ------- 36 (1 row) count ------- 99 (1 row) count ------- 261 (1 row) count ------- 115 (1 row) count ------- 218 (1 row) count ------- 84 (1 row) count ------- 130 (1 row) count ------- 225 (1 row) count ------- 278 (1 row) count ------- 48 (1 row) count ------- 57 (1 row) count ------- 50 (1 row) count ------- 61 (1 row) count ------- 137 (1 row) count ------- 215 (1 row) count ------- 53 (1 row) count ------- 168 (1 row) count ------- 47 (1 row) count ------- 154 (1 row) count ------- 118 (1 row) count ------- 124 (1 row) count ------- 118 (1 row) count ------- 73 (1 row) count ------- 126 (1 row) count ------- 53 (1 row) count ------- 134 (1 row) count ------- 53 (1 row) count ------- 96 (1 row) count ------- 223 (1 row) count ------- 81 (1 row) count ------- 342 (1 row) count ------- 184 (1 row) count ------- 51 (1 row) count ------- 137 (1 row) count ------- 79 (1 row) count ------- 118 (1 row) count ------- 74 (1 row) count ------- 138 (1 row) count ------- 143 (1 row) count ------- 71 (1 row) count ------- 57 (1 row) count ------- 131 (1 row) count ------- 245 (1 row) count ------- 254 (1 row) count ------- 101 (1 row) count ------- 92 (1 row) count ------- 231 (1 row) count ------- 256 (1 row) count ------- 161 (1 row) count ------- 124 (1 row) count ------- 112 (1 row) count ------- 193 (1 row) count ------- 28 (1 row) count ------- 141 (1 row) count ------- 213 (1 row) count ------- 59 (1 row) count ------- 199 (1 row) count ------- 50 (1 row) count ------- 131 (1 row) count ------- 63 (1 row) count ------- 90 (1 row) count ------- 307 (1 row) count ------- 102 (1 row) count ------- 118 (1 row) count ------- 22 (1 row) count ------- 205 (1 row) count ------- 195 (1 row) count ------- 142 (1 row) count ------- 393 (1 row) count ------- 96 (1 row) count ------- 190 (1 row) count ------- 194 (1 row) count ------- 113 (1 row) count ------- 172 (1 row) count ------- 202 (1 row) count ------- 108 (1 row) count ------- 27 (1 row) count ------- 113 (1 row) count ------- 132 (1 row) count ------- 125 (1 row) count ------- 222 (1 row) count ------- 71 (1 row) count ------- 32 (1 row) count ------- 160 (1 row) count ------- 20 (1 row) count ------- 260 (1 row) count ------- 278 (1 row) count ------- 61 (1 row) count ------- 79 (1 row) count ------- 109 (1 row) count ------- 223 (1 row) count ------- 59 (1 row) count ------- 16 (1 row) count ------- 91 (1 row) count ------- 13 (1 row) count ------- 64 (1 row) count ------- 207 (1 row) count ------- 86 (1 row) count ------- 40 (1 row) count ------- 179 (1 row) count ------- 139 (1 row) count ------- 206 (1 row) count ------- 84 (1 row) count ------- 45 (1 row) count ------- 76 (1 row) count ------- 141 (1 row) count ------- 210 (1 row) count ------- 30 (1 row) count ------- 192 (1 row) count ------- 126 (1 row) count ------- 101 (1 row) count ------- 184 (1 row) count ------- 255 (1 row) count ------- 109 (1 row) count ------- 107 (1 row) count ------- 58 (1 row) count ------- 20 (1 row) count ------- 86 (1 row) count ------- 109 (1 row) count ------- 61 (1 row) count ------- 169 (1 row) count ------- 363 (1 row) count ------- 245 (1 row) count ------- 230 (1 row) count ------- 324 (1 row) count ------- 191 (1 row) count ------- 195 (1 row) count ------- 39 (1 row) count ------- 76 (1 row) count ------- 122 (1 row) count ------- 264 (1 row) count ------- 136 (1 row) count ------- 26 (1 row) count ------- 82 (1 row) count ------- 26 (1 row) count ------- 69 (1 row) count ------- 81 (1 row) count ------- 65 (1 row) count ------- 12 (1 row) count ------- 264 (1 row) count ------- 150 (1 row) count ------- 101 (1 row) count ------- 195 (1 row) count ------- 85 (1 row) count ------- 134 (1 row) count ------- 90 (1 row) count ------- 49 (1 row) count ------- 105 (1 row) count ------- 93 (1 row) count ------- 237 (1 row) count ------- 205 (1 row) count ------- 54 (1 row) count ------- 135 (1 row) count ------- 217 (1 row) count ------- 149 (1 row) count ------- 151 (1 row) count ------- 113 (1 row) count ------- 20 (1 row) count ------- 132 (1 row) count ------- 251 (1 row) count ------- 126 (1 row) count ------- 149 (1 row) count ------- 313 (1 row) count ------- 154 (1 row) count ------- 153 (1 row) count ------- 63 (1 row) count ------- 131 (1 row) count ------- 99 (1 row) count ------- 39 (1 row) count ------- 71 (1 row) count ------- 228 (1 row) count ------- 131 (1 row) count ------- 102 (1 row) count ------- 179 (1 row) count ------- 220 (1 row) count ------- 136 (1 row) count ------- 97 (1 row) count ------- 101 (1 row) count ------- 126 (1 row) count ------- 63 (1 row) count ------- 9 (1 row) count ------- 224 (1 row) count ------- 176 (1 row) count ------- 71 (1 row) count ------- 147 (1 row) count ------- 78 (1 row) count ------- 68 (1 row) count ------- 199 (1 row) count ------- 150 (1 row) count ------- 86 (1 row) count ------- 48 (1 row) count ------- 107 (1 row) count ------- 48 (1 row) count ------- 68 (1 row) count ------- 197 (1 row) count ------- 210 (1 row) count ------- 139 (1 row) count ------- 4 (1 row) count ------- 189 (1 row) count ------- 130 (1 row) count ------- 147 (1 row) count ------- 108 (1 row) count ------- 97 (1 row) count ------- 154 (1 row) count ------- 222 (1 row) count ------- 233 (1 row) count ------- 143 (1 row) count ------- 101 (1 row) count ------- 100 (1 row) count ------- 91 (1 row) count ------- 149 (1 row) count ------- 77 (1 row) count ------- 19 (1 row) count ------- 115 (1 row) count ------- 67 (1 row) count ------- 101 (1 row) count ------- 151 (1 row) count ------- 215 (1 row) count ------- 69 (1 row) count ------- 101 (1 row) count ------- 151 (1 row) count ------- 62 (1 row) count ------- 53 (1 row) count ------- 76 (1 row) count ------- 49 (1 row) count ------- 23 (1 row) count ------- 68 (1 row) count ------- 129 (1 row) count ------- 284 (1 row) count ------- 277 (1 row) count ------- 135 (1 row) count ------- 99 (1 row) count ------- 91 (1 row) count ------- 165 (1 row) count ------- 161 (1 row) count ------- 168 (1 row) count ------- 139 (1 row) count ------- 152 (1 row) count ------- 130 (1 row) count ------- 124 (1 row) count ------- 171 (1 row) count ------- 103 (1 row) count ------- 27 (1 row) count ------- 60 (1 row) count ------- 93 (1 row) count ------- 105 (1 row) count ------- 102 (1 row) count ------- 114 (1 row) count ------- 134 (1 row) count ------- 8 (1 row) count ------- 203 (1 row) count ------- 135 (1 row) count ------- 191 (1 row) count ------- 12 (1 row) count ------- 33 (1 row) count ------- 36 (1 row) count ------- 74 (1 row) count ------- 258 (1 row) count ------- 79 (1 row) count ------- 131 (1 row) count ------- 60 (1 row) count ------- 27 (1 row) count ------- 16 (1 row) count ------- 286 (1 row) count ------- 219 (1 row) count ------- 33 (1 row) count ------- 4 (1 row) count ------- 38 (1 row) count ------- 106 (1 row) count ------- 18 (1 row) count ------- 33 (1 row) count ------- 160 (1 row) count ------- 149 (1 row) count ------- 18 (1 row) count ------- 43 (1 row) count ------- 146 (1 row) count ------- 9 (1 row) count ------- 140 (1 row) count ------- 263 (1 row) count ------- 30 (1 row) count ------- 119 (1 row) count ------- 39 (1 row) count ------- 202 (1 row) count ------- 52 (1 row) count ------- 12 (1 row) count ------- 22 (1 row) count ------- 252 (1 row) count ------- 146 (1 row) count ------- 5 (1 row) count ------- 108 (1 row) count ------- 189 (1 row) count ------- 32 (1 row) count ------- 204 (1 row) count ------- 94 (1 row) count ------- 131 (1 row) count ------- 139 (1 row) count ------- 17 (1 row) count ------- 52 (1 row) count ------- 123 (1 row) count ------- 164 (1 row) count ------- 178 (1 row) count ------- 165 (1 row) count ------- 84 (1 row) count ------- 9 (1 row) count ------- 248 (1 row) count ------- 112 (1 row) count ------- 82 (1 row) count ------- 136 (1 row) count ------- 59 (1 row) count ------- 72 (1 row) count ------- 64 (1 row) count ------- 98 (1 row) count ------- 144 (1 row) count ------- 202 (1 row) count ------- 68 (1 row) count ------- 182 (1 row) count ------- 86 (1 row) count ------- 137 (1 row) count ------- 43 (1 row) count ------- 41 (1 row) count ------- 52 (1 row) count ------- 50 (1 row) count ------- 246 (1 row) count ------- 224 (1 row) count ------- 107 (1 row) count ------- 144 (1 row) count ------- 280 (1 row) count ------- 133 (1 row) count ------- 132 (1 row) count ------- 46 (1 row) count ------- 160 (1 row) count ------- 80 (1 row) count ------- 152 (1 row) count ------- 65 (1 row) count ------- 36 (1 row) count ------- 175 (1 row) count ------- 100 (1 row) count ------- 25 (1 row) count ------- 163 (1 row) count ------- 91 (1 row) count ------- 293 (1 row) count ------- 25 (1 row) count ------- 163 (1 row) count ------- 126 (1 row) count ------- 53 (1 row) count ------- 221 (1 row) count ------- 96 (1 row) count ------- 191 (1 row) count ------- 275 (1 row) count ------- 148 (1 row) count ------- 174 (1 row) count ------- 103 (1 row) count ------- 191 (1 row) count ------- 92 (1 row) count ------- 63 (1 row) count ------- 67 (1 row) count ------- 150 (1 row) count ------- 73 (1 row) count ------- 134 (1 row) count ------- 93 (1 row) count ------- 106 (1 row) count ------- 234 (1 row) count ------- 240 (1 row) count ------- 171 (1 row) count ------- 124 (1 row) count ------- 39 (1 row) count ------- 86 (1 row) count ------- 68 (1 row) count ------- 6 (1 row) count ------- 136 (1 row) count ------- 75 (1 row) count ------- 217 (1 row) count ------- 217 (1 row) count ------- 78 (1 row) count ------- 141 (1 row) count ------- 22 (1 row) count ------- 23 (1 row) count ------- 98 (1 row) count ------- 47 (1 row) count ------- 66 (1 row) count ------- 238 (1 row) count ------- 48 (1 row) count ------- 228 (1 row) count ------- 134 (1 row) count ------- 126 (1 row) count ------- 218 (1 row) count ------- 129 (1 row) count ------- 112 (1 row) count ------- 155 (1 row) count ------- 36 (1 row) count ------- 19 (1 row) count ------- 30 (1 row) count ------- 84 (1 row) count ------- 154 (1 row) count ------- 166 (1 row) count ------- 11 (1 row) count ------- 94 (1 row) count ------- 177 (1 row) count ------- 86 (1 row) count ------- 175 (1 row) count ------- 113 (1 row) count ------- 45 (1 row) count ------- 64 (1 row) count ------- 42 (1 row) count ------- 234 (1 row) count ------- 129 (1 row) count ------- 107 (1 row) count ------- 113 (1 row) count ------- 163 (1 row) count ------- 70 (1 row) count ------- 55 (1 row) count ------- 10 (1 row) count ------- 88 (1 row) count ------- 47 (1 row) count ------- 36 (1 row) count ------- 4 (1 row) count ------- 109 (1 row) count ------- 23 (1 row) count ------- 0 (1 row) count ------- 29 (1 row) count ------- 187 (1 row) count ------- 89 (1 row) count ------- 151 (1 row) count ------- 174 (1 row) count ------- 107 (1 row) count ------- 10 (1 row) count ------- 27 (1 row) count ------- 155 (1 row) count ------- 48 (1 row) count ------- 18 (1 row) count ------- 35 (1 row) count ------- 131 (1 row) count ------- 153 (1 row) count ------- 298 (1 row) count ------- 222 (1 row) count ------- 82 (1 row) count ------- 81 (1 row) count ------- 83 (1 row) count ------- 14 (1 row) count ------- 44 (1 row) count ------- 98 (1 row) count ------- 141 (1 row) count ------- 35 (1 row) count ------- 260 (1 row) count ------- 112 (1 row) count ------- 45 (1 row) count ------- 73 (1 row) count ------- 66 (1 row) count ------- 15 (1 row) count ------- 163 (1 row) count ------- 130 (1 row) count ------- 197 (1 row) count ------- 79 (1 row) count ------- 26 (1 row) count ------- 57 (1 row) count ------- 235 (1 row) count ------- 110 (1 row) count ------- 147 (1 row) count ------- 5 (1 row) count ------- 127 (1 row) count ------- 77 (1 row) count ------- 62 (1 row) count ------- 152 (1 row) count ------- 23 (1 row) count ------- 66 (1 row) count ------- 216 (1 row) count ------- 46 (1 row) count ------- 87 (1 row) count ------- 5 (1 row) count ------- 196 (1 row) count ------- 201 (1 row) count ------- 199 (1 row) count ------- 78 (1 row) count ------- 14 (1 row) count ------- 127 (1 row) count ------- 113 (1 row) count ------- 229 (1 row) count ------- 108 (1 row) count ------- 188 (1 row) count ------- 103 (1 row) count ------- 99 (1 row) count ------- 191 (1 row) count ------- 113 (1 row) count ------- 207 (1 row) count ------- 266 (1 row) count ------- 180 (1 row) count ------- 106 (1 row) count ------- 80 (1 row) count ------- 119 (1 row) count ------- 51 (1 row) count ------- 149 (1 row) count ------- 0 (1 row) count ------- 158 (1 row) count ------- 16 (1 row) count ------- 109 (1 row) count ------- 33 (1 row) count ------- 92 (1 row) count ------- 246 (1 row) count ------- 140 (1 row) count ------- 81 (1 row) count ------- 215 (1 row) count ------- 100 (1 row) count ------- 120 (1 row) count ------- 187 (1 row) count ------- 232 (1 row) count ------- 138 (1 row) count ------- 3 (1 row) count ------- 111 (1 row) count ------- 214 (1 row) count ------- 95 (1 row) count ------- 101 (1 row) count ------- 65 (1 row) count ------- 182 (1 row) count ------- 113 (1 row) count ------- 88 (1 row) count ------- 168 (1 row) count ------- 8 (1 row) count ------- 236 (1 row) count ------- 136 (1 row) count ------- 62 (1 row) count ------- 19 (1 row) count ------- 41 (1 row) count ------- 308 (1 row) count ------- 96 (1 row) count ------- 315 (1 row) count ------- 140 (1 row) count ------- 127 (1 row) count ------- 211 (1 row) count ------- 35 (1 row) count ------- 86 (1 row) count ------- 87 (1 row) count ------- 116 (1 row) count ------- 57 (1 row) count ------- 77 (1 row) count ------- 33 (1 row) count ------- 22 (1 row) count ------- 116 (1 row) count ------- 120 (1 row) count ------- 63 (1 row) count ------- 272 (1 row) count ------- 164 (1 row) count ------- 123 (1 row) count ------- 136 (1 row) count ------- 172 (1 row) count ------- 43 (1 row) count ------- 81 (1 row) count ------- 102 (1 row) count ------- 35 (1 row) count ------- 175 (1 row) count ------- 113 (1 row) count ------- 232 (1 row) count ------- 40 (1 row) count ------- 120 (1 row) count ------- 84 (1 row) count ------- 21 (1 row) count ------- 39 (1 row) count ------- 157 (1 row) count ------- 4 (1 row) count ------- 51 (1 row) count ------- 54 (1 row) count ------- 176 (1 row) count ------- 56 (1 row) count ------- 131 (1 row) count ------- 44 (1 row) count ------- 36 (1 row) count ------- 86 (1 row) count ------- 227 (1 row) count ------- 128 (1 row) count ------- 238 (1 row) count ------- 69 (1 row) count ------- 53 (1 row) count ------- 34 (1 row) count ------- 8 (1 row) count ------- 161 (1 row) count ------- 104 (1 row) count ------- 159 (1 row) count ------- 142 (1 row) count ------- 230 (1 row) count ------- 132 (1 row) count ------- 81 (1 row) count ------- 130 (1 row) count ------- 185 (1 row) count ------- 138 (1 row) count ------- 136 (1 row) count ------- 301 (1 row) count ------- 223 (1 row) count ------- 98 (1 row) count ------- 180 (1 row) count ------- 78 (1 row) count ------- 241 (1 row) count ------- 209 (1 row) count ------- 114 (1 row) count ------- 60 (1 row) count ------- 43 (1 row) count ------- 37 (1 row) count ------- 101 (1 row) count ------- 138 (1 row) count ------- 60 (1 row) count ------- 134 (1 row) count ------- 27 (1 row) count ------- 168 (1 row) count ------- 21 (1 row) count ------- 249 (1 row) count ------- 18 (1 row) count ------- 177 (1 row) count ------- 46 (1 row) count ------- 77 (1 row) count ------- 51 (1 row) count ------- 63 (1 row) count ------- 117 (1 row) count ------- 27 (1 row) count ------- 64 (1 row) count ------- 52 (1 row) count ------- 178 (1 row) count ------- 126 (1 row) count ------- 149 (1 row) count ------- 85 (1 row) count ------- 219 (1 row) count ------- 130 (1 row) count ------- 4 (1 row) count ------- 16 (1 row) count ------- 162 (1 row) count ------- 223 (1 row) count ------- 60 (1 row) count ------- 0 (1 row) count ------- 138 (1 row) count ------- 126 (1 row) count ------- 127 (1 row) count ------- 88 (1 row) count ------- 50 (1 row) count ------- 26 (1 row) count ------- 199 (1 row) count ------- 41 (1 row) count ------- 16 (1 row) count ------- 77 (1 row) count ------- 121 (1 row) count ------- 135 (1 row) count ------- 21 (1 row) count ------- 88 (1 row) count ------- 106 (1 row) count ------- 230 (1 row) count ------- 119 (1 row) count ------- 109 (1 row) count ------- 98 (1 row) count ------- 173 (1 row) count ------- 245 (1 row) count ------- 167 (1 row) count ------- 79 (1 row) count ------- 23 (1 row) count ------- 67 (1 row) count ------- 50 (1 row) count ------- 88 (1 row) count ------- 116 (1 row) count ------- 16 (1 row) count ------- 85 (1 row) count ------- 110 (1 row) count ------- 53 (1 row) count ------- 154 (1 row) count ------- 134 (1 row) count ------- 82 (1 row) count ------- 96 (1 row) count ------- 218 (1 row) count ------- 8 (1 row) count ------- 177 (1 row) count ------- 132 (1 row) count ------- 34 (1 row) count ------- 122 (1 row) count ------- 170 (1 row) count ------- 85 (1 row) count ------- 98 (1 row) count ------- 32 (1 row) count ------- 137 (1 row) count ------- 221 (1 row) count ------- 43 (1 row) count ------- 94 (1 row) count ------- 97 (1 row) count ------- 276 (1 row) count ------- 138 (1 row) count ------- 89 (1 row) count ------- 86 (1 row) count ------- 94 (1 row) count ------- 95 (1 row) count ------- 20 (1 row) count ------- 137 (1 row) count ------- 183 (1 row) count ------- 34 (1 row) count ------- 103 (1 row) count ------- 41 (1 row) count ------- 359 (1 row) count ------- 146 (1 row) count ------- 196 (1 row) count ------- 106 (1 row) count ------- 78 (1 row) count ------- 216 (1 row) count ------- 209 (1 row) count ------- 118 (1 row) count ------- 92 (1 row) count ------- 86 (1 row) count ------- 37 (1 row) count ------- 132 (1 row) count ------- 353 (1 row) count ------- 17 (1 row) count ------- 78 (1 row) count ------- 187 (1 row) count ------- 123 (1 row) count ------- 55 (1 row) count ------- 39 (1 row) count ------- 17 (1 row) count ------- 122 (1 row) count ------- 82 (1 row) count ------- 58 (1 row) count ------- 63 (1 row) count ------- 132 (1 row) count ------- 43 (1 row) count ------- 105 (1 row) count ------- 208 (1 row) count ------- 86 (1 row) count ------- 149 (1 row) count ------- 219 (1 row) count ------- 78 (1 row) count ------- 61 (1 row) count ------- 122 (1 row) count ------- 95 (1 row) count ------- 30 (1 row) count ------- 53 (1 row) count ------- 78 (1 row) count ------- 102 (1 row) count ------- 178 (1 row) count ------- 88 (1 row) count ------- 166 (1 row) count ------- 143 (1 row) count ------- 3 (1 row) count ------- 139 (1 row) count ------- 107 (1 row) count ------- 60 (1 row) count ------- 195 (1 row) count ------- 25 (1 row) count ------- 237 (1 row) count ------- 41 (1 row) count ------- 41 (1 row) count ------- 56 (1 row) count ------- 100 (1 row) count ------- 31 (1 row) count ------- 268 (1 row) count ------- 81 (1 row) count ------- 144 (1 row) count ------- 78 (1 row) count ------- 103 (1 row) count ------- 104 (1 row) count ------- 74 (1 row) count ------- 79 (1 row) count ------- 241 (1 row) count ------- 226 (1 row) count ------- 92 (1 row) count ------- 229 (1 row) count ------- 103 (1 row) count ------- 106 (1 row) count ------- 71 (1 row) count ------- 64 (1 row) count ------- 32 (1 row) count ------- 78 (1 row) count ------- 247 (1 row) count ------- 85 (1 row) count ------- 222 (1 row) count ------- 267 (1 row) count ------- 104 (1 row) count ------- 85 (1 row) count ------- 103 (1 row) count ------- 216 (1 row) count ------- 189 (1 row) count ------- 212 (1 row) count ------- 87 (1 row) count ------- 162 (1 row) count ------- 140 (1 row) count ------- 150 (1 row) count ------- 117 (1 row) count ------- 106 (1 row) count ------- 80 (1 row) count ------- 71 (1 row) count ------- 40 (1 row) count ------- 205 (1 row) count ------- 245 (1 row) count ------- 124 (1 row) count ------- 181 (1 row) count ------- 36 (1 row) count ------- 31 (1 row) count ------- 294 (1 row) count ------- 102 (1 row) count ------- 119 (1 row) count ------- 244 (1 row) count ------- 162 (1 row) count ------- 24 (1 row) count ------- 103 (1 row) count ------- 74 (1 row) count ------- 69 (1 row) count ------- 24 (1 row) count ------- 151 (1 row) count ------- 90 (1 row) count ------- 95 (1 row) count ------- 42 (1 row) count ------- 135 (1 row) count ------- 213 (1 row) count ------- 113 (1 row) count ------- 78 (1 row) count ------- 80 (1 row) count ------- 34 (1 row) count ------- 68 (1 row) count ------- 78 (1 row) count ------- 215 (1 row) count ------- 158 (1 row) count ------- 137 (1 row) count ------- 64 (1 row) count ------- 176 (1 row) count ------- 13 (1 row) count ------- 143 (1 row) count ------- 122 (1 row) count ------- 115 (1 row) count ------- 185 (1 row) count ------- 140 (1 row) count ------- 44 (1 row) count ------- 170 (1 row) count ------- 218 (1 row) count ------- 33 (1 row) count ------- 129 (1 row) count ------- 206 (1 row) count ------- 119 (1 row) count ------- 84 (1 row) count ------- 89 (1 row) count ------- 110 (1 row) count ------- 39 (1 row) count ------- 241 (1 row) count ------- 134 (1 row) count ------- 98 (1 row) count ------- 34 (1 row) count ------- 94 (1 row) count ------- 106 (1 row) count ------- 179 (1 row) count ------- 197 (1 row) count ------- 31 (1 row) count ------- 115 (1 row) count ------- 87 (1 row) count ------- 111 (1 row) count ------- 158 (1 row) count ------- 135 (1 row) count ------- 95 (1 row) count ------- 105 (1 row) count ------- 102 (1 row) count ------- 48 (1 row) count ------- 175 (1 row) count ------- 66 (1 row) count ------- 256 (1 row) count ------- 235 (1 row) count ------- 161 (1 row) count ------- 199 (1 row) count ------- 145 (1 row) count ------- 95 (1 row) count ------- 0 (1 row) count ------- 113 (1 row) count ------- 176 (1 row) count ------- 253 (1 row) count ------- 91 (1 row) count ------- 10 (1 row) count ------- 148 (1 row) count ------- 176 (1 row) count ------- 205 (1 row) count ------- 84 (1 row) count ------- 74 (1 row) count ------- 201 (1 row) count ------- 220 (1 row) count ------- 152 (1 row) count ------- 162 (1 row) count ------- 183 (1 row) count ------- 162 (1 row) count ------- 53 (1 row) count ------- 174 (1 row) count ------- 18 (1 row) count ------- 115 (1 row) count ------- 164 (1 row) count ------- 85 (1 row) count ------- 47 (1 row) count ------- 24 (1 row) count ------- 192 (1 row) count ------- 132 (1 row) count ------- 139 (1 row) count ------- 67 (1 row) count ------- 131 (1 row) count ------- 175 (1 row) count ------- 80 (1 row) count ------- 123 (1 row) count ------- 89 (1 row) count ------- 174 (1 row) count ------- 11 (1 row) count ------- 59 (1 row) count ------- 119 (1 row) count ------- 21 (1 row) count ------- 88 (1 row) count ------- 20 (1 row) count ------- 76 (1 row) count ------- 137 (1 row) count ------- 114 (1 row) count ------- 67 (1 row) count ------- 36 (1 row) count ------- 283 (1 row) count ------- 21 (1 row) count ------- 90 (1 row) count ------- 91 (1 row) count ------- 121 (1 row) count ------- 155 (1 row) count ------- 116 (1 row) count ------- 27 (1 row) count ------- 68 (1 row) count ------- 1 (1 row) count ------- 225 (1 row) count ------- 133 (1 row) count ------- 237 (1 row) count ------- 139 (1 row) count ------- 130 (1 row) count ------- 115 (1 row) count ------- 154 (1 row) count ------- 107 (1 row) count ------- 89 (1 row) count ------- 90 (1 row) count ------- 125 (1 row) count ------- 63 (1 row) count ------- 54 (1 row) count ------- 49 (1 row) count ------- 135 (1 row) count ------- 215 (1 row) count ------- 6 (1 row) count ------- 153 (1 row) count ------- 125 (1 row) count ------- 101 (1 row) count ------- 111 (1 row) count ------- 213 (1 row) count ------- 75 (1 row) count ------- 64 (1 row) count ------- 105 (1 row) count ------- 162 (1 row) count ------- 267 (1 row) count ------- 136 (1 row) count ------- 133 (1 row) count ------- 171 (1 row) count ------- 136 (1 row) count ------- 124 (1 row) count ------- 153 (1 row) count ------- 40 (1 row) count ------- 132 (1 row) count ------- 99 (1 row) count ------- 220 (1 row) count ------- 63 (1 row) count ------- 67 (1 row) count ------- 164 (1 row) count ------- 150 (1 row) count ------- 70 (1 row) count ------- 99 (1 row) count ------- 238 (1 row) count ------- 112 (1 row) count ------- 87 (1 row) count ------- 127 (1 row) count ------- 184 (1 row) count ------- 138 (1 row) count ------- 77 (1 row) count ------- 130 (1 row) count ------- 74 (1 row) count ------- 129 (1 row) count ------- 69 (1 row) count ------- 192 (1 row) count ------- 126 (1 row) count ------- 42 (1 row) count ------- 44 (1 row) count ------- 196 (1 row) count ------- 143 (1 row) count ------- 254 (1 row) count ------- 136 (1 row) count ------- 4 (1 row) count ------- 213 (1 row) count ------- 75 (1 row) count ------- 84 (1 row) count ------- 122 (1 row) count ------- 230 (1 row) count ------- 85 (1 row) count ------- 96 (1 row) count ------- 126 (1 row) count ------- 32 (1 row) count ------- 89 (1 row) count ------- 70 (1 row) count ------- 232 (1 row) count ------- 199 (1 row) count ------- 163 (1 row) count ------- 187 (1 row) count ------- 56 (1 row) count ------- 58 (1 row) count ------- 147 (1 row) count ------- 103 (1 row) count ------- 38 (1 row) count ------- 11 (1 row) count ------- 160 (1 row) count ------- 195 (1 row) count ------- 146 (1 row) count ------- 75 (1 row) count ------- 196 (1 row) count ------- 33 (1 row) count ------- 269 (1 row) count ------- 193 (1 row) count ------- 112 (1 row) count ------- 113 (1 row) count ------- 89 (1 row) count ------- 167 (1 row) count ------- 117 (1 row) count ------- 198 (1 row) count ------- 163 (1 row) count ------- 141 (1 row) count ------- 126 (1 row) count ------- 162 (1 row) count ------- 114 (1 row) count ------- 98 (1 row) count ------- 142 (1 row) count ------- 88 (1 row) count ------- 101 (1 row) count ------- 157 (1 row) count ------- 17 (1 row) count ------- 113 (1 row) count ------- 163 (1 row) count ------- 56 (1 row) count ------- 24 (1 row) count ------- 177 (1 row) count ------- 75 (1 row) count ------- 112 (1 row) count ------- 120 (1 row) count ------- 91 (1 row) count ------- 214 (1 row) count ------- 64 (1 row) count ------- 92 (1 row) count ------- 161 (1 row) count ------- 169 (1 row) count ------- 158 (1 row) count ------- 24 (1 row) count ------- 119 (1 row) count ------- 241 (1 row) count ------- 56 (1 row) count ------- 104 (1 row) count ------- 118 (1 row) count ------- 14 (1 row) count ------- 36 (1 row) count ------- 7 (1 row) count ------- 48 (1 row) count ------- 205 (1 row) count ------- 171 (1 row) count ------- 88 (1 row) count ------- 223 (1 row) count ------- 265 (1 row) count ------- 6 (1 row) count ------- 279 (1 row) count ------- 52 (1 row) count ------- 127 (1 row) count ------- 155 (1 row) count ------- 129 (1 row) count ------- 101 (1 row) count ------- 109 (1 row) count ------- 151 (1 row) count ------- 215 (1 row) count ------- 81 (1 row) count ------- 209 (1 row) count ------- 122 (1 row) count ------- 94 (1 row) count ------- 31 (1 row) count ------- 100 (1 row) count ------- 144 (1 row) count ------- 148 (1 row) count ------- 78 (1 row) count ------- 26 (1 row) count ------- 73 (1 row) count ------- 118 (1 row) count ------- 112 (1 row) count ------- 89 (1 row) count ------- 42 (1 row) count ------- 101 (1 row) count ------- 202 (1 row) count ------- 140 (1 row) count ------- 56 (1 row) count ------- 37 (1 row) count ------- 103 (1 row) count ------- 25 (1 row) count ------- 25 (1 row) count ------- 116 (1 row) count ------- 163 (1 row) count ------- 73 (1 row) count ------- 147 (1 row) count ------- 129 (1 row) count ------- 15 (1 row) count ------- 27 (1 row) count ------- 1 (1 row) count ------- 11 (1 row) count ------- 141 (1 row) count ------- 109 (1 row) count ------- 119 (1 row) count ------- 167 (1 row) count ------- 144 (1 row) count ------- 103 (1 row) count ------- 57 (1 row) count ------- 79 (1 row) count ------- 269 (1 row) count ------- 113 (1 row) count ------- 22 (1 row) count ------- 175 (1 row) count ------- 20 (1 row) count ------- 77 (1 row) count ------- 177 (1 row) count ------- 38 (1 row) count ------- 204 (1 row) count ------- 195 (1 row) count ------- 238 (1 row) count ------- 286 (1 row) count ------- 271 (1 row) count ------- 33 (1 row) count ------- 160 (1 row) count ------- 3 (1 row) count ------- 125 (1 row) count ------- 222 (1 row) count ------- 140 (1 row) count ------- 41 (1 row) count ------- 52 (1 row) count ------- 20 (1 row) count ------- 165 (1 row) count ------- 54 (1 row) count ------- 103 (1 row) count ------- 64 (1 row) count ------- 109 (1 row) count ------- 83 (1 row) count ------- 65 (1 row) count ------- 99 (1 row) count ------- 135 (1 row) count ------- 154 (1 row) count ------- 107 (1 row) count ------- 128 (1 row) count ------- 142 (1 row) count ------- 29 (1 row) count ------- 279 (1 row) count ------- 116 (1 row) count ------- 86 (1 row) count ------- 136 (1 row) count ------- 121 (1 row) count ------- 46 (1 row) count ------- 252 (1 row) count ------- 153 (1 row) count ------- 14 (1 row) count ------- 145 (1 row) count ------- 123 (1 row) count ------- 263 (1 row) count ------- 50 (1 row) count ------- 182 (1 row) count ------- 157 (1 row) count ------- 72 (1 row) count ------- 165 (1 row) count ------- 57 (1 row) count ------- 13 (1 row) count ------- 129 (1 row) count ------- 18 (1 row) count ------- 153 (1 row) count ------- 142 (1 row) count ------- 87 (1 row) count ------- 145 (1 row) count ------- 103 (1 row) count ------- 91 (1 row) count ------- 14 (1 row) count ------- 221 (1 row) count ------- 18 (1 row) count ------- 254 (1 row) count ------- 70 (1 row) count ------- 13 (1 row) count ------- 175 (1 row) count ------- 27 (1 row) count ------- 143 (1 row) count ------- 266 (1 row) count ------- 252 (1 row) count ------- 187 (1 row) count ------- 223 (1 row) count ------- 25 (1 row) count ------- 206 (1 row) count ------- 7 (1 row) count ------- 128 (1 row) count ------- 125 (1 row) count ------- 84 (1 row) count ------- 125 (1 row) count ------- 162 (1 row) count ------- 161 (1 row) count ------- 199 (1 row) count ------- 63 (1 row) count ------- 162 (1 row) count ------- 15 (1 row) count ------- 28 (1 row) count ------- 59 (1 row) count ------- 178 (1 row) count ------- 127 (1 row) count ------- 130 (1 row) count ------- 203 (1 row) count ------- 31 (1 row) count ------- 113 (1 row) count ------- 30 (1 row) count ------- 108 (1 row) count ------- 168 (1 row) count ------- 202 (1 row) count ------- 70 (1 row) count ------- 171 (1 row) count ------- 235 (1 row) count ------- 55 (1 row) count ------- 269 (1 row) count ------- 217 (1 row) count ------- 172 (1 row) count ------- 104 (1 row) count ------- 139 (1 row) count ------- 163 (1 row) count ------- 50 (1 row) count ------- 176 (1 row) count ------- 255 (1 row) count ------- 23 (1 row) count ------- 137 (1 row) count ------- 138 (1 row) count ------- 240 (1 row) count ------- 45 (1 row) count ------- 195 (1 row) count ------- 196 (1 row) count ------- 17 (1 row) count ------- 208 (1 row) count ------- 99 (1 row) count ------- 9 (1 row) count ------- 177 (1 row) count ------- 95 (1 row) count ------- 333 (1 row) count ------- 84 (1 row) count ------- 122 (1 row) count ------- 43 (1 row) count ------- 109 (1 row) count ------- 149 (1 row) count ------- 106 (1 row) count ------- 175 (1 row) count ------- 84 (1 row) count ------- 113 (1 row) count ------- 154 (1 row) count ------- 116 (1 row) count ------- 180 (1 row) count ------- 143 (1 row) count ------- 267 (1 row) count ------- 252 (1 row) count ------- 184 (1 row) count ------- 71 (1 row) count ------- 129 (1 row) count ------- 111 (1 row) count ------- 295 (1 row) count ------- 111 (1 row) count ------- 155 (1 row) count ------- 133 (1 row) count ------- 152 (1 row) count ------- 28 (1 row) count ------- 152 (1 row) count ------- 277 (1 row) count ------- 17 (1 row) count ------- 69 (1 row) count ------- 6 (1 row) count ------- 66 (1 row) count ------- 132 (1 row) count ------- 144 (1 row) count ------- 85 (1 row) count ------- 111 (1 row) count ------- 68 (1 row) count ------- 132 (1 row) count ------- 55 (1 row) count ------- 309 (1 row) count ------- 149 (1 row) count ------- 169 (1 row) count ------- 149 (1 row) count ------- 68 (1 row) count ------- 97 (1 row) count ------- 172 (1 row) count ------- 112 (1 row) count ------- 48 (1 row) count ------- 94 (1 row) count ------- 87 (1 row) count ------- 132 (1 row) count ------- 34 (1 row) count ------- 95 (1 row) count ------- 18 (1 row) count ------- 233 (1 row) count ------- 97 (1 row) count ------- 141 (1 row) count ------- 235 (1 row) count ------- 146 (1 row) count ------- 44 (1 row) count ------- 157 (1 row) count ------- 238 (1 row) count ------- 137 (1 row) count ------- 103 (1 row) count ------- 187 (1 row) count ------- 227 (1 row) count ------- 70 (1 row) count ------- 131 (1 row) count ------- 114 (1 row) count ------- 115 (1 row) count ------- 207 (1 row) count ------- 259 (1 row) count ------- 73 (1 row) count ------- 113 (1 row) count ------- 226 (1 row) count ------- 184 (1 row) count ------- 303 (1 row) count ------- 105 (1 row) count ------- 146 (1 row) count ------- 163 (1 row) count ------- 55 (1 row) count ------- 191 (1 row) count ------- 149 (1 row) count ------- 156 (1 row) count ------- 81 (1 row) count ------- 56 (1 row) count ------- 211 (1 row) count ------- 82 (1 row) count ------- 243 (1 row) count ------- 50 (1 row) count ------- 118 (1 row) count ------- 65 (1 row) count ------- 255 (1 row) count ------- 119 (1 row) count ------- 104 (1 row) count ------- 249 (1 row) count ------- 215 (1 row) count ------- 88 (1 row) count ------- 19 (1 row) count ------- 189 (1 row) count ------- 103 (1 row) count ------- 63 (1 row) count ------- 126 (1 row) count ------- 19 (1 row) count ------- 63 (1 row) count ------- 31 (1 row) count ------- 140 (1 row) count ------- 105 (1 row) count ------- 103 (1 row) count ------- 185 (1 row) count ------- 104 (1 row) count ------- 83 (1 row) count ------- 148 (1 row) count ------- 139 (1 row) count ------- 157 (1 row) count ------- 31 (1 row) count ------- 18 (1 row) count ------- 30 (1 row) count ------- 140 (1 row) count ------- 51 (1 row) count ------- 146 (1 row) count ------- 191 (1 row) count ------- 7 (1 row) count ------- 134 (1 row) count ------- 290 (1 row) count ------- 128 (1 row) count ------- 154 (1 row) count ------- 99 (1 row) count ------- 269 (1 row) count ------- 107 (1 row) count ------- 141 (1 row) count ------- 140 (1 row) count ------- 213 (1 row) count ------- 194 (1 row) count ------- 68 (1 row) count ------- 16 (1 row) count ------- 84 (1 row) count ------- 58 (1 row) count ------- 70 (1 row) count ------- 131 (1 row) count ------- 69 (1 row) count ------- 184 (1 row) count ------- 47 (1 row) count ------- 12 (1 row) count ------- 160 (1 row) count ------- 174 (1 row) count ------- 108 (1 row) count ------- 201 (1 row) count ------- 74 (1 row) count ------- 12 (1 row) count ------- 192 (1 row) count ------- 190 (1 row) count ------- 114 (1 row) count ------- 239 (1 row) count ------- 141 (1 row) count ------- 131 (1 row) count ------- 32 (1 row) count ------- 65 (1 row) count ------- 100 (1 row) count ------- 138 (1 row) count ------- 124 (1 row) count ------- 212 (1 row) count ------- 143 (1 row) count ------- 74 (1 row) count ------- 199 (1 row) count ------- 129 (1 row) count ------- 0 (1 row) count ------- 45 (1 row) count ------- 16 (1 row) count ------- 60 (1 row) count ------- 153 (1 row) count ------- 252 (1 row) count ------- 83 (1 row) count ------- 299 (1 row) count ------- 134 (1 row) count ------- 81 (1 row) count ------- 25 (1 row) count ------- 77 (1 row) count ------- 163 (1 row) count ------- 9 (1 row) count ------- 127 (1 row) count ------- 277 (1 row) count ------- 48 (1 row) count ------- 106 (1 row) count ------- 61 (1 row) count ------- 183 (1 row) count ------- 89 (1 row) count ------- 125 (1 row) count ------- 192 (1 row) count ------- 168 (1 row) count ------- 136 (1 row) count ------- 162 (1 row) count ------- 79 (1 row) count ------- 119 (1 row) count ------- 104 (1 row) count ------- 16 (1 row) count ------- 202 (1 row) count ------- 44 (1 row) count ------- 108 (1 row) count ------- 86 (1 row) count ------- 243 (1 row) count ------- 68 (1 row) count ------- 23 (1 row) count ------- 168 (1 row) count ------- 127 (1 row) count ------- 136 (1 row) count ------- 40 (1 row) count ------- 103 (1 row) count ------- 210 (1 row) count ------- 43 (1 row) count ------- 34 (1 row) count ------- 16 (1 row) count ------- 89 (1 row) count ------- 47 (1 row) count ------- 188 (1 row) count ------- 127 (1 row) count ------- 1 (1 row) count ------- 97 (1 row) count ------- 336 (1 row) count ------- 170 (1 row) count ------- 193 (1 row) count ------- 123 (1 row) count ------- 110 (1 row) count ------- 165 (1 row) count ------- 111 (1 row) count ------- 229 (1 row) count ------- 68 (1 row) count ------- 188 (1 row) count ------- 98 (1 row) count ------- 106 (1 row) count ------- 65 (1 row) count ------- 141 (1 row) count ------- 242 (1 row) count ------- 122 (1 row) count ------- 109 (1 row) count ------- 103 (1 row) count ------- 66 (1 row) count ------- 259 (1 row) count ------- 41 (1 row) count ------- 27 (1 row) count ------- 153 (1 row) count ------- 76 (1 row) count ------- 11 (1 row) count ------- 38 (1 row) count ------- 241 (1 row) count ------- 103 (1 row) count ------- 31 (1 row) count ------- 122 (1 row) count ------- 53 (1 row) count ------- 219 (1 row) count ------- 78 (1 row) count ------- 141 (1 row) count ------- 77 (1 row) count ------- 99 (1 row) count ------- 38 (1 row) count ------- 171 (1 row) count ------- 6 (1 row) count ------- 258 (1 row) count ------- 72 (1 row) count ------- 166 (1 row) count ------- 75 (1 row) count ------- 138 (1 row) count ------- 271 (1 row) count ------- 82 (1 row) count ------- 88 (1 row) count ------- 111 (1 row) count ------- 135 (1 row) count ------- 75 (1 row) count ------- 99 (1 row) count ------- 39 (1 row) count ------- 60 (1 row) count ------- 86 (1 row) count ------- 100 (1 row) count ------- 311 (1 row) count ------- 152 (1 row) count ------- 288 (1 row) count ------- 96 (1 row) count ------- 53 (1 row) count ------- 225 (1 row) count ------- 120 (1 row) count ------- 35 (1 row) count ------- 28 (1 row) count ------- 285 (1 row) count ------- 244 (1 row) count ------- 99 (1 row) count ------- 73 (1 row) count ------- 130 (1 row) count ------- 85 (1 row) count ------- 196 (1 row) count ------- 89 (1 row) count ------- 6 (1 row) count ------- 75 (1 row) count ------- 149 (1 row) count ------- 34 (1 row) count ------- 9 (1 row) count ------- 52 (1 row) count ------- 10 (1 row) count ------- 141 (1 row) count ------- 105 (1 row) count ------- 92 (1 row) count ------- 192 (1 row) count ------- 49 (1 row) count ------- 103 (1 row) count ------- 54 (1 row) count ------- 238 (1 row) count ------- 216 (1 row) count ------- 157 (1 row) count ------- 236 (1 row) count ------- 165 (1 row) count ------- 132 (1 row) count ------- 317 (1 row) count ------- 246 (1 row) count ------- 102 (1 row) count ------- 48 (1 row) count ------- 175 (1 row) count ------- 99 (1 row) count ------- 186 (1 row) count ------- 178 (1 row) count ------- 33 (1 row) count ------- 44 (1 row) count ------- 93 (1 row) count ------- 104 (1 row) count ------- 247 (1 row) count ------- 48 (1 row) count ------- 164 (1 row) count ------- 119 (1 row) count ------- 148 (1 row) count ------- 126 (1 row) count ------- 127 (1 row) count ------- 98 (1 row) count ------- 111 (1 row) count ------- 112 (1 row) count ------- 46 (1 row) count ------- 141 (1 row) count ------- 141 (1 row) count ------- 116 (1 row) count ------- 48 (1 row) count ------- 250 (1 row) count ------- 106 (1 row) count ------- 191 (1 row) count ------- 175 (1 row) count ------- 144 (1 row) count ------- 106 (1 row) count ------- 259 (1 row) count ------- 269 (1 row) count ------- 117 (1 row) count ------- 258 (1 row) count ------- 265 (1 row) count ------- 110 (1 row) count ------- 116 (1 row) count ------- 99 (1 row) count ------- 12 (1 row) count ------- 221 (1 row) count ------- 42 (1 row) count ------- 55 (1 row) count ------- 199 (1 row) count ------- 138 (1 row) count ------- 56 (1 row) count ------- 145 (1 row) count ------- 73 (1 row) count ------- 82 (1 row) count ------- 71 (1 row) count ------- 43 (1 row) count ------- 196 (1 row) count ------- 84 (1 row) count ------- 43 (1 row) count ------- 177 (1 row) count ------- 112 (1 row) count ------- 150 (1 row) count ------- 30 (1 row) count ------- 171 (1 row) count ------- 111 (1 row) count ------- 126 (1 row) count ------- 200 (1 row) count ------- 96 (1 row) count ------- 35 (1 row) count ------- 98 (1 row) count ------- 82 (1 row) count ------- 12 (1 row) count ------- 19 (1 row) count ------- 117 (1 row) count ------- 154 (1 row) count ------- 48 (1 row) count ------- 18 (1 row) count ------- 194 (1 row) count ------- 77 (1 row) count ------- 194 (1 row) count ------- 39 (1 row) count ------- 111 (1 row) count ------- 25 (1 row) count ------- 16 (1 row) count ------- 60 (1 row) count ------- 38 (1 row) count ------- 96 (1 row) count ------- 42 (1 row) count ------- 75 (1 row) count ------- 78 (1 row) count ------- 202 (1 row) count ------- 213 (1 row) count ------- 132 (1 row) count ------- 179 (1 row) count ------- 88 (1 row) count ------- 153 (1 row) count ------- 207 (1 row) count ------- 204 (1 row) count ------- 211 (1 row) count ------- 28 (1 row) count ------- 200 (1 row) count ------- 103 (1 row) count ------- 100 (1 row) count ------- 74 (1 row) count ------- 258 (1 row) count ------- 117 (1 row) count ------- 188 (1 row) count ------- 201 (1 row) count ------- 130 (1 row) count ------- 362 (1 row) count ------- 81 (1 row) count ------- 56 (1 row) count ------- 279 (1 row) count ------- 282 (1 row) count ------- 171 (1 row) count ------- 174 (1 row) count ------- 138 (1 row) count ------- 138 (1 row) count ------- 118 (1 row) count ------- 94 (1 row) count ------- 64 (1 row) count ------- 201 (1 row) count ------- 74 (1 row) count ------- 142 (1 row) count ------- 180 (1 row) count ------- 111 (1 row) count ------- 128 (1 row) count ------- 52 (1 row) count ------- 65 (1 row) count ------- 46 (1 row) count ------- 155 (1 row) count ------- 84 (1 row) count ------- 151 (1 row) count ------- 47 (1 row) count ------- 38 (1 row) count ------- 278 (1 row) count ------- 104 (1 row) count ------- 60 (1 row) count ------- 76 (1 row) count ------- 186 (1 row) count ------- 189 (1 row) count ------- 98 (1 row) count ------- 106 (1 row) count ------- 144 (1 row) count ------- 68 (1 row) count ------- 105 (1 row) count ------- 235 (1 row) count ------- 126 (1 row) count ------- 57 (1 row) count ------- 193 (1 row) count ------- 181 (1 row) count ------- 116 (1 row) count ------- 275 (1 row) count ------- 277 (1 row) count ------- 174 (1 row) count ------- 10 (1 row) count ------- 8 (1 row) count ------- 112 (1 row) count ------- 79 (1 row) count ------- 121 (1 row) count ------- 221 (1 row) count ------- 94 (1 row) count ------- 145 (1 row) count ------- 146 (1 row) count ------- 150 (1 row) count ------- 323 (1 row) count ------- 149 (1 row) count ------- 120 (1 row) count ------- 69 (1 row) count ------- 88 (1 row) count ------- 154 (1 row) count ------- 32 (1 row) count ------- 154 (1 row) count ------- 120 (1 row) count ------- 74 (1 row) count ------- 61 (1 row) count ------- 54 (1 row) count ------- 127 (1 row) count ------- 8 (1 row) count ------- 301 (1 row) count ------- 132 (1 row) count ------- 214 (1 row) count ------- 136 (1 row) count ------- 254 (1 row) count ------- 77 (1 row) count ------- 260 (1 row) count ------- 138 (1 row) count ------- 164 (1 row) count ------- 136 (1 row) count ------- 169 (1 row) count ------- 82 (1 row) count ------- 178 (1 row) count ------- 142 (1 row) count ------- 186 (1 row) count ------- 0 (1 row) count ------- 200 (1 row) count ------- 108 (1 row) count ------- 91 (1 row) count ------- 37 (1 row) count ------- 206 (1 row) count ------- 167 (1 row) count ------- 52 (1 row) count ------- 191 (1 row) count ------- 283 (1 row) count ------- 164 (1 row) count ------- 254 (1 row) count ------- 197 (1 row) count ------- 135 (1 row) count ------- 73 (1 row) count ------- 41 (1 row) count ------- 51 (1 row) count ------- 72 (1 row) count ------- 138 (1 row) count ------- 79 (1 row) count ------- 54 (1 row) count ------- 69 (1 row) count ------- 213 (1 row) count ------- 164 (1 row) count ------- 92 (1 row) count ------- 14 (1 row) count ------- 13 (1 row) count ------- 236 (1 row) count ------- 137 (1 row) count ------- 127 (1 row) count ------- 154 (1 row) count ------- 210 (1 row) count ------- 47 (1 row) count ------- 197 (1 row) count ------- 249 (1 row) count ------- 72 (1 row) count ------- 101 (1 row) count ------- 178 (1 row) count ------- 55 (1 row) count ------- 18 (1 row) count ------- 61 (1 row) count ------- 378 (1 row) count ------- 102 (1 row) count ------- 66 (1 row) count ------- 93 (1 row) count ------- 127 (1 row) count ------- 225 (1 row) count ------- 105 (1 row) count ------- 46 (1 row) count ------- 177 (1 row) count ------- 147 (1 row) count ------- 7 (1 row) count ------- 205 (1 row) count ------- 89 (1 row) count ------- 157 (1 row) count ------- 102 (1 row) count ------- 117 (1 row) count ------- 134 (1 row) count ------- 131 (1 row) count ------- 75 (1 row) count ------- 73 (1 row) count ------- 69 (1 row) count ------- 121 (1 row) count ------- 163 (1 row) count ------- 10 (1 row) count ------- 26 (1 row) count ------- 94 (1 row) count ------- 5 (1 row) count ------- 116 (1 row) count ------- 120 (1 row) count ------- 157 (1 row) count ------- 31 (1 row) count ------- 96 (1 row) count ------- 98 (1 row) count ------- 71 (1 row) count ------- 47 (1 row) count ------- 125 (1 row) count ------- 1 (1 row) count ------- 142 (1 row) count ------- 145 (1 row) count ------- 154 (1 row) count ------- 95 (1 row) count ------- 64 (1 row) count ------- 127 (1 row) count ------- 212 (1 row) count ------- 135 (1 row) count ------- 267 (1 row) count ------- 164 (1 row) count ------- 130 (1 row) count ------- 94 (1 row) count ------- 46 (1 row) count ------- 173 (1 row) count ------- 88 (1 row) count ------- 131 (1 row) count ------- 214 (1 row) count ------- 219 (1 row) count ------- 9 (1 row) count ------- 134 (1 row) count ------- 125 (1 row) count ------- 16 (1 row) count ------- 110 (1 row) count ------- 31 (1 row) count ------- 231 (1 row) count ------- 123 (1 row) count ------- 47 (1 row) count ------- 170 (1 row) count ------- 10 (1 row) count ------- 166 (1 row) count ------- 190 (1 row) count ------- 100 (1 row) count ------- 126 (1 row) count ------- 94 (1 row) count ------- 79 (1 row) count ------- 94 (1 row) count ------- 185 (1 row) count ------- 219 (1 row) count ------- 52 (1 row) count ------- 209 (1 row) count ------- 141 (1 row) count ------- 258 (1 row) count ------- 113 (1 row) count ------- 102 (1 row) count ------- 16 (1 row) count ------- 116 (1 row) count ------- 292 (1 row) count ------- 98 (1 row) count ------- 49 (1 row) count ------- 93 (1 row) count ------- 89 (1 row) count ------- 169 (1 row) count ------- 190 (1 row) count ------- 49 (1 row) count ------- 203 (1 row) count ------- 165 (1 row) count ------- 16 (1 row) count ------- 149 (1 row) count ------- 359 (1 row) count ------- 186 (1 row) count ------- 105 (1 row) count ------- 31 (1 row) count ------- 206 (1 row) count ------- 256 (1 row) count ------- 256 (1 row) count ------- 166 (1 row) count ------- 103 (1 row) count ------- 85 (1 row) count ------- 139 (1 row) count ------- 93 (1 row) count ------- 199 (1 row) count ------- 70 (1 row) count ------- 218 (1 row) count ------- 36 (1 row) count ------- 66 (1 row) count ------- 175 (1 row) count ------- 153 (1 row) count ------- 204 (1 row) count ------- 257 (1 row) count ------- 3 (1 row) count ------- 161 (1 row) count ------- 232 (1 row) count ------- 48 (1 row) count ------- 200 (1 row) count ------- 94 (1 row) count ------- 303 (1 row) count ------- 209 (1 row) count ------- 133 (1 row) count ------- 151 (1 row) count ------- 150 (1 row) count ------- 210 (1 row) count ------- 165 (1 row) count ------- 89 (1 row) count ------- 38 (1 row) count ------- 19 (1 row) count ------- 94 (1 row) count ------- 47 (1 row) count ------- 139 (1 row) count ------- 301 (1 row) count ------- 77 (1 row) count ------- 23 (1 row) count ------- 57 (1 row) count ------- 11 (1 row) count ------- 156 (1 row) count ------- 195 (1 row) count ------- 177 (1 row) count ------- 147 (1 row) count ------- 151 (1 row) count ------- 112 (1 row) count ------- 139 (1 row) count ------- 112 (1 row) count ------- 179 (1 row) count ------- 156 (1 row) count ------- 75 (1 row) count ------- 53 (1 row) count ------- 115 (1 row) count ------- 91 (1 row) count ------- 187 (1 row) count ------- 16 (1 row) count ------- 90 (1 row) count ------- 100 (1 row) count ------- 110 (1 row) count ------- 50 (1 row) count ------- 160 (1 row) count ------- 182 (1 row) count ------- 152 (1 row) count ------- 257 (1 row) count ------- 63 (1 row) count ------- 80 (1 row) count ------- 120 (1 row) count ------- 153 (1 row) count ------- 61 (1 row) count ------- 210 (1 row) count ------- 188 (1 row) count ------- 36 (1 row) count ------- 129 (1 row) count ------- 180 (1 row) count ------- 35 (1 row) count ------- 164 (1 row) count ------- 16 (1 row) count ------- 230 (1 row) count ------- 211 (1 row) count ------- 114 (1 row) count ------- 115 (1 row) count ------- 54 (1 row) count ------- 184 (1 row) count ------- 181 (1 row) count ------- 72 (1 row) count ------- 120 (1 row) count ------- 114 (1 row) count ------- 26 (1 row) count ------- 317 (1 row) count ------- 26 (1 row) count ------- 254 (1 row) count ------- 134 (1 row) count ------- 152 (1 row) count ------- 27 (1 row) count ------- 124 (1 row) count ------- 131 (1 row) count ------- 99 (1 row) count ------- 55 (1 row) count ------- 148 (1 row) count ------- 168 (1 row) count ------- 0 (1 row) count ------- 198 (1 row) count ------- 27 (1 row) count ------- 139 (1 row) count ------- 63 (1 row) count ------- 154 (1 row) count ------- 12 (1 row) count ------- 74 (1 row) count ------- 62 (1 row) count ------- 36 (1 row) count ------- 50 (1 row) count ------- 161 (1 row) count ------- 122 (1 row) count ------- 58 (1 row) count ------- 111 (1 row) count ------- 44 (1 row) count ------- 238 (1 row) count ------- 190 (1 row) count ------- 19 (1 row) count ------- 185 (1 row) count ------- 145 (1 row) count ------- 36 (1 row) count ------- 75 (1 row) count ------- 98 (1 row) count ------- 71 (1 row) count ------- 175 (1 row) count ------- 21 (1 row) count ------- 64 (1 row) count ------- 214 (1 row) count ------- 231 (1 row) count ------- 53 (1 row) count ------- 303 (1 row) count ------- 178 (1 row) count ------- 51 (1 row) count ------- 247 (1 row) count ------- 83 (1 row) count ------- 68 (1 row) count ------- 107 (1 row) count ------- 160 (1 row) count ------- 171 (1 row) count ------- 80 (1 row) count ------- 105 (1 row) count ------- 78 (1 row) count ------- 31 (1 row) count ------- 18 (1 row) count ------- 137 (1 row) count ------- 155 (1 row) count ------- 101 (1 row) count ------- 29 (1 row) count ------- 68 (1 row) count ------- 148 (1 row) count ------- 244 (1 row) count ------- 205 (1 row) count ------- 129 (1 row) count ------- 175 (1 row) count ------- 201 (1 row) count ------- 119 (1 row) count ------- 9 (1 row) count ------- 123 (1 row) count ------- 35 (1 row) count ------- 45 (1 row) count ------- 155 (1 row) count ------- 63 (1 row) count ------- 44 (1 row) count ------- 212 (1 row) count ------- 12 (1 row) count ------- 172 (1 row) count ------- 76 (1 row) count ------- 106 (1 row) count ------- 0 (1 row) count ------- 39 (1 row) count ------- 44 (1 row) count ------- 95 (1 row) count ------- 89 (1 row) count ------- 156 (1 row) count ------- 5 (1 row) count ------- 263 (1 row) count ------- 141 (1 row) count ------- 37 (1 row) count ------- 61 (1 row) count ------- 77 (1 row) count ------- 176 (1 row) count ------- 111 (1 row) count ------- 59 (1 row) count ------- 93 (1 row) count ------- 114 (1 row) count ------- 141 (1 row) count ------- 24 (1 row) count ------- 226 (1 row) count ------- 116 (1 row) count ------- 135 (1 row) count ------- 173 (1 row) count ------- 103 (1 row) count ------- 116 (1 row) count ------- 182 (1 row) count ------- 107 (1 row) count ------- 163 (1 row) count ------- 64 (1 row) count ------- 129 (1 row) count ------- 32 (1 row) count ------- 241 (1 row) count ------- 169 (1 row) count ------- 44 (1 row) count ------- 278 (1 row) count ------- 289 (1 row) count ------- 82 (1 row) count ------- 96 (1 row) count ------- 118 (1 row) count ------- 0 (1 row) count ------- 115 (1 row) count ------- 163 (1 row) count ------- 62 (1 row) count ------- 206 (1 row) count ------- 61 (1 row) count ------- 17 (1 row) count ------- 17 (1 row) count ------- 201 (1 row) count ------- 46 (1 row) count ------- 42 (1 row) count ------- 84 (1 row) count ------- 72 (1 row) count ------- 120 (1 row) count ------- 130 (1 row) count ------- 36 (1 row) count ------- 217 (1 row) count ------- 176 (1 row) count ------- 109 (1 row) count ------- 119 (1 row) count ------- 156 (1 row) count ------- 245 (1 row) count ------- 134 (1 row) count ------- 15 (1 row) count ------- 18 (1 row) count ------- 194 (1 row) count ------- 65 (1 row) count ------- 195 (1 row) count ------- 178 (1 row) count ------- 131 (1 row) count ------- 66 (1 row) count ------- 101 (1 row) count ------- 174 (1 row) count ------- 72 (1 row) count ------- 16 (1 row) count ------- 205 (1 row) count ------- 18 (1 row) count ------- 198 (1 row) count ------- 17 (1 row) count ------- 6 (1 row) count ------- 71 (1 row) count ------- 174 (1 row) count ------- 0 (1 row) count ------- 223 (1 row) count ------- 44 (1 row) count ------- 126 (1 row) count ------- 166 (1 row) count ------- 63 (1 row) count ------- 201 (1 row) count ------- 171 (1 row) count ------- 21 (1 row) count ------- 299 (1 row) count ------- 70 (1 row) count ------- 219 (1 row) count ------- 85 (1 row) count ------- 104 (1 row) count ------- 87 (1 row) count ------- 55 (1 row) count ------- 24 (1 row) count ------- 95 (1 row) count ------- 171 (1 row) count ------- 141 (1 row) count ------- 214 (1 row) count ------- 22 (1 row) count ------- 207 (1 row) count ------- 79 (1 row) count ------- 24 (1 row) count ------- 137 (1 row) count ------- 90 (1 row) count ------- 131 (1 row) count ------- 326 (1 row) count ------- 213 (1 row) count ------- 184 (1 row) count ------- 66 (1 row) count ------- 112 (1 row) count ------- 146 (1 row) count ------- 66 (1 row) count ------- 91 (1 row) count ------- 193 (1 row) count ------- 95 (1 row) count ------- 136 (1 row) count ------- 15 (1 row) count ------- 164 (1 row) count ------- 42 (1 row) count ------- 138 (1 row) count ------- 90 (1 row) count ------- 85 (1 row) count ------- 40 (1 row) count ------- 67 (1 row) count ------- 49 (1 row) count ------- 319 (1 row) count ------- 169 (1 row) count ------- 122 (1 row) count ------- 136 (1 row) count ------- 92 (1 row) count ------- 134 (1 row) count ------- 262 (1 row) count ------- 80 (1 row) count ------- 173 (1 row) count ------- 58 (1 row) count ------- 114 (1 row) count ------- 252 (1 row) count ------- 178 (1 row) count ------- 187 (1 row) count ------- 161 (1 row) count ------- 149 (1 row) count ------- 59 (1 row) count ------- 121 (1 row) count ------- 20 (1 row) count ------- 4 (1 row) count ------- 92 (1 row) count ------- 119 (1 row) count ------- 119 (1 row) count ------- 191 (1 row) count ------- 101 (1 row) count ------- 168 (1 row) count ------- 110 (1 row) count ------- 78 (1 row) count ------- 20 (1 row) count ------- 13 (1 row) count ------- 112 (1 row) count ------- 228 (1 row) count ------- 103 (1 row) count ------- 194 (1 row) count ------- 276 (1 row) count ------- 126 (1 row) count ------- 11 (1 row) count ------- 156 (1 row) count ------- 32 (1 row) count ------- 70 (1 row) count ------- 164 (1 row) count ------- 199 (1 row) count ------- 98 (1 row) count ------- 105 (1 row) count ------- 250 (1 row) count ------- 47 (1 row) count ------- 73 (1 row) count ------- 178 (1 row) count ------- 12 (1 row) count ------- 51 (1 row) count ------- 0 (1 row) count ------- 117 (1 row) count ------- 136 (1 row) count ------- 142 (1 row) count ------- 60 (1 row) count ------- 51 (1 row) count ------- 47 (1 row) count ------- 192 (1 row) count ------- 84 (1 row) count ------- 180 (1 row) count ------- 217 (1 row) count ------- 167 (1 row) count ------- 111 (1 row) count ------- 102 (1 row) count ------- 126 (1 row) count ------- 68 (1 row) count ------- 44 (1 row) count ------- 160 (1 row) count ------- 102 (1 row) count ------- 98 (1 row) count ------- 92 (1 row) count ------- 87 (1 row) count ------- 107 (1 row) count ------- 195 (1 row) count ------- 86 (1 row) count ------- 190 (1 row) count ------- 137 (1 row) count ------- 113 (1 row) count ------- 115 (1 row) count ------- 69 (1 row) count ------- 4 (1 row) count ------- 76 (1 row) count ------- 12 (1 row) count ------- 112 (1 row) count ------- 65 (1 row) count ------- 174 (1 row) count ------- 269 (1 row) count ------- 0 (1 row) count ------- 241 (1 row) count ------- 172 (1 row) count ------- 58 (1 row) count ------- 140 (1 row) count ------- 23 (1 row) count ------- 108 (1 row) count ------- 321 (1 row) count ------- 39 (1 row) count ------- 61 (1 row) count ------- 143 (1 row) count ------- 135 (1 row) count ------- 75 (1 row) count ------- 181 (1 row) count ------- 116 (1 row) count ------- 212 (1 row) count ------- 76 (1 row) count ------- 24 (1 row) count ------- 47 (1 row) count ------- 229 (1 row) count ------- 161 (1 row) count ------- 43 (1 row) count ------- 73 (1 row) count ------- 48 (1 row) count ------- 88 (1 row) count ------- 123 (1 row) count ------- 122 (1 row) count ------- 124 (1 row) count ------- 267 (1 row) count ------- 33 (1 row) count ------- 233 (1 row) count ------- 189 (1 row) count ------- 217 (1 row) count ------- 24 (1 row) count ------- 103 (1 row) count ------- 77 (1 row) count ------- 16 (1 row) count ------- 260 (1 row) count ------- 176 (1 row) count ------- 200 (1 row) count ------- 3 (1 row) count ------- 92 (1 row) count ------- 73 (1 row) count ------- 155 (1 row) count ------- 144 (1 row) count ------- 309 (1 row) count ------- 156 (1 row) count ------- 132 (1 row) count ------- 204 (1 row) count ------- 68 (1 row) count ------- 111 (1 row) count ------- 197 (1 row) count ------- 150 (1 row) count ------- 132 (1 row) count ------- 210 (1 row) count ------- 170 (1 row) count ------- 122 (1 row) count ------- 154 (1 row) count ------- 29 (1 row) count ------- 148 (1 row) count ------- 99 (1 row) count ------- 174 (1 row) count ------- 252 (1 row) count ------- 68 (1 row) count ------- 179 (1 row) count ------- 127 (1 row) count ------- 71 (1 row) count ------- 154 (1 row) count ------- 78 (1 row) count ------- 35 (1 row) count ------- 58 (1 row) count ------- 181 (1 row) count ------- 167 (1 row) count ------- 197 (1 row) count ------- 116 (1 row) count ------- 110 (1 row) count ------- 151 (1 row) count ------- 129 (1 row) count ------- 106 (1 row) count ------- 68 (1 row) count ------- 160 (1 row) count ------- 182 (1 row) count ------- 134 (1 row) count ------- 51 (1 row) count ------- 105 (1 row) count ------- 33 (1 row) count ------- 73 (1 row) count ------- 230 (1 row) count ------- 52 (1 row) count ------- 142 (1 row) count ------- 245 (1 row) count ------- 70 (1 row) count ------- 15 (1 row) count ------- 131 (1 row) count ------- 119 (1 row) count ------- 105 (1 row) count ------- 129 (1 row) count ------- 34 (1 row) count ------- 86 (1 row) count ------- 202 (1 row) count ------- 69 (1 row) count ------- 87 (1 row) count ------- 244 (1 row) count ------- 46 (1 row) count ------- 108 (1 row) count ------- 71 (1 row) count ------- 197 (1 row) count ------- 64 (1 row) count ------- 67 (1 row) count ------- 287 (1 row) count ------- 42 (1 row) count ------- 166 (1 row) count ------- 212 (1 row) count ------- 110 (1 row) count ------- 19 (1 row) count ------- 223 (1 row) count ------- 45 (1 row) count ------- 190 (1 row) count ------- 87 (1 row) count ------- 92 (1 row) count ------- 169 (1 row) count ------- 153 (1 row) count ------- 31 (1 row) count ------- 188 (1 row) count ------- 89 (1 row) count ------- 94 (1 row) count ------- 107 (1 row) count ------- 64 (1 row) count ------- 118 (1 row) count ------- 412 (1 row) count ------- 113 (1 row) count ------- 86 (1 row) count ------- 177 (1 row) count ------- 115 (1 row) count ------- 82 (1 row) count ------- 142 (1 row) count ------- 188 (1 row) count ------- 83 (1 row) count ------- 198 (1 row) count ------- 73 (1 row) count ------- 120 (1 row) count ------- 148 (1 row) count ------- 282 (1 row) count ------- 84 (1 row) count ------- 319 (1 row) count ------- 250 (1 row) count ------- 279 (1 row) count ------- 263 (1 row) count ------- 126 (1 row) count ------- 26 (1 row) count ------- 205 (1 row) count ------- 367 (1 row) count ------- 2 (1 row) count ------- 97 (1 row) count ------- 282 (1 row) count ------- 186 (1 row) count ------- 218 (1 row) count ------- 43 (1 row) count ------- 145 (1 row) count ------- 38 (1 row) count ------- 8 (1 row) count ------- 129 (1 row) count ------- 150 (1 row) count ------- 174 (1 row) count ------- 90 (1 row) count ------- 282 (1 row) count ------- 95 (1 row) count ------- 65 (1 row) count ------- 173 (1 row) count ------- 93 (1 row) count ------- 206 (1 row) count ------- 174 (1 row) count ------- 26 (1 row) count ------- 254 (1 row) count ------- 161 (1 row) count ------- 112 (1 row) count ------- 19 (1 row) count ------- 120 (1 row) count ------- 38 (1 row) count ------- 160 (1 row) count ------- 177 (1 row) count ------- 95 (1 row) count ------- 139 (1 row) count ------- 110 (1 row) count ------- 337 (1 row) count ------- 16 (1 row) count ------- 198 (1 row) count ------- 55 (1 row) count ------- 104 (1 row) count ------- 138 (1 row) count ------- 11 (1 row) count ------- 77 (1 row) count ------- 42 (1 row) count ------- 140 (1 row) count ------- 29 (1 row) count ------- 45 (1 row) count ------- 139 (1 row) count ------- 45 (1 row) count ------- 133 (1 row) count ------- 227 (1 row) count ------- 109 (1 row) count ------- 106 (1 row) count ------- 15 (1 row) count ------- 110 (1 row) count ------- 68 (1 row) count ------- 127 (1 row) count ------- 227 (1 row) count ------- 118 (1 row) count ------- 23 (1 row) count ------- 149 (1 row) count ------- 136 (1 row) count ------- 68 (1 row) count ------- 46 (1 row) count ------- 103 (1 row) count ------- 35 (1 row) count ------- 85 (1 row) count ------- 157 (1 row) count ------- 48 (1 row) count ------- 204 (1 row) count ------- 208 (1 row) count ------- 112 (1 row) count ------- 13 (1 row) count ------- 70 (1 row) count ------- 131 (1 row) count ------- 130 (1 row) count ------- 60 (1 row) count ------- 85 (1 row) count ------- 68 (1 row) count ------- 96 (1 row) count ------- 190 (1 row) count ------- 83 (1 row) count ------- 17 (1 row) count ------- 8 (1 row) count ------- 138 (1 row) count ------- 138 (1 row) count ------- 167 (1 row) count ------- 63 (1 row) count ------- 237 (1 row) count ------- 39 (1 row) count ------- 43 (1 row) count ------- 119 (1 row) count ------- 76 (1 row) count ------- 89 (1 row) count ------- 106 (1 row) count ------- 196 (1 row) count ------- 192 (1 row) count ------- 139 (1 row) count ------- 35 (1 row) count ------- 163 (1 row) count ------- 209 (1 row) count ------- 306 (1 row) count ------- 158 (1 row) count ------- 129 (1 row) count ------- 67 (1 row) count ------- 227 (1 row) count ------- 92 (1 row) count ------- 27 (1 row) count ------- 66 (1 row) count ------- 4 (1 row) count ------- 88 (1 row) count ------- 185 (1 row) count ------- 81 (1 row) count ------- 120 (1 row) count ------- 98 (1 row) count ------- 73 (1 row) count ------- 27 (1 row) count ------- 21 (1 row) count ------- 94 (1 row) count ------- 258 (1 row) count ------- 167 (1 row) count ------- 112 (1 row) count ------- 29 (1 row) count ------- 150 (1 row) count ------- 143 (1 row) count ------- 53 (1 row) count ------- 243 (1 row) count ------- 108 (1 row) count ------- 72 (1 row) count ------- 247 (1 row) count ------- 35 (1 row) count ------- 291 (1 row) count ------- 65 (1 row) count ------- 148 (1 row) count ------- 165 (1 row) count ------- 160 (1 row) count ------- 306 (1 row) count ------- 144 (1 row) count ------- 48 (1 row) count ------- 59 (1 row) count ------- 156 (1 row) count ------- 177 (1 row) count ------- 108 (1 row) count ------- 124 (1 row) count ------- 98 (1 row) count ------- 71 (1 row) count ------- 50 (1 row) count ------- 193 (1 row) count ------- 120 (1 row) count ------- 129 (1 row) count ------- 65 (1 row) count ------- 206 (1 row) count ------- 154 (1 row) count ------- 127 (1 row) count ------- 124 (1 row) count ------- 50 (1 row) count ------- 73 (1 row) count ------- 72 (1 row) count ------- 67 (1 row) count ------- 90 (1 row) count ------- 30 (1 row) count ------- 28 (1 row) count ------- 108 (1 row) count ------- 133 (1 row) count ------- 132 (1 row) count ------- 145 (1 row) count ------- 155 (1 row) count ------- 152 (1 row) count ------- 236 (1 row) count ------- 49 (1 row) count ------- 296 (1 row) count ------- 200 (1 row) count ------- 286 (1 row) count ------- 219 (1 row) count ------- 110 (1 row) count ------- 130 (1 row) count ------- 160 (1 row) count ------- 204 (1 row) count ------- 126 (1 row) count ------- 65 (1 row) count ------- 178 (1 row) count ------- 183 (1 row) count ------- 172 (1 row) count ------- 260 (1 row) count ------- 86 (1 row) count ------- 143 (1 row) count ------- 108 (1 row) count ------- 159 (1 row) count ------- 155 (1 row) count ------- 35 (1 row) count ------- 158 (1 row) count ------- 221 (1 row) count ------- 65 (1 row) count ------- 211 (1 row) count ------- 3 (1 row) count ------- 84 (1 row) count ------- 222 (1 row) count ------- 133 (1 row) count ------- 82 (1 row) count ------- 227 (1 row) count ------- 26 (1 row) count ------- 131 (1 row) q3c-1.5.0/expected/version.expected000066400000000000000000000000421277206762700172300ustar00rootroot00000000000000 ?column? ---------- t (1 row) q3c-1.5.0/gen_data.c000066400000000000000000000046341277206762700141400ustar00rootroot00000000000000/* Copyright (C) 2004-2015 Sergey Koposov Email: koposov@ast.cam.ac.uk This file is part of Q3C. Q3C is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Q3C is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Q3C; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include "postgres.h" static int64 rand_state = 1; static const int64 c = 12345; static const int64 m = ((int64)1)<<31; static const int64 a = 1103515245; int64 get_rand() { rand_state = ( a * rand_state + c ) % m; return rand_state; } /* Run as * $ ./gen_data 1 * The number argument of the program is the starting point for the 'random' * sequence of numbers. The sequence was based on Knuth's theoreme A (from * the his second book) */ int main(int argc, char *argv[]) { const int nrabins = 36000; const int ndecbins = 18000; const int ntotbins = nrabins * ndecbins; /* 2^x*3^y*5^z */ double corrections[ndecbins], total = 0; int npoints; int i; char parsing_error = 1; // first argument is the seed and then number of points to generate if (argc == 3) { rand_state = atoi(argv[1]); get_rand(); // advance one step npoints = atoi(argv[2]); parsing_error = 0; } if (parsing_error) { fprintf(stderr, "Wrong arguments!\n" "MUST be ./gen_data [RANDOM SEED] [NPOINTS]"); exit(1); } for (i = 0; i < ndecbins; i++) /* weights in order to have cosine distribution of declinations * corresponding to uniform distribution on the sky */ { corrections[i] = cos((-90. + (180. / ndecbins) * (i + 0.5)) * M_PI / 180.); } int npointsleft = npoints; while (npointsleft) { int64 ra = (int64)(get_rand() * 1./m * nrabins); int64 dec = (int64)(get_rand() * 1./m * ndecbins); if (get_rand() < (corrections[dec]*m)) { printf("%f %f\n", ra * (360. / nrabins), -90 + dec * (180. / ndecbins)); npointsleft--; } } } q3c-1.5.0/my_bits.h000066400000000000000000000124101277206762700140400ustar00rootroot00000000000000#ifndef __MY_BITS #define __MY_BITS const unsigned long long bitmask[64] = { 0x8000000000000000LL, 0x4000000000000000LL, 0x2000000000000000LL, 0x1000000000000000LL, 0x0800000000000000LL, 0x0400000000000000LL, 0x0200000000000000LL, 0x0100000000000000LL, 0x80000000000000LL, 0x40000000000000LL, 0x20000000000000LL, 0x10000000000000LL, 0x08000000000000LL, 0x04000000000000LL, 0x02000000000000LL, 0x01000000000000LL, 0x800000000000LL, 0x400000000000LL, 0x200000000000LL, 0x100000000000LL, 0x080000000000LL, 0x040000000000LL, 0x020000000000LL, 0x010000000000LL, 0x8000000000LL, 0x4000000000LL, 0x2000000000LL, 0x1000000000LL, 0x0800000000LL, 0x0400000000LL, 0x0200000000LL, 0x0100000000LL, 0x80000000LL, 0x40000000LL, 0x20000000LL, 0x10000000LL, 0x08000000LL, 0x04000000LL, 0x02000000LL, 0x01000000LL, 0x800000LL, 0x400000LL, 0x200000LL, 0x100000LL, 0x080000LL, 0x040000LL, 0x020000LL, 0x010000LL, 0x8000LL, 0x4000LL, 0x2000LL, 0x1000LL, 0x0800LL, 0x0400LL, 0x0200LL, 0x0100LL, 0x80LL, 0x40LL, 0x20LL, 0x10LL, 0x08, 0x04, 0x02, 0x01 }; #define BIT(a, b) ((a & bitmask[b]) >> (63 - b)) #define BITS8(a) BIT(a,0),BIT(a,1),BIT(a,2),BIT(a,3),BIT(a,4),BIT(a,5),BIT(a,6),BIT(a,7),BIT(a,8),BIT(a,9),BIT(a,10),BIT(a,11),BIT(a,12),BIT(a,13),BIT(a,14),BIT(a,15),BIT(a,16),BIT(a,17),BIT(a,18),BIT(a,19),BIT(a,20),BIT(a,21),BIT(a,22),BIT(a,23),BIT(a,24),BIT(a,25),BIT(a,26),BIT(a,27),BIT(a,28),BIT(a,29),BIT(a,30),BIT(a,31),BIT(a,32),BIT(a,33),BIT(a,34),BIT(a,35),BIT(a,36),BIT(a,37),BIT(a,38),BIT(a,39),BIT(a,40),BIT(a,41),BIT(a,42),BIT(a,43),BIT(a,44),BIT(a,45),BIT(a,46),BIT(a,47),BIT(a,48),BIT(a,49),BIT(a,50),BIT(a,51),BIT(a,52),BIT(a,53),BIT(a,54),BIT(a,55),BIT(a,56),BIT(a,57),BIT(a,58),BIT(a,59),BIT(a,60),BIT(a,61),BIT(a,62),BIT(a,63) #define BITS8ix(a) 0LL,BIT(a,32),0LL,BIT(a,33),0LL,BIT(a,34),0LL,BIT(a,35),0LL,BIT(a,36),0LL,BIT(a,37),0LL,BIT(a,38),0LL,BIT(a,39),0LL,BIT(a,40),0LL,BIT(a,41),0LL,BIT(a,42),0LL,BIT(a,43),0LL,BIT(a,44),0LL,BIT(a,45),0LL,BIT(a,46),0LL,BIT(a,47),0LL,BIT(a,48),0LL,BIT(a,49),0LL,BIT(a,50),0LL,BIT(a,51),0LL,BIT(a,52),0LL,BIT(a,53),0LL,BIT(a,54),0LL,BIT(a,55),0LL,BIT(a,56),0LL,BIT(a,57),0LL,BIT(a,58),0LL,BIT(a,59),0LL,BIT(a,60),0LL,BIT(a,61),0LL,BIT(a,62),0LL,BIT(a,63) #define BITS8iy(a) BIT(a,32),0LL,BIT(a,33),0LL,BIT(a,34),0LL,BIT(a,35),0LL,BIT(a,36),0LL,BIT(a,37),0LL,BIT(a,38),0LL,BIT(a,39),0LL,BIT(a,40),0LL,BIT(a,41),0LL,BIT(a,42),0LL,BIT(a,43),0LL,BIT(a,44),0LL,BIT(a,45),0LL,BIT(a,46),0LL,BIT(a,47),0LL,BIT(a,48),0LL,BIT(a,49),0LL,BIT(a,50),0LL,BIT(a,51),0LL,BIT(a,52),0LL,BIT(a,53),0LL,BIT(a,54),0LL,BIT(a,55),0LL,BIT(a,56),0LL,BIT(a,57),0LL,BIT(a,58),0LL,BIT(a,59),0LL,BIT(a,60),0LL,BIT(a,61),0LL,BIT(a,62),0LL,BIT(a,63),0LL #define BITS4(a) BIT(a,32),BIT(a,33),BIT(a,34),BIT(a,35),BIT(a,36),BIT(a,37),BIT(a,38),BIT(a,39),BIT(a,40),BIT(a,41),BIT(a,42),BIT(a,43),BIT(a,44),BIT(a,45),BIT(a,46),BIT(a,47),BIT(a,48),BIT(a,49),BIT(a,50),BIT(a,51),BIT(a,52),BIT(a,53),BIT(a,54),BIT(a,55),BIT(a,56),BIT(a,57),BIT(a,58),BIT(a,59),BIT(a,60),BIT(a,61),BIT(a,62),BIT(a,63) /*BIT(a,0),BIT(a,1),BIT(a,2),BIT(a,3),BIT(a,4),BIT(a,5),BIT(a,6),BIT(a,7),BIT(a,8),BIT(a,9),BIT(a,10),BIT(a,11),BIT(a,12),BIT(a,13),BIT(a,14),BIT(a,15),BIT(a,16),BIT(a,17),BIT(a,18),BIT(a,19),BIT(a,20),BIT(a,21),BIT(a,22),BIT(a,23),BIT(a,24),BIT(a,25),BIT(a,26),BIT(a,27),BIT(a,28),BIT(a,29),BIT(a,30),BIT(a,31) */ #define BITS2(a) BIT(a,48),BIT(a,49),BIT(a,50),BIT(a,51),BIT(a,52),BIT(a,53),BIT(a,54),BIT(a,55),BIT(a,56),BIT(a,57),BIT(a,58),BIT(a,59),BIT(a,60),BIT(a,61),BIT(a,62),BIT(a,63) /* BIT(a,16),BIT(a,17),BIT(a,18),BIT(a,19),BIT(a,20),BIT(a,21),BIT(a,22),BIT(a,23),BIT(a,24),BIT(a,25),BIT(a,26),BIT(a,27),BIT(a,28),BIT(a,29),BIT(a,30),BIT(a,31) */ /* BIT(a,0),BIT(a,1),BIT(a,2),BIT(a,3),BIT(a,4),BIT(a,5),BIT(a,6),BIT(a,7),BIT(a,8),BIT(a,9),BIT(a,10),BIT(a,11),BIT(a,12),BIT(a,13),BIT(a,14),BIT(a,15) */ #define BIT_PRINT8(a) fprintf(stdout,"%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld\n", BITS8(a)); #define BIT_PRINT8ix(a) fprintf(stdout,"%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld\n", BITS8ix(a)); #define BIT_PRINT8iy(a) fprintf(stdout,"%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld\n", BITS8iy(a)); #define BIT_PRINT4(a) fprintf(stdout,"%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d", BITS4(a)); #define BIT_PRINT2(a) fprintf(stdout,"%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d", BITS2(a)); #endif /* __MY_BITS */ q3c-1.5.0/prepare.c000066400000000000000000000017351277206762700140330ustar00rootroot00000000000000/* Copyright (C) 2004-2015 Sergey Koposov Email: koposov@ast.cam.ac.uk This file is part of Q3C. Q3C is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Q3C is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Q3C; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include "common.h" int main() { struct q3c_prm hprm1; init_q3c1(&hprm1,1073741824); q3c_dump_prm(&hprm1,"dump.c"); return 0; } q3c-1.5.0/q3c.c000066400000000000000000000471371277206762700130710ustar00rootroot00000000000000/* Copyright (C) 2004-2015 Sergey Koposov Email: koposov@ast.cam.ac.uk This file is part of Q3C. Q3C is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Q3C is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Q3C; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include /* Postgres stuff */ #include "postgres.h" #include "executor/spi.h" #include "utils/lsyscache.h" /* I included that just to remove the gcc warning * q3c.c:128: warning: implicit declaration of function `get_typlenbyvalalign' */ #include "utils/array.h" #include "catalog/pg_type.h" #include "fmgr.h" #if PG_VERSION_NUM >= 90300 #include "access/tupmacs.h" #endif /* For PostgreSQL versions >= 8.2 */ #ifdef PG_MODULE_MAGIC PG_MODULE_MAGIC; #endif /* End of Postgres stuff */ #include "common.h" /* Postgres functions */ Datum pgq3c_ang2ipix(PG_FUNCTION_ARGS); Datum pgq3c_ang2ipix_real(PG_FUNCTION_ARGS); Datum pgq3c_ipix2ang(PG_FUNCTION_ARGS); Datum pgq3c_pixarea(PG_FUNCTION_ARGS); Datum pgq3c_dist(PG_FUNCTION_ARGS); Datum pgq3c_sindist(PG_FUNCTION_ARGS); Datum q3c_strquery(PG_FUNCTION_ARGS); Datum pgq3c_nearby_it(PG_FUNCTION_ARGS); Datum pgq3c_ellipse_nearby_it(PG_FUNCTION_ARGS); Datum pgq3c_radial_array(PG_FUNCTION_ARGS); Datum pgq3c_radial_query_it(PG_FUNCTION_ARGS); Datum pgq3c_ellipse_query_it(PG_FUNCTION_ARGS); Datum pgq3c_poly_query_it(PG_FUNCTION_ARGS); Datum pgq3c_in_ellipse(PG_FUNCTION_ARGS); Datum pgq3c_in_poly(PG_FUNCTION_ARGS); Datum pgq3c_get_version(PG_FUNCTION_ARGS); PG_FUNCTION_INFO_V1(pgq3c_get_version); Datum pgq3c_get_version(PG_FUNCTION_ARGS) { char VERSION_MAX_BYTES = 100; char *buf = palloc(VERSION_MAX_BYTES); q3c_get_version(buf, VERSION_MAX_BYTES); PG_RETURN_CSTRING(buf); } PG_FUNCTION_INFO_V1(pgq3c_ang2ipix); Datum pgq3c_ang2ipix(PG_FUNCTION_ARGS) { extern struct q3c_prm hprm; q3c_coord_t ra = PG_GETARG_FLOAT8(0); q3c_coord_t dec = PG_GETARG_FLOAT8(1); q3c_ipix_t ipix; static int invocation; static q3c_coord_t ra_buf, dec_buf; static q3c_ipix_t ipix_buf; if (invocation==0) { } else { if ((ra == ra_buf) && (dec == dec_buf)) { PG_RETURN_INT64(ipix_buf); } } if ((!isfinite(ra)) || (!isfinite(dec))) { PG_RETURN_NULL(); } q3c_ang2ipix(&hprm, ra, dec, &ipix); ra_buf = ra; dec_buf = dec; ipix_buf = ipix; invocation=1; PG_RETURN_INT64(ipix); } PG_FUNCTION_INFO_V1(pgq3c_ang2ipix_real); Datum pgq3c_ang2ipix_real(PG_FUNCTION_ARGS) { extern struct q3c_prm hprm; q3c_coord_t ra = PG_GETARG_FLOAT4(0); q3c_coord_t dec = PG_GETARG_FLOAT4(1); q3c_ipix_t ipix; static int invocation; static q3c_coord_t ra_buf, dec_buf; static q3c_ipix_t ipix_buf; if (invocation==0) { } else { if ((ra == ra_buf) && (dec == dec_buf)) { PG_RETURN_INT64(ipix_buf); } } if ((!isfinite(ra)) || (!isfinite(dec))) { PG_RETURN_NULL(); } q3c_ang2ipix(&hprm, ra, dec, &ipix); ra_buf = ra; dec_buf = dec; ipix_buf = ipix; invocation=1; PG_RETURN_INT64(ipix); } PG_FUNCTION_INFO_V1(pgq3c_ipix2ang); Datum pgq3c_ipix2ang(PG_FUNCTION_ARGS) { extern struct q3c_prm hprm; q3c_ipix_t ipix; q3c_coord_t ra, dec; Datum *data; int16 typlen; bool typbyval; char typalign; ArrayType *result; ipix = PG_GETARG_INT64(0); q3c_ipix2ang(&hprm, ipix, &ra, &dec); data = ( Datum *) palloc(sizeof(Datum)*2); data[0] = Float8GetDatum (ra); data[1] = Float8GetDatum (dec); /* get required info about the element type */ get_typlenbyvalalign(FLOAT8OID, &typlen, &typbyval, &typalign); /* now build the array */ result = construct_array(data, 2, FLOAT8OID, typlen, typbyval, typalign); PG_RETURN_ARRAYTYPE_P(result); } PG_FUNCTION_INFO_V1(pgq3c_pixarea); Datum pgq3c_pixarea(PG_FUNCTION_ARGS) { extern struct q3c_prm hprm; q3c_ipix_t ipix; q3c_coord_t res; int depth; ipix = PG_GETARG_INT64(0); depth = PG_GETARG_INT32(1); if (depth <= 0) { elog(ERROR, "Invalid depth. It should be greater than 0."); } if (depth > 30) { elog(ERROR, "Invalid depth. It should be less than 30."); } res = q3c_pixarea(&hprm, ipix, depth); PG_RETURN_FLOAT8(res); } PG_FUNCTION_INFO_V1(pgq3c_dist); Datum pgq3c_dist(PG_FUNCTION_ARGS) { q3c_coord_t ra1 = PG_GETARG_FLOAT8(0); q3c_coord_t dec1 = PG_GETARG_FLOAT8(1); q3c_coord_t ra2 = PG_GETARG_FLOAT8(2); q3c_coord_t dec2 = PG_GETARG_FLOAT8(3); q3c_coord_t res; res = q3c_dist(ra1, dec1, ra2, dec2); PG_RETURN_FLOAT8(res); } PG_FUNCTION_INFO_V1(pgq3c_sindist); Datum pgq3c_sindist(PG_FUNCTION_ARGS) { q3c_coord_t ra1 = PG_GETARG_FLOAT8(0); q3c_coord_t dec1 = PG_GETARG_FLOAT8(1); q3c_coord_t ra2 = PG_GETARG_FLOAT8(2); q3c_coord_t dec2 = PG_GETARG_FLOAT8(3); q3c_coord_t res; res = q3c_sindist(ra1, dec1, ra2, dec2); PG_RETURN_FLOAT8(res); } PG_FUNCTION_INFO_V1(pgq3c_nearby_it); Datum pgq3c_nearby_it(PG_FUNCTION_ARGS) { q3c_ipix_t ipix_array[8]; static q3c_ipix_t ipix_array_buf[8]; static q3c_coord_t ra_cen_buf, dec_cen_buf, radius_buf; static int invocation; int i; extern struct q3c_prm hprm; q3c_circle_region circle; q3c_coord_t ra_cen = PG_GETARG_FLOAT8(0); // ra_cen q3c_coord_t dec_cen = PG_GETARG_FLOAT8(1); // dec_cen q3c_coord_t radius = PG_GETARG_FLOAT8(2); // error radius int iteration = PG_GETARG_INT32(3); // iteration if ( (!isfinite(ra_cen)) || (!isfinite(dec_cen)) ) { elog(ERROR, "The values of ra,dec are infinites or NaNs"); } if (invocation == 0) /* If this is the first invocation of the function */ { /* I should set invocation=1 ONLY!!! after setting ra_cen_buf, dec_cen_buf and * ipix_buf. Because if the program will be canceled or crashed * for some reason the invocation should be == 0 */ } else { if ((ra_cen == ra_cen_buf) && (dec_cen == dec_cen_buf) && (radius == radius_buf)) { PG_RETURN_INT64(ipix_array_buf[iteration]); } } ra_cen = UNWRAP_RA(ra_cen); if (q3c_fabs(dec_cen)>90) {dec_cen = q3c_fmod(dec_cen,90);} circle.ra = ra_cen; circle.dec = dec_cen; circle.rad = radius; q3c_get_nearby(&hprm, Q3C_CIRCLE, &circle, ipix_array); for(i = 0; i < 8; i++) { ipix_array_buf[i] = ipix_array[i]; } ra_cen_buf = ra_cen; dec_cen_buf = dec_cen; radius_buf = radius; invocation=1; PG_RETURN_INT64(ipix_array_buf[iteration]); } PG_FUNCTION_INFO_V1(pgq3c_ellipse_nearby_it); Datum pgq3c_ellipse_nearby_it(PG_FUNCTION_ARGS) { q3c_ipix_t ipix_array[8]; static q3c_ipix_t ipix_array_buf[8]; static q3c_coord_t ra_cen_buf, dec_cen_buf, radius_buf, axis_ratio_buf, PA_buf; static int invocation; int i; q3c_ellipse_region ellipse; extern struct q3c_prm hprm; q3c_coord_t ra_cen = PG_GETARG_FLOAT8(0); /* ra_cen */ q3c_coord_t dec_cen = PG_GETARG_FLOAT8(1); /* dec_cen */ q3c_coord_t radius = PG_GETARG_FLOAT8(2); /* error radius */ q3c_coord_t axis_ratio = PG_GETARG_FLOAT8(3); /* axis_ratio */ q3c_coord_t PA = PG_GETARG_FLOAT8(4); /* PA */ int iteration = PG_GETARG_INT32(5); /* iteration */ if ( (!isfinite(ra_cen)) || (!isfinite(dec_cen)) || (!isfinite(radius)) ) { elog(ERROR, "The values of ra,dec,radius are infinites or NaNs"); } if (invocation == 0) /* If this is the first invocation of the function */ { /* I should set invocation=1 ONLY!!! after setting ra_cen_buf, dec_cen_buf and * ipix_buf. Because if the program will be canceled or crashed * for some reason the invocation should be == 0 */ } else { if ((ra_cen == ra_cen_buf) && (dec_cen == dec_cen_buf) && (radius == radius_buf) && (PA == PA_buf) && (axis_ratio == axis_ratio_buf)) { PG_RETURN_INT64(ipix_array_buf[iteration]); } } ra_cen = UNWRAP_RA(ra_cen); if (q3c_fabs(dec_cen)>90) {dec_cen = q3c_fmod(dec_cen,90);} ellipse.ra = ra_cen; ellipse.dec = dec_cen; ellipse.rad = radius; ellipse.e = q3c_sqrt ( 1 - axis_ratio * axis_ratio ); ellipse.PA = PA; q3c_get_nearby(&hprm, Q3C_ELLIPSE, &ellipse, ipix_array); for(i = 0; i < 8; i++) { ipix_array_buf[i] = ipix_array[i]; } ra_cen_buf = ra_cen; dec_cen_buf = dec_cen; radius_buf = radius; axis_ratio_buf = axis_ratio; PA_buf = PA; invocation=1; PG_RETURN_INT64(ipix_array_buf[iteration]); } PG_FUNCTION_INFO_V1(pgq3c_radial_query_it); Datum pgq3c_radial_query_it(PG_FUNCTION_ARGS) { extern struct q3c_prm hprm; q3c_coord_t ra_cen = PG_GETARG_FLOAT8(0); q3c_coord_t dec_cen = PG_GETARG_FLOAT8(1); q3c_coord_t radius = PG_GETARG_FLOAT8(2); /* error radius */ int iteration = PG_GETARG_INT32(3); /* iteration */ int full_flag = PG_GETARG_INT32(4); /* full_flag */ /* 1 means full, 0 means partial */ static q3c_coord_t ra_cen_buf, dec_cen_buf, radius_buf; static q3c_ipix_t partials[2 * Q3C_NPARTIALS]; static q3c_ipix_t fulls[2 * Q3C_NFULLS]; /* !!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!! * Here the Q3C_NPARTIALS and Q3C_NFULLS is the number of pairs !!! of ranges * So we should have the array with the size twice bigger */ static int invocation; ra_cen = UNWRAP_RA(ra_cen); if (q3c_fabs(dec_cen)>90) { elog(ERROR, "The absolute value of declination > 90!"); } if (invocation == 0) /* If this is the first invocation of the function */ { /* I should set invocation=1 ONLY!!! after setting ra_cen_buf, dec_cen_buf and * ipix_buf. Because if the program will be canceled or crashed * for some reason the invocation should be == 0 */ } else { if ((ra_cen == ra_cen_buf) && (dec_cen == dec_cen_buf) && (radius == radius_buf)) { if (full_flag) { PG_RETURN_INT64(fulls[iteration]); } else { PG_RETURN_INT64(partials[iteration]); } } } q3c_radial_query(&hprm, ra_cen, dec_cen, radius, fulls, partials); ra_cen_buf = ra_cen; dec_cen_buf = dec_cen; radius_buf = radius; invocation = 1; if (full_flag) { PG_RETURN_INT64(fulls[iteration]); } else { PG_RETURN_INT64(partials[iteration]); } } PG_FUNCTION_INFO_V1(pgq3c_ellipse_query_it); Datum pgq3c_ellipse_query_it(PG_FUNCTION_ARGS) { extern struct q3c_prm hprm; q3c_coord_t ra_cen = PG_GETARG_FLOAT8(0); q3c_coord_t dec_cen = PG_GETARG_FLOAT8(1); q3c_coord_t radius = PG_GETARG_FLOAT8(2); /* Major axis */ q3c_coord_t axis_ratio = PG_GETARG_FLOAT8(3); /* Axis ratio */ q3c_coord_t PA = PG_GETARG_FLOAT8(4); /* PA */ int iteration = PG_GETARG_INT32(5); /* iteration */ int full_flag = PG_GETARG_INT32(6); /* full_flag */ q3c_coord_t ell = q3c_sqrt ( 1 - axis_ratio * axis_ratio ); /* 1 means full, 0 means partial */ static q3c_coord_t ra_cen_buf, dec_cen_buf, radius_buf; static q3c_ipix_t partials[2 * Q3C_NPARTIALS]; static q3c_ipix_t fulls[2 * Q3C_NFULLS]; /* !!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!! * Here the Q3C_NPARTIALS and Q3C_NFULLS is the number of pairs !!! of ranges * So we should have the array with the size twice bigger */ static int invocation; ra_cen = UNWRAP_RA(ra_cen); if (q3c_fabs(dec_cen)>90) { elog(ERROR, "The absolute value of declination > 90!"); } if (invocation == 0) /* If this is the first invocation of the function */ { /* I should set invocation=1 ONLY!!! after setting ra_cen_buf, dec_cen_buf and * ipix_buf. Because if the program will be canceled or crashed * for some reason the invocation should be == 0 */ } else { if ((ra_cen == ra_cen_buf) && (dec_cen == dec_cen_buf) && (radius == radius_buf)) { if (full_flag) { PG_RETURN_INT64(fulls[iteration]); } else { PG_RETURN_INT64(partials[iteration]); } } } q3c_ellipse_query(&hprm, ra_cen, dec_cen, radius, ell, PA, fulls, partials); ra_cen_buf = ra_cen; dec_cen_buf = dec_cen; radius_buf = radius; invocation = 1; if (full_flag) { PG_RETURN_INT64(fulls[iteration]); } else { PG_RETURN_INT64(partials[iteration]); } } PG_FUNCTION_INFO_V1(pgq3c_poly_query_it); Datum pgq3c_poly_query_it(PG_FUNCTION_ARGS) { ArrayType *poly_arr = PG_GETARG_ARRAYTYPE_P(0); extern struct q3c_prm hprm; int iteration = PG_GETARG_INT32(1); /* iteration */ int full_flag = PG_GETARG_INT32(2); /* full_flag */ char too_large = 0; /* 1 means full, 0 means partial*/ int16 typlen; bool typbyval; char typalign; int i; int poly_nitems; Oid element_type; char *p; #if PG_VERSION_NUM >= 80300 bits8 *bitmap; int bitmask; #endif /* !!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!! * Here the Q3C_NPARTIALS and Q3C_NFULLS is the number of pairs !!! of ranges * So we should have the array with the size twice bigger */ static q3c_ipix_t partials[2 * Q3C_NPARTIALS]; static q3c_ipix_t fulls[2 * Q3C_NFULLS]; static q3c_poly qp; static q3c_coord_t ra[Q3C_MAX_N_POLY_VERTEX], dec[Q3C_MAX_N_POLY_VERTEX], x[Q3C_MAX_N_POLY_VERTEX], y[Q3C_MAX_N_POLY_VERTEX], ax[Q3C_MAX_N_POLY_VERTEX], ay[Q3C_MAX_N_POLY_VERTEX]; static int invocation; if (invocation == 0) /* If this is the first invocation of the function */ { /* I should set invocation=1 ONLY!!! after setting ra_cen_buf, dec_cen_buf and * ipix_buf. Because if the program will be canceled or crashed * for some reason the invocation should be == 0 */ } else { /* TODO !!!!!!!!!! */ /* bad realization currently .... */ /* Probably I should check that the polygon is the same ... */ if (iteration > 0) { if (full_flag) { PG_RETURN_INT64(fulls[iteration]); } else { PG_RETURN_INT64(partials[iteration]); } } } poly_nitems = ArrayGetNItems(ARR_NDIM(poly_arr), ARR_DIMS(poly_arr)); element_type = FLOAT8OID; get_typlenbyvalalign(element_type, &typlen, &typbyval, &typalign); /* Taken from /pgsql/src/backend/utils/adt/arrayfuncs.c function deconstruct_array*/ p = ARR_DATA_PTR(poly_arr); if (poly_nitems % 2 != 0) { elog(ERROR, "Invalid array argument! \n The array should contain even number of arguments"); } else if (poly_nitems <=4) { elog(ERROR, "Invalid polygon! Less then 4 vertexes"); } else if (poly_nitems > 2 * Q3C_MAX_N_POLY_VERTEX) { elog(ERROR, "Q3C does not support polygons with number of vertices > %d", Q3C_MAX_N_POLY_VERTEX); } poly_nitems /= 2; qp.n = poly_nitems; #if PG_VERSION_NUM >= 80300 bitmap = ARR_NULLBITMAP(poly_arr); bitmask=1; #endif for (i = 0; i < poly_nitems; i++) { #if PG_VERSION_NUM >= 80300 if (bitmap && (*bitmap & bitmask) == 0) { ereport(ERROR, (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), errmsg("null array element not allowed in this context"))); } ra[i] = DatumGetFloat8(fetch_att(p, typbyval, typlen)); p = att_addlength_pointer(p, typlen, PointerGetDatum(p)); p = (char *) att_align_nominal(p, typalign); if (bitmap) { bitmask <<= 1; if (bitmask == 0x100) { bitmap++; bitmask = 1; } } if (bitmap && (*bitmap & bitmask) == 0) { ereport(ERROR, (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), errmsg("null array element not allowed in this context"))); } dec[i] = DatumGetFloat8(fetch_att(p, typbyval, typlen)); p = att_addlength_pointer(p, typlen, PointerGetDatum(p)); p = (char *) att_align_nominal(p, typalign); if (bitmap) { bitmask <<= 1; if (bitmask == 0x100) { bitmap++; bitmask = 1; } } #else ra[i] = DatumGetFloat8(fetch_att(p, typbyval, typlen)); p = att_addlength(p, typlen, PointerGetDatum(p)); p = (char *) att_align(p, typalign); dec[i] = DatumGetFloat8(fetch_att(p, typbyval, typlen)); p = att_addlength(p, typlen, PointerGetDatum(p)); p = (char *) att_align(p, typalign); #endif } qp.ra = ra; qp.dec = dec; qp.x = x; qp.y = y; qp.ax = ax; qp.ay = ay; /* fprintf(stderr,"%f %f %f %f",qp.ra[0],qp.dec[0],qp.ra[1],qp.dec[1]); */ q3c_poly_query(&hprm, &qp, fulls, partials, &too_large); if (too_large) { elog(ERROR, "The polygon is too large. Polygons having diameter >~23 degrees are unsupported"); } invocation = 1; if (full_flag) { PG_RETURN_INT64(fulls[iteration]); } else { PG_RETURN_INT64(partials[iteration]); } } PG_FUNCTION_INFO_V1(pgq3c_in_ellipse); Datum pgq3c_in_ellipse(PG_FUNCTION_ARGS) { q3c_coord_t ra = PG_GETARG_FLOAT8(0); // ra_cen q3c_coord_t dec = PG_GETARG_FLOAT8(1); // dec_cen q3c_coord_t ra_cen = PG_GETARG_FLOAT8(2); // ra_cen q3c_coord_t dec_cen = PG_GETARG_FLOAT8(3); // dec_cen q3c_coord_t radius = PG_GETARG_FLOAT8(4); // error radius q3c_coord_t axis_ratio = PG_GETARG_FLOAT8(5); // axis_ratio q3c_coord_t PA = PG_GETARG_FLOAT8(6); // PA q3c_coord_t e = q3c_sqrt(1 - axis_ratio * axis_ratio); bool result = q3c_in_ellipse(ra_cen, dec_cen, ra,dec, radius, e, PA); PG_RETURN_BOOL(result); } PG_FUNCTION_INFO_V1(pgq3c_in_poly); Datum pgq3c_in_poly(PG_FUNCTION_ARGS) { extern struct q3c_prm hprm; static q3c_coord_t in_ra[Q3C_MAX_N_POLY_VERTEX], in_dec[Q3C_MAX_N_POLY_VERTEX]; static int invocation ; char too_large = 0; ArrayType *poly_arr = PG_GETARG_ARRAYTYPE_P(2); // ra_cen q3c_coord_t ra_cen = PG_GETARG_FLOAT8(0); // ra_cen q3c_coord_t dec_cen = PG_GETARG_FLOAT8(1); // dec_cen int16 typlen; bool typbyval; char typalign; int poly_nitems = ArrayGetNItems(ARR_NDIM(poly_arr), ARR_DIMS(poly_arr)); int n, i; q3c_coord_t ra_cur, dec_cur; Oid element_type=FLOAT8OID; char *p; bool result; #if PG_VERSION_NUM >= 80300 bits8 *bitmap; int bitmask; #endif get_typlenbyvalalign(element_type, &typlen, &typbyval, &typalign); /* Taken from /pgsql/src/backend/utils/adt/arrayfuncs.c * function deconstruct_array */ if (poly_nitems % 2 != 0) { elog(ERROR, "Invalid array argument! \n The array should contain even number of arguments"); } else if (poly_nitems <= 4) { elog(ERROR, "Invalid polygon! Less than 3 vertexes"); } p = ARR_DATA_PTR(poly_arr); poly_nitems /= 2; n = poly_nitems; invocation = 1; #if PG_VERSION_NUM >= 80300 bitmap = ARR_NULLBITMAP(poly_arr); bitmask=1; #endif for (i = 0; i < poly_nitems; i++) { #if PG_VERSION_NUM >= 80300 if (bitmap && (*bitmap & bitmask) == 0) { ereport(ERROR, (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), errmsg("null array element not allowed in this context"))); } ra_cur = DatumGetFloat8(fetch_att(p, typbyval, typlen)); p = att_addlength_pointer(p, typlen, PointerGetDatum(p)); p = (char *) att_align_nominal(p, typalign); if (bitmap) { bitmask <<= 1; if (bitmask == 0x100) { bitmap++; bitmask = 1; } } if (in_ra[i] != ra_cur) { invocation = 0; in_ra[i] = ra_cur; } if (bitmap && (*bitmap & bitmask) == 0) { ereport(ERROR, (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), errmsg("null array element not allowed in this context"))); } dec_cur = DatumGetFloat8(fetch_att(p, typbyval, typlen)); p = att_addlength_pointer(p, typlen, PointerGetDatum(p)); p = (char *) att_align_nominal(p, typalign); if (bitmap) { bitmask <<= 1; if (bitmask == 0x100) { bitmap++; bitmask = 1; } } if (in_dec[i] != dec_cur) { invocation = 0; in_dec[i] = dec_cur; } #else ra_cur = DatumGetFloat8(fetch_att(p, typbyval, typlen)); if (in_ra[i] != ra_cur) { invocation = 0; in_ra[i] = ra_cur; } p = att_addlength(p, typlen, PointerGetDatum(p)); p = (char *) att_align(p, typalign); dec_cur = DatumGetFloat8(fetch_att(p, typbyval, typlen)); if (in_dec[i] != dec_cur) { invocation = 0; in_dec[i] = dec_cur; } p = att_addlength(p, typlen, PointerGetDatum(p)); p = (char *) att_align(p, typalign); #endif } result = (q3c_check_sphere_point_in_poly(&hprm, n, in_ra, in_dec, ra_cen, dec_cen, &too_large, invocation)) != Q3C_DISJUNCT; if (too_large) { elog(ERROR, "The polygon is too large. Polygons having diameter >~23 degrees are unsupported"); } PG_RETURN_BOOL((result)); } q3c-1.5.0/q3c.control000066400000000000000000000001351277206762700143120ustar00rootroot00000000000000comment = 'q3c sky indexing plugin' default_version = '1.5.0' module_pathname = '$libdir/q3c'q3c-1.5.0/q3c_poly.c000066400000000000000000000215341277206762700141250ustar00rootroot00000000000000/* Copyright (C) 2004-2015 Sergey Koposov Email: koposov@ast.cam.ac.uk This file is part of Q3C. Q3C is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Q3C is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Q3C; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "common.h" void q3c_init_poly(q3c_poly *qp, int n) { qp->ra = malloc(n * sizeof(q3c_coord_t)); qp->dec = malloc(n * sizeof(q3c_coord_t)); qp->ax = malloc(n * sizeof(q3c_coord_t)); qp->ay = malloc(n * sizeof(q3c_coord_t)); qp->x = malloc(n * sizeof(q3c_coord_t)); qp->y = malloc(n * sizeof(q3c_coord_t)); qp->n = n; } void q3c_prepare_poly(q3c_poly *qp) { int n = qp->n - 1 ; int i; q3c_coord_t *ax = qp->ax; q3c_coord_t *ay = qp->ay; q3c_coord_t *x = qp->x; q3c_coord_t *y = qp->y; for(i = 0 ; i < n; i++) { ax[i] = x[i + 1] - x[i]; ay[i] = y[i + 1] - y[i]; } ax[i] = x[0] - x[i]; ay[i] = y[0] - y[i]; } int q3c_check_point_in_poly(q3c_poly *qp, q3c_coord_t x0, q3c_coord_t y0) /* Implementation of the crossing algorithm */ { int i, n = qp->n; q3c_coord_t *y = qp->y; q3c_coord_t *x = qp->x; q3c_coord_t *ax = qp->ax; q3c_coord_t *ay = qp->ay; int result = !Q3C_DISJUNCT; for(i=0;iy[(i+1)%n])) && ((x0-x[i])<(y0-y[i])*ax[i]/ay[i])) { result=!result; } } return !result; } void q3c_get_minmax_poly(q3c_poly *qp, q3c_coord_t *xmin, q3c_coord_t *xmax, q3c_coord_t *ymin, q3c_coord_t *ymax) { int i; const int n = qp->n; q3c_coord_t *x = qp->x, *y = qp->y, t; q3c_coord_t xmi, xma, ymi, yma; xmi = x[0]; xma = x[0]; ymi = y[0]; yma = y[0]; for(i = 1; i < n; i++) { t = x[i]; if (t > xma) { xma = t; } else if (t < xmi) { xmi = t; } t = y[i]; if (t > yma) { yma = t; } else if (t < ymi) { ymi = t; } } *xmin = xmi; *xmax = xma; *ymin = ymi; *ymax = yma; } char q3c_get_facenum_poly(q3c_poly *qp) { return q3c_get_facenum(qp->ra[0], qp->dec[0]); } void q3c_project_poly(q3c_poly *qp, char face_num, char *large_flag) { q3c_coord_t ra1, dec1, tmp0; q3c_coord_t *ra = qp->ra, *dec = qp->dec; q3c_coord_t *x = qp->x, *y = qp->y, x0, y0; q3c_coord_t tmpval ; int i, n = qp->n; if ((face_num > 0) && (face_num < 5)) { face_num--; /* Just computation trick */ for (i = 0; i < n; i++) { ra1 = Q3C_DEGRA * (ra[i] - 90 * (q3c_coord_t)face_num); dec1 = Q3C_DEGRA * dec[i]; tmpval = q3c_cos(ra1); if (tmpval < Q3C_MINDISCR) { *large_flag = 1; } x[i] = (q3c_tan(ra1)) / 2; y[i] = (q3c_tan(dec1)) / tmpval / 2; } /* Now x[i] and y[i] are coordinates on cube face [-0.5:0.5]x[-0.5:0.5] */ } else if (face_num == 0) { for (i = 0; i < n; i++) { ra1 = Q3C_DEGRA * ra[i]; dec1 = Q3C_DEGRA * dec[i]; tmpval = q3c_tan(dec1); if (tmpval < Q3C_MINDISCR) { *large_flag = 1; } tmp0 = 1 / tmpval; q3c_sincos(ra1, x0, y0); x0 *= tmp0; y0 *= (-tmp0); x[i] = x0 / 2; y[i] = y0 / 2; } } else { for (i = 0; i < n; i++) { ra1 = Q3C_DEGRA * ra[i]; dec1 = Q3C_DEGRA * dec[i]; tmpval = q3c_tan(dec1); if (tmpval > -Q3C_MINDISCR) { *large_flag = 1; } tmp0 = 1 / tmpval; q3c_sincos(ra1, x0, y0); x0 *= (-tmp0); y0 *= (-tmp0); x[i] = x0 / 2; y[i] = y0 / 2; } } } static char q3c_poly_intersection_check(q3c_poly *qp, q3c_coord_t xl, q3c_coord_t xr, q3c_coord_t yb, q3c_coord_t yt, q3c_coord_t cur_size) { int i, n = qp->n; q3c_coord_t *ax = qp->ax; q3c_coord_t *ay = qp->ay; q3c_coord_t *x = qp->x; q3c_coord_t *y = qp->y; q3c_coord_t txl, txr, tyb, tyt, axi, ayi, xi, yi, tmp, tmp1; char ret = 0; for( i = 0; i = 0) && (tmp <= 1) && (tmp1 >= 0) && (tmp1 <= cur_size)) { ret = 1; break; } tmp = tyt / ayi; tmp1 = axi * tmp - txl; if ((tmp >= 0) && (tmp <= 1) && (tmp1 >= 0) && (tmp1 <= cur_size)) { ret = 1; break; } tmp = txl / axi; tmp1 = ayi * tmp - tyb; if ((tmp >= 0) && (tmp <= 1) && (tmp1 >= 0) && (tmp1 <= cur_size)) { ret = 1; break; } tmp = txr / axi; tmp1 = ayi * tmp - tyb; if ((tmp >= 0) && (tmp <= 1) && (tmp1 >= 0) && (tmp1 <= cur_size)) { ret = 1; break; } } return ret; } int q3c_poly_cover_check(q3c_poly *qp, q3c_coord_t xc_cur, q3c_coord_t yc_cur, q3c_coord_t cur_size) { q3c_coord_t xl_cur, xr_cur, yb_cur, yt_cur; int val; /* Checking the intersection of ellipse and box * The box parameters are set by variables xc_cur, yc_cur and cur_size */ xl_cur = xc_cur - cur_size / 2; /* left */ xr_cur = xc_cur + cur_size / 2; /* right */ yb_cur = yc_cur - cur_size / 2; /* bottom */ yt_cur = yc_cur + cur_size / 2; /* top */ /* Undef labels -- the labels when the current computed values dont allow * to make the final decision about the intersection */ val = q3c_check_point_in_poly(qp, xl_cur, yb_cur); if (val != Q3C_DISJUNCT) { goto PARTUNDEF_CHECK01; } val = q3c_check_point_in_poly(qp, xr_cur, yb_cur); if (val != Q3C_DISJUNCT) { return Q3C_PARTIAL; } val = q3c_check_point_in_poly(qp, xr_cur, yt_cur); if (val != Q3C_DISJUNCT) { return Q3C_PARTIAL; } val = q3c_check_point_in_poly(qp, xl_cur, yt_cur); if (val != Q3C_DISJUNCT) { return Q3C_PARTIAL; } else { if (q3c_poly_intersection_check(qp, xl_cur, xr_cur, yb_cur, yt_cur, cur_size)|| ((qp->x[0] > xl_cur) && (qp->x[0] < xr_cur) && (qp->y[0] > yb_cur) && (qp->y[0] < yt_cur))) { return Q3C_PARTIAL; } else { return Q3C_DISJUNCT; } } PARTUNDEF_CHECK01: val = q3c_check_point_in_poly(qp, xr_cur, yb_cur); if (val == Q3C_DISJUNCT) { return Q3C_PARTIAL; } //PARTUNDEF_CHECK11: val = q3c_check_point_in_poly(qp, xr_cur, yt_cur); if (val == Q3C_DISJUNCT) { return Q3C_PARTIAL; } //PARTUNDEF_CHECK10: val = q3c_check_point_in_poly(qp, xl_cur, yt_cur); if (val == Q3C_DISJUNCT) { return Q3C_PARTIAL; } else { return Q3C_COVER; } } int q3c_check_sphere_point_in_poly(struct q3c_prm *hprm, int n, q3c_coord_t in_ra[], q3c_coord_t in_dec[], q3c_coord_t ra0, q3c_coord_t dec0, char *too_large, int invocation) { q3c_coord_t xmin,xmax,ymin, ymax; static char faces[6], multi_flag; q3c_ipix_t ipix; q3c_coord_t points[4]; char face_num, face_num0, cur_face_num, large_flag=0; static q3c_coord_t x[3][Q3C_MAX_N_POLY_VERTEX], y[3][Q3C_MAX_N_POLY_VERTEX], ax[3][Q3C_MAX_N_POLY_VERTEX], ay[3][Q3C_MAX_N_POLY_VERTEX], x0, y0; int face_count = -1, i; q3c_poly qp; q3c_ang2ipix_xy(hprm, ra0, dec0, &cur_face_num, &ipix, &x0, &y0); qp.ra = in_ra; qp.dec = in_dec; qp.n = n; if (invocation == 0) { face_num = q3c_get_facenum_poly(&qp); faces[0] = face_num; qp.x = x[0]; qp.y = y[0]; qp.ax = ax[0]; qp.ay = ay[0]; q3c_project_poly(&qp, face_num, &large_flag); if (large_flag) { *too_large=1; } q3c_prepare_poly(&qp); q3c_get_minmax_poly(&qp, &xmin, &xmax, &ymin, &ymax); /* Now I determine whether the poly * intersect other faces or not, and if yes, I setup the array "points" to the * multi_face loop. */ q3c_multi_face_check(&xmin, &ymin, &xmax, &ymax, points, &multi_flag); face_num0 = face_num; for(face_count = 0; face_count <= multi_flag; face_count++) { /* This the beginning of the mega-loop over multiple faces */ if (face_count > 0) /* This "if" works when we pass through the secondary faces */ { face_num = q3c_xy2facenum(2 * points[2 * face_count - 2], 2 * points[2 * face_count - 1], face_num0); faces[face_count] = face_num; qp.x = x[face_count]; qp.y = y[face_count]; qp.ax = ax[face_count]; qp.ay = ay[face_count]; q3c_project_poly(&qp, faces[face_count], &large_flag); if (large_flag) { *too_large=1; } q3c_prepare_poly(&qp); } } } for (i = 0; i <= multi_flag; i++) { if (faces[i] == cur_face_num) { face_count = i; break; } } if (i == (multi_flag + 1)) { return 0; } qp.x = x[face_count]; qp.y = y[face_count]; qp.ax = ax[face_count]; qp.ay = ay[face_count]; return q3c_check_point_in_poly(&qp, x0, y0); } q3c-1.5.0/q3cube.c000066400000000000000000002432201277206762700135540ustar00rootroot00000000000000/* Copyright (C) 2004-2015 Sergey Koposov Email: koposov@ast.cam.ac.uk This file is part of Q3C. Q3C is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Q3C is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Q3C; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "common.h" #include #include #include #include "my_bits.h" static char __q3c_version[]=Q3C_VERSION; static int q3c_setup_square_stack(struct q3c_square *stack, q3c_coord_t xmin, q3c_coord_t ymin, q3c_coord_t xmax, q3c_coord_t ymax, int n0); static void q3c_stack_expand(struct q3c_square* work_stack, int *work_nstack, struct q3c_square* out_stack, int *out_nstack, int cur_depth, int res_depth); static void q3c_output_stack( struct q3c_prm *hprm, struct q3c_square *out_stack, int out_nstack, struct q3c_square *work_stack, int work_nstack, int face_num, int nside, q3c_ipix_t *out_ipix_arr_fulls, int *out_ipix_arr_fulls_pos, q3c_ipix_t *out_ipix_arr_partials, int *out_ipix_arr_partials_pos); static void q3c_fast_get_equatorial_ellipse_xy_minmax(q3c_coord_t alpha, q3c_coord_t delta, q3c_coord_t d, q3c_coord_t e, q3c_coord_t PA, q3c_coord_t *ymin, q3c_coord_t *ymax, q3c_coord_t *zmin, q3c_coord_t *zmax); static void q3c_fast_get_equatorial_ellipse_xy_minmax_and_poly_coefs(q3c_coord_t alpha, q3c_coord_t delta, q3c_coord_t d, q3c_coord_t e, q3c_coord_t PA, q3c_coord_t *ymin, q3c_coord_t *ymax, q3c_coord_t *zmin, q3c_coord_t *zmax, q3c_coord_t *ayy, q3c_coord_t *azz, q3c_coord_t *ayz, q3c_coord_t *ay, q3c_coord_t *az, q3c_coord_t *a); static void q3c_fast_get_polar_ellipse_xy_minmax_and_poly_coefs(q3c_coord_t alpha, q3c_coord_t delta, q3c_coord_t d, q3c_coord_t e, q3c_coord_t PA, q3c_coord_t *ymin, q3c_coord_t *ymax, q3c_coord_t *zmin, q3c_coord_t *zmax, q3c_coord_t *ayy, q3c_coord_t *azz, q3c_coord_t *ayz, q3c_coord_t *ay, q3c_coord_t *az, q3c_coord_t *a); static void q3c_fast_get_ellipse_xy_minmax_and_poly_coefs(char face_num, q3c_coord_t ra0, q3c_coord_t dec0, q3c_coord_t d0, q3c_coord_t e, q3c_coord_t PA0, q3c_coord_t *ymin, q3c_coord_t *ymax, q3c_coord_t *zmin, q3c_coord_t *zmax, q3c_coord_t *ayy, q3c_coord_t *azz, q3c_coord_t *ayz, q3c_coord_t *ay, q3c_coord_t *az, q3c_coord_t *a); static void q3c_fast_get_polar_ellipse_xy_minmax(q3c_coord_t alpha, q3c_coord_t delta, q3c_coord_t d, q3c_coord_t e, q3c_coord_t PA, q3c_coord_t *ymin, q3c_coord_t *ymax, q3c_coord_t *zmin, q3c_coord_t *zmax); static void q3c_fast_get_xy_minmax(char, q3c_region, void *, q3c_coord_t *, q3c_coord_t *, q3c_coord_t *, q3c_coord_t *); static void q3c_fast_get_circle_xy_minmax(char, q3c_coord_t, q3c_coord_t, q3c_coord_t, q3c_coord_t *, q3c_coord_t *, q3c_coord_t *, q3c_coord_t *); static void q3c_fast_get_ellipse_xy_minmax(char, q3c_coord_t, q3c_coord_t, q3c_coord_t,q3c_coord_t, q3c_coord_t, q3c_coord_t *, q3c_coord_t *, q3c_coord_t *, q3c_coord_t *); static void array_filler(q3c_ipix_t *fulls, int fullpos, q3c_ipix_t *parts, int partpos); void q3c_get_version(char *out, int maxchar) { strncpy(out,__q3c_version,maxchar); } /* Distance calculation routine, inputs and outputs are in degrees */ q3c_coord_t q3c_dist(q3c_coord_t ra1, q3c_coord_t dec1, q3c_coord_t ra2, q3c_coord_t dec2) { /* Fast and precise way to compute the distance on the sphere * it uses just 3 evaluations of trigonometric functions */ q3c_coord_t x, y, z; x = q3c_sin ((ra1 - ra2) / 2 * Q3C_DEGRA ); x *= x; y = q3c_sin ((dec1 - dec2) / 2 * Q3C_DEGRA); y *= y; /* Seem to be more precise :) */ z = q3c_cos ((dec1 + dec2)/2 * Q3C_DEGRA); z*=z; return 2 * q3c_asin (q3c_sqrt (x * (z - y) + y)) * Q3C_RADEG; } /* sin(Distance) calculation routine, inputs and outputs are in degrees */ q3c_coord_t q3c_sindist(q3c_coord_t ra1, q3c_coord_t dec1, q3c_coord_t ra2, q3c_coord_t dec2) { /* Fast and precise way to compute the distance on the sphere * it uses just 3 evaluations of trigonometric functions */ q3c_coord_t x, y, z; x = q3c_sin ((ra1 - ra2) / 2 * Q3C_DEGRA); x *= x; y = q3c_sin ((dec1 - dec2) / 2 * Q3C_DEGRA); y *= y; /* Seem to be more precise :) */ z = q3c_cos ((dec1 + dec2)/2 * Q3C_DEGRA); z*=z; return x * (z - y) + y; } /* convert angular coordinates (ra,dec) -> ipix * ang2ipix is also outputting x,y on the cube face * Coordinates on the cube face are x[-0.5,0.5] y[-0.5,0.5] * ipix structure is the following: * Bit 0(leftmost) : unused * Bit 1-3: Cube face id ( 0 is the top face, 5 is the bottom face, 1-4 are faces looking towards (x,y)=(1,0), (0,1) (-1,0) (0,-1) * Bit 4-63: 60-bit long location in the quadtree on the cube face, encoded by z-order (e.g. two interleaved bit strings on for x, another for y) * The mapping between x,y,z to (ra,dec) is such that (x,y,z)=(1,0,0) corresponds to (ra,dec)=(0,0) (x,y,z)=(0,0,1) corresponds to (ra,dec)=(0,90) */ void q3c_ang2ipix_xy (struct q3c_prm *hprm, q3c_coord_t ra0, q3c_coord_t dec0, char *out_face_num, q3c_ipix_t *ipix, q3c_coord_t *x_out, q3c_coord_t *y_out) /* ra in degrees, dec in degrees */ /* strictly 0<=ra<360 and -90<=dec<=90 */ { q3c_coord_t x0 = 0, y0 = 0, ra1, dec1, tmp0; q3c_coord_t ra,dec; q3c_ipix_t nside = hprm->nside, *xbits = hprm->xbits, *ybits = hprm->ybits, xi, yi; char face_num; /* We check against crazy right ascensions */ ra = UNWRAP_RA(ra0); /* protection against wrong declinations */ if (dec0 > 90) { dec = 90; } else if (dec0 < -90) { dec = -90; } else { dec = dec0; } face_num = q3c_fmod ((ra + 45) / 90, 4); /* for equatorial pixels we'll have face_num from 1 to 4 */ ra1 = Q3C_DEGRA * (ra - 90 * (q3c_coord_t)face_num); dec1 = Q3C_DEGRA * dec; x0 = q3c_tan (ra1); y0 = q3c_tan (dec1) / q3c_cos (ra1); face_num++; if (y0 > 1) { face_num = 0; ra1 = Q3C_DEGRA * ra; tmp0 = 1 / q3c_tan (dec1); q3c_sincos (ra1, x0, y0); x0 *= tmp0; y0 *= (-tmp0); /*x0 = q3c_sin(ra1) / q3c_tan(dec1);*/ /*y0 = -q3c_cos(ra1) / q3c_tan(dec1);*/ /* I don't know * Probably I should write (sin(ra)/sin(dec))*cos(dec) to * not loose the precision in the region where dec ~=90deg */ } else if (y0 < -1) { face_num = 5; ra1 = Q3C_DEGRA * ra; tmp0 = 1 / q3c_tan (dec1); q3c_sincos (ra1, x0, y0); x0 *= (-tmp0); y0 *= (-tmp0); /*x0 = -q3c_sin(ra1) / q3c_tan(dec1);*/ /*y0 = -q3c_cos(ra1) / q3c_tan(dec1);*/ } *x_out = x0 / 2; *y_out = y0 / 2; x0 = (x0 + 1) / 2; y0 = (y0 + 1) / 2; /* Now I produce the final pixel value by converting x and y values * to bitfields and combining them by interleaving, using the * predefined arrays xbits and ybits */ xi = (q3c_ipix_t)(x0 * nside); yi = (q3c_ipix_t)(y0 * nside); /* This two following statements are written to handle the * case of upper right corner of base square */ if (xi == nside) { xi--; } if (yi == nside) { yi--; } *ipix = q3c_xiyi2ipix(nside, xbits, ybits, face_num, xi, yi); *out_face_num = face_num; } /* convert coordinates (ra,dec) -> ipix * ra, dec in degrees * and strictly 0<=ra<360 and -90<=dec<=90 */ void q3c_ang2ipix(struct q3c_prm *hprm, q3c_coord_t ra0, q3c_coord_t dec0, q3c_ipix_t *ipix) { q3c_coord_t tmpx, tmpy; char face; q3c_ang2ipix_xy(hprm, ra0, dec0, &face, ipix, &tmpx, &tmpy); } /* get the cube face number for a given coordinates * ra, dec in degrees * and strictly 0<=ra<360 and -90<=dec<=90 */ char q3c_get_facenum(q3c_coord_t ra, q3c_coord_t dec) { q3c_coord_t y0 = 0; char face_num; if (dec >= 90) /* Poles */ { return 0; } else if (dec <= -90) { return 5; } face_num = q3c_fmod ((ra + 45) / 90, 4); /*for equatorial pixels we'll have face_num from 1 to 4 */ y0 = q3c_tan(dec * Q3C_DEGRA) / q3c_cos(Q3C_DEGRA * (ra - 90 * (q3c_coord_t)face_num)); face_num++; if (y0 > 1) { return 0; } else if (y0 < -1) { return 5; } else { return face_num; } } /* get the main cube face number for a given region * CIRCLE/ELLIPSE/POLYGON */ char q3c_get_region_facenum(q3c_region region, void *data) { switch(region) { case Q3C_CIRCLE: { q3c_circle_region circle = *(q3c_circle_region*)data; return q3c_get_facenum(circle.ra, circle.dec); } case Q3C_ELLIPSE: { q3c_ellipse_region ellipse = *(q3c_ellipse_region*) data; return q3c_get_facenum(ellipse.ra, ellipse.dec); } case Q3C_POLYGON: { q3c_poly poly = *(q3c_poly *) data; return q3c_get_facenum_poly(&poly); } default: return 1; } } /* Check that the given point (alpha, delta0) * is within the ellipse specified by * center, maj_ax, axis ratio and positional angle */ char q3c_in_ellipse(q3c_coord_t alpha, q3c_coord_t delta0, q3c_coord_t alpha1, q3c_coord_t delta01, q3c_coord_t d0, q3c_coord_t e, q3c_coord_t PA0) { q3c_coord_t d_alpha = (alpha1 - alpha) * Q3C_DEGRA; q3c_coord_t delta1 = delta01 * Q3C_DEGRA; q3c_coord_t delta = delta0 * Q3C_DEGRA; q3c_coord_t PA = PA0 * Q3C_DEGRA; q3c_coord_t d = d0 * Q3C_DEGRA; q3c_coord_t t1 = q3c_cos(d_alpha); q3c_coord_t t22 = q3c_sin(d_alpha); q3c_coord_t t3 = q3c_cos(delta1); q3c_coord_t t32 = q3c_sin(delta1); q3c_coord_t t6 = q3c_cos(delta); q3c_coord_t t26 = q3c_sin(delta); q3c_coord_t t9 = q3c_cos(d); q3c_coord_t t55 = q3c_sin(d); q3c_coord_t t2; q3c_coord_t t4; q3c_coord_t t5; q3c_coord_t t7; q3c_coord_t t8; q3c_coord_t t10; q3c_coord_t t11; q3c_coord_t t13; q3c_coord_t t14; q3c_coord_t t15; q3c_coord_t t18; q3c_coord_t t19; q3c_coord_t t24; q3c_coord_t t31; q3c_coord_t t36; q3c_coord_t t37; q3c_coord_t t38; q3c_coord_t t45; q3c_coord_t t56; q3c_coord_t t57; q3c_coord_t t60; q3c_coord_t t61; q3c_coord_t t63; if ((t3 * t6 * t1 + t32 * t26) < 0) { return 0; } t2 = t1*t1; t4 = t3*t3; t5 = t2*t4; t7 = t6*t6; t8 = t5*t7; t10 = t9*t9; t11 = t7*t10; t13 = q3c_cos(PA); t14 = t13*t13; t15 = t14*t10; t18 = t7*t14; t19 = t18*t10; t24 = q3c_sin(PA); t31 = t1*t3; t36 = 2.0*t31*t32*t26*t6; t37 = t31*t32; t38 = t26*t6; t45 = t4*t10; t56 = t55*t55; t57 = t4*t7; t60 = -t8+t5*t11+2.0*t5*t15-t5*t19-2.0*t1*t4*t22*t10*t24*t13*t26-t36+2.0*t37*t38*t10-2.0*t37*t38*t15-t45*t14-t45*t2+2.0*t22*t3*t32*t6*t24*t10*t13-t56+t7-t11+t4-t57+t57*t10+t19-t18*t45; t61 = e*e; t63 = t60*t61+t8+t57-t4-t7+t56+t36; return t63 > 0; } /* Checking whether the box (xmin,ymin,xmax,ymax) intersects other faces or * not. If yes, I setup the array "points" designed to help us work on * other faces ( points array will then have the coordinates on a main face * which should be mapped to other faces * !!!!!!!!!!!!!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * !!!!!!! It does change the arguments (xmin,xmax, ymin, ymax) !!!!!!!! */ void q3c_multi_face_check(q3c_coord_t *xmin0, q3c_coord_t *ymin0, q3c_coord_t *xmax0, q3c_coord_t *ymax0, q3c_coord_t *points, char *multi_flag) { const q3c_coord_t xmin = *xmin0, xmax = *xmax0, ymin = *ymin0, ymax = *ymax0; if (xmin < -Q3C_HALF) { if (ymin < -Q3C_HALF) { points[0] = xmax; points[1] = ymin; points[2] = xmin; points[3] = ymax; *multi_flag = 2; *xmin0 = -Q3C_HALF; *ymin0 = -Q3C_HALF; } else { if (ymax > Q3C_HALF) { points[0] = xmax; points[1] = ymax; points[2] = xmin; points[3] = ymin; *multi_flag = 2; *xmin0 = -Q3C_HALF; *ymax0 = Q3C_HALF; } else { points[0] = xmin; points[1] = (ymin + ymax) / 2; *multi_flag = 1; *xmin0 = -Q3C_HALF; } } } else { if (xmax > Q3C_HALF) { if (ymin < -Q3C_HALF) { points[0] = xmin; points[1] = ymin; points[2] = xmax; points[3] = ymax; *multi_flag = 2; *xmax0 = Q3C_HALF; *ymin0 = -Q3C_HALF; } else { if (ymax > Q3C_HALF) { points[0] = xmin; points[1] = ymax; points[2] = xmax; points[3] = ymin; *multi_flag = 2; *xmax0 = Q3C_HALF; *ymax0 = Q3C_HALF; } else { points[0] = xmax; points[1] = (ymin + ymax) / 2; *multi_flag = 1; *xmax0 = Q3C_HALF; } } } else { if (ymin < -Q3C_HALF) { points[0] = (xmin + xmax) / 2; points[1] = ymin; *multi_flag = 1; *ymin0 = -Q3C_HALF; } else { if (ymax > Q3C_HALF) { points[0] = (xmin + xmax) / 2; points[1] = ymax; *multi_flag = 1; *ymax0 = Q3C_HALF; } else { *multi_flag = 0; } } } } } /* Get the list of 4 ipix ranges * which decsribe the neighborhood of a given point * specified by q3c_region * ra in degrees, dec in degrees, radius in degrees * strictly 0<=ra<360 and -90<=dec<=90 */ void q3c_get_nearby(struct q3c_prm *hprm, q3c_region region, void *region_data, q3c_ipix_t *ipix) { q3c_coord_t xmin, xmax, ymin, ymax, xesize, yesize, points[4]; q3c_ipix_t nside = hprm->nside, *xbits = hprm->xbits, *ybits = hprm->ybits, *ipix_cur = ipix, ipix0, xi, yi, n0, n1, ixmin, ixmax, iymin, iymax, xistack[4], yistack[4], facestack[4], nstack[4]; char face_num, face_num0, multi_flag; int i, nistack = 0; const q3c_coord_t q3c_lg2 = Q3C_LG2; if (q3c_too_big_check(region, region_data)) { /* the whole sky */ q3c_ipix_t maxval = 6*(nside*nside); *(ipix_cur++) = -1 ; *(ipix_cur++) = maxval; for(i = 1; i < 4; i++ ) { *(ipix_cur++) = 1 ; *(ipix_cur++) = -1; } return; } face_num = q3c_get_region_facenum(region, region_data); face_num0 = face_num; q3c_fast_get_xy_minmax(face_num, region, region_data, &xmin, &xmax, &ymin, &ymax); /* xmin, xmax, ymin, ymax are in the coordinate system of the cube face * where -0.5<=x<=0.5 and -0.5<=y<=0.5 */ #ifdef Q3C_DEBUG fprintf(stderr, "XMIN: %f XMAX: %f YMIN: %f YMAX: %f\n", xmin, xmax, ymin, ymax); #endif q3c_multi_face_check(&xmin, &ymin, &xmax, &ymax, points, &multi_flag); if (multi_flag == 0) { xesize = xmax - xmin; yesize = ymax - ymin; xesize = xesize > yesize ? xesize : yesize; if (xesize * nside < 1) /* If the region is too small */ { xesize = 1 / (q3c_coord_t)nside; } n0 = 1 << ((q3c_ipix_t)(-q3c_ceil(q3c_log(xesize) / q3c_lg2))); /* n0 is now the level of quadtree for which the minimal * element is >~ our ellipse */ ixmin = (Q3C_HALF + xmin) * n0; ixmax = (Q3C_HALF + xmax) * n0; iymin = (Q3C_HALF + ymin) * n0; iymax = (Q3C_HALF + ymax) * n0; ixmax = (ixmax == n0 ? n0 - 1 : ixmax); iymax = (iymax == n0 ? n0 - 1 : iymax); n1 = nside / n0; if (iymin == iymax) { if (ixmin == ixmax) { xistack[0] = (q3c_ipix_t)(ixmin * n1); yistack[0] = (q3c_ipix_t)(iymin * n1); facestack[0] = face_num; nstack[0] = n1; nistack = 1; } else { xistack[0] = (q3c_ipix_t)(ixmin * n1); yistack[0] = (q3c_ipix_t)(iymin * n1); facestack[0] = face_num; nstack[0] = n1; xistack[1] = (q3c_ipix_t)(ixmax * n1); yistack[1] = (q3c_ipix_t)(iymin * n1); facestack[1] = face_num; nstack[1] = n1; nistack = 2; } } else { if (ixmin == ixmax) { xistack[0] = (q3c_ipix_t)(ixmin * n1); yistack[0] = (q3c_ipix_t)(iymin * n1); facestack[0] = face_num; nstack[0] = n1; xistack[1] = (q3c_ipix_t)(ixmin * n1); yistack[1] = (q3c_ipix_t)(iymax * n1); facestack[1] = face_num; nstack[1] = n1; nistack = 2; } else { xistack[0] = (q3c_ipix_t)(ixmin * n1); yistack[0] = (q3c_ipix_t)(iymin * n1); facestack[0] = face_num; nstack[0] = n1; xistack[1] = (q3c_ipix_t)(ixmin * n1); yistack[1] = (q3c_ipix_t)(iymax * n1); facestack[1] = face_num; nstack[1] = n1; xistack[2] = (q3c_ipix_t)(ixmax * n1); yistack[2] = (q3c_ipix_t)(iymin * n1); facestack[2] = face_num; nstack[2] = n1; xistack[3] = (q3c_ipix_t)(ixmax * n1); yistack[3] = (q3c_ipix_t)(iymax * n1); facestack[3] = face_num; nstack[3] = n1; nistack = 4; } } } else { if (multi_flag == 1) { xesize = xmax - xmin; yesize = ymax - ymin; xesize = xesize > yesize ? xesize : yesize; if (xesize * nside < 1) /* If the region is too small */ { xesize = 1 / (q3c_coord_t)nside; } n0 = 1 << ((q3c_ipix_t)(-q3c_ceil(q3c_log(xesize) / q3c_lg2))); /* n0 is now the level of quadtree for which the minimal * element is >~ our ellipse */ ixmin = (Q3C_HALF + xmin) * n0; ixmax = (Q3C_HALF + xmax) * n0; iymin = (Q3C_HALF + ymin) * n0; iymax = (Q3C_HALF + ymax) * n0; ixmax = (ixmax == n0 ? n0 - 1 : ixmax); iymax = (iymax == n0 ? n0 - 1 : iymax); n1 = nside / n0; if (ixmin == ixmax) { if (iymin == iymax) { xistack[0] = (q3c_ipix_t)(ixmin * n1); yistack[0] = (q3c_ipix_t)(iymin * n1); facestack[0] = face_num; nstack[0] = n1; nistack = 1; } else { xistack[0] = (q3c_ipix_t)(ixmin * n1); yistack[0] = (q3c_ipix_t)(iymin * n1); facestack[0] = face_num; nstack[0] = n1; xistack[1] = (q3c_ipix_t)(ixmin * n1); yistack[1] = (q3c_ipix_t)(iymax * n1); facestack[1] = face_num; nstack[1] = n1; nistack = 2; } } else { xistack[0] = (q3c_ipix_t)(ixmin * n1); yistack[0] = (q3c_ipix_t)(iymin * n1); facestack[0] = face_num; nstack[0] = n1; xistack[1] = (q3c_ipix_t)(ixmax * n1); yistack[1] = (q3c_ipix_t)(iymin * n1); facestack[1] = face_num; nstack[1] = n1; nistack = 2; } face_num = q3c_xy2facenum(2 * points[0], 2 * points[1], face_num0); q3c_fast_get_xy_minmax(face_num, region, region_data, &xmin, &xmax, &ymin, &ymax); xmax = (xmax > Q3C_HALF ? Q3C_HALF : xmax); xmin = (xmin < -Q3C_HALF ? -Q3C_HALF : xmin); ymax = (ymax > Q3C_HALF ? Q3C_HALF : ymax); ymin = (ymin < -Q3C_HALF ? -Q3C_HALF : ymin); xesize = xmax - xmin; yesize = ymax - ymin; xesize = xesize > yesize ? xesize : yesize; if (xesize * nside < 1) /* If the region is too small */ { xesize = 1 / (q3c_coord_t)nside; } n0 = 1 << ((q3c_ipix_t)(-q3c_ceil(q3c_log(xesize) / q3c_lg2))); /* n0 is now the level of quadtree for which the minimal * element is >~ our ellipse */ ixmin = (Q3C_HALF + xmin) * n0; ixmax = (Q3C_HALF + xmax) * n0; iymin = (Q3C_HALF + ymin) * n0; iymax = (Q3C_HALF + ymax) * n0; ixmax = (ixmax == n0 ? n0 - 1 : ixmax); iymax = (iymax == n0 ? n0 - 1 : iymax); n1 = nside / n0; if (ixmin == ixmax) { if (iymin == iymax) { xistack[nistack] = (q3c_ipix_t)(ixmin * n1); yistack[nistack] = (q3c_ipix_t)(iymin * n1); facestack[nistack] = face_num; nstack[nistack++] = n1; } else { xistack[nistack] = (q3c_ipix_t)(ixmin * n1); yistack[nistack] = (q3c_ipix_t)(iymin * n1); facestack[nistack] = face_num; nstack[nistack++] = n1; xistack[nistack] = (q3c_ipix_t)(ixmin * n1); yistack[nistack] = (q3c_ipix_t)(iymax * n1); facestack[nistack] = face_num; nstack[nistack++] = n1; } } else { xistack[nistack] = (q3c_ipix_t)(ixmin * n1); yistack[nistack] = (q3c_ipix_t)(iymin * n1); facestack[nistack] = face_num; nstack[nistack++] = n1; xistack[nistack] = (q3c_ipix_t)(ixmax * n1); yistack[nistack] = (q3c_ipix_t)(iymin * n1); facestack[nistack] = face_num; nstack[nistack++] = n1; } } else { xesize = xmax - xmin; yesize = ymax - ymin; xesize = xesize > yesize ? xesize : yesize; if (xesize * nside < 1) /* If the region is too small */ { xesize=1 / (q3c_coord_t)nside; } n0 = 1 << ((q3c_ipix_t)(-q3c_ceil(q3c_log(xesize) / q3c_lg2))); /* n0 is now the level of quadtree for which the minimal * element is >~ our ellipse */ ixmin = (Q3C_HALF + xmin) * n0; ixmax = (Q3C_HALF + xmax) * n0; iymin = (Q3C_HALF + ymin) * n0; iymax = (Q3C_HALF + ymax) * n0; ixmax = (ixmax == n0 ? n0 - 1 : ixmax); iymax = (iymax == n0 ? n0 - 1 : iymax); n1 = nside / n0; xistack[0] = (q3c_ipix_t)(ixmin * n1); yistack[0] = (q3c_ipix_t)(iymin * n1); facestack[0] = face_num; nstack[0] = n1; nistack = 1; face_num = q3c_xy2facenum(2 * points[0], 2 * points[1], face_num0); q3c_fast_get_xy_minmax(face_num, region, region_data, &xmin, &xmax, &ymin, &ymax); xmax = (xmax > Q3C_HALF ? Q3C_HALF : xmax); xmin = (xmin < -Q3C_HALF ? -Q3C_HALF : xmin); ymax = (ymax > Q3C_HALF ? Q3C_HALF : ymax); ymin = (ymin < -Q3C_HALF ? -Q3C_HALF : ymin); xesize = xmax - xmin; yesize = ymax - ymin; xesize = xesize > yesize ? xesize : yesize; if (xesize * nside < 1) /* If the region is too small */ { xesize=1 / (q3c_coord_t)nside; } n0 = 1 << ((q3c_ipix_t)(-q3c_ceil(q3c_log(xesize) / q3c_lg2))); /* n0 is now the level of quadtree for which the minimal * element is >~ our ellipse */ ixmin = (Q3C_HALF + xmin) * n0; ixmax = (Q3C_HALF + xmax) * n0; iymin = (Q3C_HALF + ymin) * n0; iymax = (Q3C_HALF + ymax) * n0; ixmax = (ixmax == n0 ? n0 - 1 : ixmax); iymax = (iymax == n0 ? n0 - 1 : iymax); n1 = nside / n0; xistack[1] = (q3c_ipix_t)(ixmin * n1); yistack[1] = (q3c_ipix_t)(iymin * n1); facestack[1] = face_num; nstack[1] = n1; nistack = 2; face_num = q3c_xy2facenum(2 * points[2], 2 * points[3], face_num0); q3c_fast_get_xy_minmax(face_num, region, region_data, &xmin, &xmax, &ymin, &ymax); xmax = (xmax > Q3C_HALF ? Q3C_HALF : xmax); xmin = (xmin < -Q3C_HALF ? -Q3C_HALF : xmin); ymax = (ymax > Q3C_HALF ? Q3C_HALF : ymax); ymin = (ymin < -Q3C_HALF ? -Q3C_HALF : ymin); xesize = xmax - xmin; yesize = ymax - ymin; xesize = xesize > yesize ? xesize : yesize; if (xesize * nside < 1) /* If the region is too small */ { xesize = 1 / (q3c_coord_t)nside; } n0 = 1 << ((q3c_ipix_t)(-q3c_ceil(q3c_log(xesize) / q3c_lg2))); /* n0 is now the level of quadtree for which the minimal * element is >~ our ellipse */ ixmin = (Q3C_HALF + xmin) * n0; ixmax = (Q3C_HALF + xmax) * n0; iymin = (Q3C_HALF + ymin) * n0; iymax = (Q3C_HALF + ymax) * n0; ixmax = (ixmax == n0 ? n0-1 : ixmax); iymax = (iymax == n0 ? n0-1 : iymax); n1 = nside / n0; xistack[2] = (q3c_ipix_t)(ixmin * n1); yistack[2] = (q3c_ipix_t)(iymin * n1); facestack[2] = face_num; nstack[2] = n1; nistack = 3; } } #ifdef Q3C_DEBUG fprintf(stderr, "MULTI_FLAG: %d\n", multi_flag); #endif /* Now I produce the final pixel value by converting x and y values to bitfields and combining them by interleaving, using the predefined arrays xbits and ybits */ for(i = 0; i < nistack ; i++) { face_num = facestack[i]; xi = xistack[i]; yi = yistack[i]; n1 = nstack[i]; ipix0 = q3c_xiyi2ipix(nside, xbits, ybits, face_num, xi, yi); *(ipix_cur++) = ipix0; *(ipix_cur++) = ipix0 + n1 * n1 - 1; /* IMPORTANT!! I subtract 1 to make after the query with <=ipix<= */ } for(; i < 4; i++) { *(ipix_cur++) = 1; *(ipix_cur++) = -1; } } /* Converts integer coordinates on cube face to * ipix number by performing bit interleaving */ q3c_ipix_t q3c_xiyi2ipix(q3c_ipix_t nside, q3c_ipix_t *xbits, q3c_ipix_t *ybits, char face_num, q3c_ipix_t xi, q3c_ipix_t yi) { return ((q3c_ipix_t)face_num) * nside * nside + xbits[xi % Q3C_I1] + ybits[yi % Q3C_I1] + (xbits[(xi >> Q3C_INTERLEAVED_NBITS) % Q3C_I1] + ybits[(yi >> Q3C_INTERLEAVED_NBITS) % Q3C_I1]) * Q3C_I1 * Q3C_I1; /*8byte computation*/ } /* convert ipix number ra,dec in degrees */ void q3c_ipix2ang(struct q3c_prm *hprm, q3c_ipix_t ipix, q3c_coord_t *ra, q3c_coord_t *dec) { q3c_ipix_t nside = hprm->nside, ipix1, *xbits1=hprm->xbits1, *ybits1 = hprm->ybits1, i2, i3, x0, y0; q3c_coord_t x, y, ra0; char face_num = ipix / (nside * nside); const q3c_ipix_t ii1 = 1 << (Q3C_INTERLEAVED_NBITS / 2); ipix1 = ipix % (nside * nside); i3 = ipix1 % Q3C_I1; i2 = ipix1 / Q3C_I1; x0 = xbits1[i3]; y0 = ybits1[i3]; i3 = i2 % Q3C_I1; i2 = i2 / Q3C_I1; x0 += xbits1[i3] * ii1; y0 += ybits1[i3] * ii1; i3 = i2 % Q3C_I1; i2 = i2 / Q3C_I1; x0 += xbits1[i3] * ii1 * ii1; y0 += ybits1[i3] * ii1 * ii1; i3 = i2 % Q3C_I1; i2 = i2 / Q3C_I1; x0 += xbits1[i3] * ii1 * ii1 * ii1; y0 += ybits1[i3] * ii1 * ii1 * ii1; /* BIT_PRINT8(ipix); BIT_PRINT8ix(x0); BIT_PRINT8iy(y0); */ x = (((q3c_coord_t)x0) / nside) * 2 - 1; y = (((q3c_coord_t)y0) / nside) * 2 - 1; /* Now -1= 1) && (face_num <= 4)) { ra0 = q3c_atan(x); *dec = Q3C_RADEG * q3c_atan(y * q3c_cos(ra0)); ra0 = ra0 * Q3C_RADEG + ((q3c_coord_t)face_num - 1) * 90; if (ra0 < 0) { ra0 += (q3c_coord_t)360; } *ra = ra0; } else { if (face_num == 0) { ra0 = Q3C_RADEG * (q3c_atan2(-x, y) + Q3C_PI); *dec = Q3C_RADEG * q3c_atan( 1 / q3c_sqrt(x * x + y * y)); *ra = ra0; } if (face_num == 5) { ra0 = Q3C_RADEG * (q3c_atan2(-x, -y) + Q3C_PI); *dec = -Q3C_RADEG * q3c_atan(1 / q3c_sqrt(x * x + y * y)); *ra = ra0; } } /*fprintf(stdout,"XXX %d %.20Lf %.20Lf\n",face_num,*ra,*dec);*/ } /* Compute the area of a given Q3C pixel for a given ipix and depth * depth here goes from 1 to 30 in the case of 8byte ints * and means depth == 1 pixel is the the smallest pixel, and depth== 30 pixel * is the whole cube face */ q3c_coord_t q3c_pixarea(struct q3c_prm *hprm, q3c_ipix_t ipix, int depth) { /* The first part of this function's text was taken from q3c_ipix2ang() * In the future I should split the ipix2xy and xy2ang codepaths * and put them in the separate functions */ q3c_ipix_t nside = hprm->nside, ipix1, *xbits1=hprm->xbits1, *ybits1 = hprm->ybits1, i2, i3, x0, y0, idx, ix1, iy1, ix2, iy2; q3c_coord_t x1, y1, x2, y2, result; /* char face_num = ipix / (nside * nside);*/ const q3c_ipix_t ii1 = 1 << (Q3C_INTERLEAVED_NBITS / 2); ipix1 = ipix % (nside * nside); i3 = ipix1 % Q3C_I1; i2 = ipix1 / Q3C_I1; x0 = xbits1[i3]; y0 = ybits1[i3]; i3 = i2 % Q3C_I1; i2 = i2 / Q3C_I1; x0 += xbits1[i3] * ii1; y0 += ybits1[i3] * ii1; i3 = i2 % Q3C_I1; i2 = i2 / Q3C_I1; x0 += xbits1[i3] * ii1 * ii1; y0 += ybits1[i3] * ii1 * ii1; i3 = i2 % Q3C_I1; i2 = i2 / Q3C_I1; x0 += xbits1[i3] * ii1 * ii1 * ii1; y0 += ybits1[i3] * ii1 * ii1 * ii1; /* BIT_PRINT8(ipix); BIT_PRINT8ix(x0); BIT_PRINT8iy(y0); */ ix1 = (x0 >> depth) << depth; iy1 = (y0 >> depth) << depth; idx = ((q3c_ipix_t)1)<1e-4) { result = ( q3c_acos(x1 * y2) - q3c_acos(x1 * y1) ) + ( q3c_acos(x2 * y1) - q3c_acos(x2 * y2) ); } else { result = q3c_asin( x1*(y1-y2)*(y1+y2)/(y2*sqrt(1-x1*x1*y1*y1)+y1*sqrt(1-x1*x1*y2*y2)))+ q3c_asin( x2*(y2-y1)*(y1+y2)/(y1*sqrt(1-x2*x2*y2*y2)+y2*sqrt(1-x2*x2*y1*y1))); } result = q3c_fabs(result); return result; } /* Find to which facenum a given x,y point on a given face_num0 corresponds * The input x, y should be >=-1 and <=1 */ char q3c_xy2facenum(q3c_coord_t x, q3c_coord_t y, char face_num0) { q3c_coord_t ra = 0, dec = 0; /* I do the initialization since gcc warns about probable not * initialization of ra and dec */ /* This code has been cut out from ipix2ang BEGIN */ if ((face_num0 >= 1) && (face_num0 <= 4)) { ra = q3c_atan(x); dec = Q3C_RADEG * q3c_atan(y * q3c_cos(ra)); ra = ra * Q3C_RADEG + ((q3c_coord_t)face_num0 - 1) * 90; if (ra < 0) { ra += (q3c_coord_t)360; } } else { if (face_num0 == 0) { ra = Q3C_RADEG * q3c_atan2(x, -y); dec = Q3C_RADEG * q3c_atan(1 / q3c_sqrt(x * x + y * y)); if (ra < 0) { ra += (q3c_coord_t)360; } } if (face_num0 == 5) { ra = Q3C_RADEG * q3c_atan2(x, y); dec = -Q3C_RADEG * q3c_atan(1 / q3c_sqrt(x * x + y * y)); if (ra < 0) { ra += (q3c_coord_t)360; } } } /* This code has been cut out from ipix2ang END */ return q3c_get_facenum(ra,dec); } /* Initialization of the Q3CUBE structure * hprm -- Pointer to main Q3C structure * nside -- Nside parameter (number of quadtree subdivisions) */ void init_q3c1(struct q3c_prm *hprm, q3c_ipix_t nside) { int i, k, m, l; const q3c_ipix_t nbits = Q3C_INTERLEAVED_NBITS; /* Number of bits used when interleaving bits * so the size of each allocated array will be 2^16 */ q3c_ipix_t *xbits, *ybits, *xbits1, *ybits1, xybits_size = 1 << nbits; hprm->nside = nside; xbits = malloc((xybits_size) * sizeof(q3c_ipix_t)); hprm->xbits = xbits; ybits = malloc((xybits_size) * sizeof(q3c_ipix_t)); hprm->ybits = ybits; xbits1 = malloc((xybits_size) * sizeof(q3c_ipix_t)); hprm->xbits1 = xbits1; ybits1 = malloc((xybits_size) * sizeof(q3c_ipix_t)); hprm->ybits1 = ybits1; xbits[0] = 0; xbits[1] = 1; ybits[0] = 0; ybits[1] = 2; /* BIT_PRINT8(xbits[0]); BIT_PRINT8(xbits[1]); */ for(i = 2, m = 1; i < xybits_size; i++) { k = i / m; if (k == 2) { xbits[i] = xbits[i / 2] * 4; ybits[i] = 2 * xbits[i]; m *= 2; /* BIT_PRINT8(xbits[i]); fprintf(stdout,"%lld\n",ybits[i]); */ continue; } else { xbits[i] = xbits[m] + xbits[i % m]; ybits[i] = 2 * xbits[i]; /* BIT_PRINT8(xbits[i]); fprintf(stdout,"%lld\n",ybits[i]); */ continue; } } xbits1[0] = 0; xbits1[1] = 1; /* fprintf(stdout,"%lld\n",xbits1[0]); fprintf(stdout,"%lld\n",xbits1[1]); BIT_PRINT8(xbits[0]); BIT_PRINT8(xbits[1]); */ for(i = 2, m = 2, l = 2; i < xybits_size; i++) { k = i / m; if (k < 2) { xbits1[i] = xbits1[i - m]; } else { if (k == 4) { xbits1[i] = xbits1[0]; m *= 4; l *= 2; } else xbits1[i] = xbits1[i - 2 * m] + l; } /* fprintf(stdout,"%lld\n",xbits1[i]); */ } ybits1[0] = 0; ybits1[1] = 0; /* fprintf(stdout,"%lld\n",ybits1[0]); fprintf(stdout,"%lld\n",ybits1[1]); */ for(i = 2, m = 1, l = 1; i < xybits_size; i++) { k = i / m; if (k < 2) { ybits1[i] = ybits1[i - m]; } else { if (k == 4) { ybits1[i] = ybits1[0]; m *= 4; l *= 2; } else ybits1[i] = ybits1[i - 2 * m] + l; } /*fprintf(stdout,"%lld\n",ybits1[i]);*/ } } /* Dump the definitions of main Q3C arrays into a .c file */ void q3c_dump_prm(struct q3c_prm *hprm,char *filename) { FILE *fp = fopen(filename, "w"); int i, x = 1 << Q3C_INTERLEAVED_NBITS; q3c_ipix_t *xbits = hprm->xbits, *ybits = hprm->ybits, *xbits1 = hprm->xbits1, *ybits1 = hprm->ybits1; fprintf(fp, "#include \"common.h\"\n"); fprintf(fp, "\nq3c_ipix_t ____xbits[%d]={", x); fprintf(fp, " "); for(i = 0; i < x; i++) { if (i > 0) { fprintf(fp, ","); } fprintf(fp, "Q3C_CONST("Q3C_IPIX_FMT")", xbits[i]); } fprintf(fp, "};"); fprintf(fp, "\nq3c_ipix_t ____ybits[%d]={",x); fprintf(fp, " "); for(i = 0; i < x; i++) { if (i > 0) { fprintf(fp, ","); } fprintf(fp, "Q3C_CONST("Q3C_IPIX_FMT")", ybits[i]); } fprintf(fp, "};"); fprintf(fp, "\nq3c_ipix_t ____xbits1[%d]={", x); fprintf(fp, " "); for(i = 0; i < x; i++) { if (i > 0) { fprintf(fp, ","); } fprintf(fp, "Q3C_CONST("Q3C_IPIX_FMT")", xbits1[i]); } fprintf(fp, "};"); fprintf(fp, "\nq3c_ipix_t ____ybits1[%d]={",x); fprintf(fp, " "); for(i = 0; i < x; i++) { if (i > 0) { fprintf(fp, ","); } fprintf(fp, "Q3C_CONST("Q3C_IPIX_FMT")", ybits1[i]); } fprintf(fp, "};\n"); fprintf(fp, "struct q3c_prm hprm={" Q3C_IPIX_FMT",____xbits,____ybits,____xbits1,____ybits1};\n", hprm->nside); fclose(fp); } /* That function computes the coefficients of the 2nd order poly * describint the ellipse * (axx*x^2+ayy*y^2+2*axy*(x*y)+ax*x+ay*y+a=0) * produced on the cube face by the cone search */ void q3c_get_poly_coefs(char face_num, q3c_coord_t ra0, q3c_coord_t dec0, q3c_coord_t rad, q3c_coord_t *axx, q3c_coord_t *ayy, q3c_coord_t *axy, q3c_coord_t *ax, q3c_coord_t *ay, q3c_coord_t *a) { q3c_coord_t ra1, dec1, sr, cr, cd, sd, crad, p = 1; dec1 = dec0 * Q3C_DEGRA; sd = q3c_sin(dec1); cd = q3c_cos(dec1); crad = q3c_cos(Q3C_DEGRA * rad); if ((face_num >= 1) && (face_num <= 4)) { ra1 = (ra0 - (face_num - 1 ) * 90) * Q3C_DEGRA; sr = q3c_sin(ra1); cr = q3c_cos(ra1); *axx = (crad * crad - sr * sr * cd * cd); *ayy = (crad * crad - sd * sd); *axy = (-2 * sr * sd * cd); *ax = (-2 * sr * cr * cd * cd); *ay = (-2 * cr * sd * cd); *a = crad * crad - cr * cr * cd * cd; } else { if(face_num > 0) p = -1; /* p=1 for North Polar cap & p=-1 for South Polar cap */ ra1 = ra0 * Q3C_DEGRA; sr = q3c_sin(ra1); cr = q3c_cos(ra1); *axx = (crad * crad - sr * sr * cd * cd); *ayy = (crad * crad - cr * cr * cd * cd); *axy = (2 * p * sr * cr * cd * cd); *ax = -(2 * p * sr * sd * cd); *ay = (2 * cr * sd * cd); *a = crad * crad - sd * sd; } /* By this step I convert the coefficient of the polynom to the * coordinate system on the cube face where x[-0.5,0.5] y[-0.5,0.5] * I should incorporate this formulae directly with the formulae * from the top */ (*axx) *= 4; (*ayy) *= 4; (*axy) *= 4; (*ax) *= 2; (*ay) *= 2; } /* That function determines the minimal, maximal x and y of the ellipse with * the given coefficients (axx,ayy,axy...). All the computations are done on * the cube face. */ void q3c_get_xy_minmax(q3c_coord_t axx, q3c_coord_t ayy, q3c_coord_t axy, q3c_coord_t ax, q3c_coord_t ay, q3c_coord_t a, q3c_coord_t *xmin, q3c_coord_t *xmax, q3c_coord_t *ymin, q3c_coord_t *ymax, char *full_flag) { q3c_coord_t tmp0, tmp1, tmp2; tmp0 = axy * ax - 2 * axx * ay; tmp1 = 2 * q3c_sqrt(axx * (axx * ay * ay - axy * ax * ay - 4 * axx * ayy * a + axy * axy * a + ax * ax * ayy)); tmp2 = 4 * axx * ayy - axy * axy; /* * If the discriminant of the curve is smaller than a given threshold, it * means that the curve is (or is close to) a parabola or a hyperbola * In that case I include the whole face, because * I don't know how to compute the intersection of the cube * and the hyperbola */ if (tmp2< Q3C_MINDISCR) { *xmax = 2*Q3C_HALF; *ymax = 2*Q3C_HALF; *xmin = -2*Q3C_HALF; *ymin = -2*Q3C_HALF; *full_flag = 1; return; } *ymin = (tmp0 - tmp1) / tmp2; *ymax = (tmp0 + tmp1) / tmp2; tmp0 = axy * ay - 2 * ayy * ax; tmp1 = 2 * q3c_sqrt(ayy * (ayy * ax * ax - axy * ax * ay - 4 * axx * ayy * a + axy * axy * a + ay * ay * axx)); *xmin = (tmp0 - tmp1) / tmp2; *xmax = (tmp0 + tmp1) / tmp2; //fprintf(stdout,"xmin=%.10Lf xmax=%.10Lf ymin=%.10Lf ymax=%.10Lf\n", *xmin, *xmax, *ymin, *ymax); } /* Check if the region is too big for Q3C to handle properly * The limit here is related to the number of faces the region is * allowed to intersect. Q3C can't handle more than 3 faces. * So for such big regions, we just switch to scan of the whole table */ char q3c_too_big_check(q3c_region region, void * region_data) { switch (region) { case Q3C_CIRCLE: { q3c_circle_region circle = *(q3c_circle_region *)region_data; if (circle.rad>Q3C_MAXRAD) { return 1; } else { return 0; } break; } case Q3C_ELLIPSE: { q3c_ellipse_region ellipse = *(q3c_ellipse_region *)region_data; if (ellipse.rad>Q3C_MAXRAD) { return 1; } else { return 0; } break; } case Q3C_POLYGON: { } } /* should not happen */ return 0; /* DUMMY */ } /* Get the xmin,ymin,xmax,ymax box on a given face for a given region */ void q3c_fast_get_xy_minmax(char face_num, q3c_region region, void *region_data, q3c_coord_t *xmin, q3c_coord_t *xmax, q3c_coord_t *ymin, q3c_coord_t *ymax) { switch (region) { case Q3C_CIRCLE: { q3c_circle_region circle = *(q3c_circle_region *)region_data; q3c_fast_get_circle_xy_minmax(face_num, circle.ra, circle.dec, circle.rad, xmin, xmax, ymin, ymax); break; } case Q3C_ELLIPSE: { q3c_ellipse_region ellipse = *(q3c_ellipse_region *)region_data; q3c_fast_get_ellipse_xy_minmax(face_num, ellipse.ra, ellipse.dec, ellipse.rad, ellipse.e, ellipse.PA, xmin, xmax, ymin, ymax); break; } case Q3C_POLYGON: { } } } /* That function gets the min, max x and y of the ellipse with the given * coefficients (axx,ayy,axy...). All the computations are done on the cube face. * That function take as arguments only the ra, dec of the center of cone search * and radius. */ void q3c_fast_get_circle_xy_minmax(char face_num, q3c_coord_t ra0, q3c_coord_t dec0, q3c_coord_t rad, q3c_coord_t *xmin, q3c_coord_t *xmax, q3c_coord_t *ymin, q3c_coord_t *ymax) { q3c_coord_t tmp0, tmp1, tmp2, ra1, dec1, sr, cr ,sd, cd, srad, crad, crad2, cd2, scd; dec1 = dec0 * Q3C_DEGRA; q3c_sincos(dec1, sd, cd); cd2 = cd * cd; q3c_sincos(Q3C_DEGRA * rad, srad, crad); crad2 = crad * crad; /* tmp1, tmp2 variables in this function will * be related to the coefficients of quadratic equations * for xmin,xmax,ymin,ymax */ if ((face_num >= 1) && (face_num <= 4)) { ra1 = (ra0 - (face_num - 1 ) * 90) * Q3C_DEGRA; q3c_sincos(ra1, sr, cr); tmp2 = 2 * ( cd2 * cr * cr - srad * srad ); /* tmp2 is the discriminant of the curve on the face * zero or negative values mean parabolas or hyperbolas * in that case we better take whole face */ if (tmp2 < Q3C_MINDISCR) { *xmin = -Q3C_HALF; *ymin = -Q3C_HALF; *xmax = Q3C_HALF; *ymax = Q3C_HALF; return; } tmp0 = sr * cr *cd2; tmp1 = srad * q3c_sqrt(cd2 - srad * srad); *xmin = (tmp0 - tmp1) / tmp2; *xmax = (tmp0 + tmp1) / tmp2; tmp0 = cr * cd * sd; tmp1 = srad * q3c_sqrt(crad2 - cd2 * sr * sr); *ymin = (tmp0 - tmp1) / tmp2; *ymax = (tmp0 + tmp1) / tmp2; } else { ra1 = ra0 * Q3C_DEGRA; q3c_sincos(ra1, sr, cr); scd = sd * cd; tmp0 = scd * sr; tmp1 = srad * q3c_sqrt(crad2 - cr * cr * cd2); tmp2 = 2 * (crad2 - cd2); if (tmp2 < Q3C_MINDISCR) { /* tmp2 is the discriminant of the curve on the face * zero or negative values mean parabolas or hyperbolas * in that case we better take whole face */ *xmin = -Q3C_HALF; *ymin = -Q3C_HALF; *xmax = Q3C_HALF; *ymax = Q3C_HALF; return; } if (face_num == 5) tmp0 = -tmp0; *xmin = (tmp0 - tmp1) / tmp2; *xmax = (tmp0 + tmp1) / tmp2; tmp0 = - scd * cr; tmp1 = srad * q3c_sqrt(crad2 - sr * sr * cd2); *ymin = (tmp0 - tmp1) / tmp2; *ymax = (tmp0 + tmp1) / tmp2; } } /* Get the xmin,ymin,xmax,ymax on equatorial cube faces for * elliptic queries */ void q3c_fast_get_equatorial_ellipse_xy_minmax(q3c_coord_t alpha, q3c_coord_t delta, q3c_coord_t d, q3c_coord_t e, q3c_coord_t PA, q3c_coord_t *ymin, q3c_coord_t *ymax, q3c_coord_t *zmin, q3c_coord_t *zmax) { /* Thank you, Maple! */ q3c_coord_t t1 = q3c_sin(alpha); q3c_coord_t t2 = q3c_cos(alpha); q3c_coord_t t21 = q3c_sin(delta); q3c_coord_t t4 = q3c_cos(delta); q3c_coord_t t24 = q3c_sin(PA); q3c_coord_t t13 = q3c_cos(PA); q3c_coord_t t51 = q3c_sin(d); q3c_coord_t t8 = q3c_cos(d); q3c_coord_t t3 = t1*t2; q3c_coord_t t5 = t4*t4; q3c_coord_t t7 = 2.0*t3*t5; q3c_coord_t t9 = t8*t8; q3c_coord_t t12 = t1*t5; q3c_coord_t t14 = t13*t13; q3c_coord_t t15 = t2*t14; q3c_coord_t t22 = t21*t13; q3c_coord_t t23 = t2*t2; q3c_coord_t t34 = t5*t9; q3c_coord_t t39 = t24*t9; q3c_coord_t t47 = -t7-2.0*t3*t9+2.0*t12*t15-2.0*t12*t15*t9+4.0*t22*t23*t24-4.0*t15*t1+4.0*t1*t9*t15+2.0*t3+2.0*t3*t34-2.0*t22*t24+2.0*t22*t39-4.0*t21*t9*t13*t23*t24; q3c_coord_t t48 = e*e; q3c_coord_t t52 = t51*t51; q3c_coord_t t54 = t5*t14*t9; q3c_coord_t t61 = t23*t5; q3c_coord_t t62 = 2.0*t61; q3c_coord_t t63 = t23*t14; q3c_coord_t t67 = t23*t9; q3c_coord_t t69 = t61*t9; q3c_coord_t t71 = t14*t9; q3c_coord_t t73 = t1*t21; q3c_coord_t t77 = t73*t13*t2*t24*t9; q3c_coord_t t79 = t71*t23; q3c_coord_t t85 = t63*t34; q3c_coord_t t89 = -t62-4.0*t63+2.0*t63*t5-2.0*t67+2.0*t69-2.0*t71+4.0*t77+4.0*t79-4.0*t73*t13*t2*t24-2.0*t85+2.0*t14+2.0*t23; q3c_coord_t t92 = t89*t48-2.0+2.0*t9+t62; q3c_coord_t t93 = t1*t13; q3c_coord_t t96 = t21*t2; q3c_coord_t tmpy0 = t47*t48+t7; q3c_coord_t tmpy1 = -4.0*t52*(t9-1.0+t54+t5-t34)*t48+4.0*t52*(-1.0+t9+t5); q3c_coord_t tmpy2 = t92; q3c_coord_t tmpz0 = -2.0*(-t93*t24+t93*t39+t96+t96*t71-t96*t14-t96*t9)*t4*t48+2.0*t96*t4; q3c_coord_t tmpz1 = -4.0*t52*(t61-2.0*t79-t54+t67-2.0*t77-t5-t69+t71+t85+t34)*t48+4.0*t52*(t9+t61-t5); q3c_coord_t tmpz2 = t92; tmpy1 = q3c_sqrt(tmpy1); tmpy2 = (2 * tmpy2); tmpz1 = q3c_sqrt(tmpz1); tmpz2 = (2 * tmpz2); if (tmpy2 < Q3C_MINDISCR) { *ymin = -Q3C_HALF; *ymax = -Q3C_HALF; *zmin = Q3C_HALF; *zmax = Q3C_HALF; return; } *ymin = (tmpy0 - tmpy1) / tmpy2; *ymax = (tmpy0 + tmpy1) / tmpy2; *zmin = (tmpz0 - tmpz1) / tmpz2; *zmax = (tmpz0 + tmpz1) / tmpz2; } /* Get the xmin,ymin,xmax,ymax on polar cube faces for * elliptic queries * !!IMPORTANT!! for south pole the ycoordinates (1st) should be inverted */ void q3c_fast_get_polar_ellipse_xy_minmax(q3c_coord_t alpha, q3c_coord_t delta, q3c_coord_t d, q3c_coord_t e, q3c_coord_t PA, q3c_coord_t *ymin, q3c_coord_t *ymax, q3c_coord_t *zmin, q3c_coord_t *zmax) { /* Thank you, Maple! */ q3c_coord_t t1 = q3c_sin(alpha); q3c_coord_t t14 = q3c_cos(alpha); q3c_coord_t t2 = q3c_sin(delta); q3c_coord_t t19 = q3c_cos(delta); q3c_coord_t t12 = q3c_sin(PA); q3c_coord_t t7 = q3c_cos(PA); q3c_coord_t t25 = q3c_sin(d); q3c_coord_t t4 = q3c_cos(d); q3c_coord_t t3 = t1*t2; q3c_coord_t t5 = t4*t4; q3c_coord_t t6 = t3*t5; q3c_coord_t t8 = t7*t7; q3c_coord_t t10 = t8*t5; q3c_coord_t t13 = t7*t12; q3c_coord_t t15 = t13*t14; q3c_coord_t t21 = e*e; q3c_coord_t t26 = t25*t25; q3c_coord_t t28 = 2.0*t6*t15; q3c_coord_t t29 = t19*t19; q3c_coord_t t30 = t14*t14; q3c_coord_t t31 = t29*t30; q3c_coord_t t32 = t31*t5; q3c_coord_t t34 = 2.0*t10*t30; q3c_coord_t t35 = t30*t5; q3c_coord_t t36 = t31*t10; q3c_coord_t t46 = t29*(1.0-t5-t8+t10)*t21+t5-t29; q3c_coord_t t47 = t7*t1; q3c_coord_t t51 = t14*t2; q3c_coord_t tmpy0 = 2.0*(t6+t3*t8-t3*t10-t15+t13*t14*t5-t3)*t19*t21+2.0*t3*t19; q3c_coord_t tmpy1 = 4.0*t26*(-t5-t28-t32-t34+t35+t36+t31+t10)*t21-4.0*t26*(-t5+t31); q3c_coord_t tmpy2 = 2.0*t46; q3c_coord_t tmpz0 = 2.0*(-t47*t12+t47*t12*t5+t51*t10-t51*t5-t51*t8+t51)*t19*t21-2.0*t51*t19; q3c_coord_t tmpz1 = -4.0*t26*(-t28-t29*t8*t5-t29-t32-t34+t35+t36+t31+t29*t5+t10)*t21+4.0*t26*(t5-t29+t31); q3c_coord_t tmpz2 = 2.0*t46; tmpy1 = q3c_sqrt(tmpy1); tmpy2 = (2 * tmpy2); tmpz1 = q3c_sqrt(tmpz1); tmpz2 = (2 * tmpz2); if (tmpy2 < Q3C_MINDISCR) { *ymin = -Q3C_HALF; *ymax = -Q3C_HALF; *zmin = Q3C_HALF; *zmax = Q3C_HALF; return; } *ymin = (tmpy0 - tmpy1) / tmpy2; *ymax = (tmpy0 + tmpy1) / tmpy2; *zmin = (tmpz0 - tmpz1) / tmpz2; *zmax = (tmpz0 + tmpz1) / tmpz2; } /* get the xmin,xmax,ymin,ymax and polynomial coefficients for the ellipse query * and equatorial cube faces */ void q3c_fast_get_equatorial_ellipse_xy_minmax_and_poly_coefs(q3c_coord_t alpha, q3c_coord_t delta, q3c_coord_t d, q3c_coord_t e, q3c_coord_t PA, q3c_coord_t *ymin, q3c_coord_t *ymax, q3c_coord_t *zmin, q3c_coord_t *zmax, q3c_coord_t *ayy, q3c_coord_t *azz, q3c_coord_t *ayz, q3c_coord_t *ay, q3c_coord_t *az, q3c_coord_t *a) { /* Thank you, Maple! */ q3c_coord_t t1 = q3c_sin(delta); q3c_coord_t t2 = q3c_cos(d); q3c_coord_t t3 = t2*t2; q3c_coord_t t4 = t1*t3; q3c_coord_t t5 = q3c_cos(PA); q3c_coord_t t6 = q3c_cos(alpha); q3c_coord_t t7 = t6*t6; q3c_coord_t t9 = q3c_sin(PA); q3c_coord_t t13 = t5*t5; q3c_coord_t t14 = t6*t13; q3c_coord_t t15 = q3c_sin(alpha); q3c_coord_t t18 = t15*t3; q3c_coord_t t19 = t18*t14; q3c_coord_t t21 = q3c_cos(delta); q3c_coord_t t22 = t21*t21; q3c_coord_t t23 = t15*t22; q3c_coord_t t29 = t15*t6; q3c_coord_t t31 = t22*t3; q3c_coord_t t34 = t1*t5; q3c_coord_t t37 = t9*t3; q3c_coord_t t43 = 2.0*t29*t22; q3c_coord_t t44 = t7*t9; q3c_coord_t t47 = -4.0*t4*t5*t7*t9-4.0*t14*t15+4.0*t19+2.0*t14*t23-2.0*t14*t23*t3+2.0*t29+2.0*t29*t31-2.0*t34*t9+2.0*t34*t37-2.0*t29*t3-t43+4.0*t34*t44; q3c_coord_t t48 = e*e; q3c_coord_t t51 = q3c_sin(d); q3c_coord_t t52 = t51*t51; q3c_coord_t t53 = t22*t13; q3c_coord_t t54 = t53*t3; q3c_coord_t t61 = t15*t1; q3c_coord_t t62 = t61*t3; q3c_coord_t t63 = t5*t6; q3c_coord_t t64 = t63*t9; q3c_coord_t t65 = t62*t64; q3c_coord_t t67 = t13*t3; q3c_coord_t t70 = t7*t3; q3c_coord_t t71 = t53*t70; q3c_coord_t t74 = t22*t7; q3c_coord_t t75 = 2.0*t74; q3c_coord_t t78 = t74*t3; q3c_coord_t t80 = t67*t7; q3c_coord_t t87 = 4.0*t65-2.0*t67+2.0*t13-2.0*t71-2.0*t70-t75-4.0*t7*t13+2.0*t78+4.0*t80+2.0*t74*t13+2.0*t7-4.0*t61*t64; q3c_coord_t t90 = t87*t48-2.0+t75+2.0*t3; q3c_coord_t t91 = t1*t6; q3c_coord_t t94 = t15*t5; q3c_coord_t t101 = t91*t21; q3c_coord_t t111 = t9*t9; q3c_coord_t t112 = t3*t111; q3c_coord_t t113 = t15*t15; q3c_coord_t t117 = t52*t48; q3c_coord_t t124 = 2.0*t62*t63*t9*t48; q3c_coord_t t125 = t1*t1; q3c_coord_t t126 = t7*t125; q3c_coord_t t132 = t4*t5; q3c_coord_t t138 = t6*t3; q3c_coord_t t143 = t22*t52; q3c_coord_t t145 = t111*t6; q3c_coord_t t159 = t21*t9*t3; q3c_coord_t t160 = t5*t48; q3c_coord_t t163 = t67*t48; q3c_coord_t t165 = t52*t21; q3c_coord_t t167 = t165*t48; q3c_coord_t t170 = t21*t13*t3; q3c_coord_t t173 = t21*t111*t3; q3c_coord_t t186 = t113*t22; q3c_coord_t t190 = t113*t125; q3c_coord_t t197 = t125*t52; q3c_coord_t tmpy0 = t47*t48+t43; q3c_coord_t tmpy1 = -4.0*t52*(-1.0+t54+t3+t22-t31)*t48+4.0*t52*(-1.0+t22+t3); q3c_coord_t tmpy2 = t90; q3c_coord_t tmpz0 = -2.0*(-t91*t13-t91*t3+t94*t37+t91+t91*t67-t94*t9)*t21*t48+2.0*t101; q3c_coord_t tmpz1 = 4.0*t52*(-t67-t74-t70+t54+2.0*t80+t78-t71+t22-t31+2.0*t65)*t48+4.0*t52*(t3+t74-t22); q3c_coord_t tmpz2 = t90; *a = -t112*t113-t67*t113+t74*t52-t74*t117+t112*t113*t48+t124+t67*t126*t48-t67*t126-t112*t126; *ay = -2.0*t132*t44*t48+2.0*t132*t113*t9*t48+2.0*t138*t13*t15*t125*t48+2.0*t29*t143+2.0*t18*t145+2.0*t19-2.0*t18*t145*t48-2.0*t138*t13*t15*t125-2.0*t29*t143*t48-2.0*t138*t111*t15*t125; *az = -2.0*t159*t160*t15-2.0*t101*t163+2.0*t91*t165-2.0*t91*t167+2.0*t91*t170+2.0*t91*t173; *ayz = 2.0*t159*t160*t6-2.0*t61*t21*t163+2.0*t61*t165+2.0*t61*t173-2.0*t61*t167+2.0*t61*t170; *ayy = -t112*t7-t80+t186*t52+t112*t7*t48-t67*t190-t112*t190-t186*t117+t67*t190*t48-t124; *azz = t197+t53*t3*t48-t54-t197*t48-t22*t111*t3; tmpy1 = q3c_sqrt(tmpy1); tmpy2 = (2 * tmpy2); tmpz1 = q3c_sqrt(tmpz1); tmpz2 = (2 * tmpz2); *ymin = (tmpy0 - tmpy1) / tmpy2; *ymax = (tmpy0 + tmpy1) / tmpy2; *zmin = (tmpz0 - tmpz1) / tmpz2; *zmax = (tmpz0 + tmpz1) / tmpz2; /* reduce the values to the cube with edge length of 1 (instead of 2) */ *ayy*=-4; *azz*=-4; *ayz*=-4; *ay*=-2; *az*=-2; *a*=-1; } /* get the xmin,xmax,ymin,ymax and polynomial coefficients for the ellipse query * and polar cube faces */ void q3c_fast_get_polar_ellipse_xy_minmax_and_poly_coefs(q3c_coord_t alpha, q3c_coord_t delta, q3c_coord_t d, q3c_coord_t e, q3c_coord_t PA, q3c_coord_t *ymin, q3c_coord_t *ymax, q3c_coord_t *zmin, q3c_coord_t *zmax, q3c_coord_t *ayy, q3c_coord_t *azz, q3c_coord_t *ayz, q3c_coord_t *ay, q3c_coord_t *az, q3c_coord_t *a) { /* Thank you, Maple! */ q3c_coord_t t1 = q3c_sin(alpha); q3c_coord_t t2 = q3c_sin(delta); q3c_coord_t t3 = t1*t2; q3c_coord_t t4 = q3c_cos(d); q3c_coord_t t5 = t4*t4; q3c_coord_t t6 = t3*t5; q3c_coord_t t7 = q3c_cos(PA); q3c_coord_t t8 = t7*t7; q3c_coord_t t9 = t8*t5; q3c_coord_t t11 = q3c_sin(PA); q3c_coord_t t12 = t7*t11; q3c_coord_t t13 = q3c_cos(alpha); q3c_coord_t t14 = t12*t13; q3c_coord_t t15 = t13*t5; q3c_coord_t t19 = q3c_cos(delta); q3c_coord_t t21 = e*e; q3c_coord_t t23 = t3*t19; q3c_coord_t t25 = q3c_sin(d); q3c_coord_t t26 = t25*t25; q3c_coord_t t28 = 2.0*t6*t14; q3c_coord_t t29 = t19*t19; q3c_coord_t t30 = t13*t13; q3c_coord_t t31 = t29*t30; q3c_coord_t t32 = t31*t5; q3c_coord_t t33 = t29*t8; q3c_coord_t t34 = t30*t5; q3c_coord_t t35 = t33*t34; q3c_coord_t t36 = t9*t30; q3c_coord_t t37 = 2.0*t36; q3c_coord_t t47 = t29*(1.0-t5-t8+t9)*t21-t29+t5; q3c_coord_t t48 = t7*t1; q3c_coord_t t52 = t13*t2; q3c_coord_t t59 = t52*t19; q3c_coord_t t61 = t33*t5; q3c_coord_t t71 = t11*t11; q3c_coord_t t74 = t2*t2; q3c_coord_t t75 = t74*t26; q3c_coord_t t79 = t19*t71*t5; q3c_coord_t t82 = t19*t8*t5; q3c_coord_t t84 = t26*t19; q3c_coord_t t85 = t84*t21; q3c_coord_t t87 = t9*t21; q3c_coord_t t90 = t19*t11*t5; q3c_coord_t t91 = t7*t21; q3c_coord_t t112 = t2*t5*t7; q3c_coord_t t113 = t1*t1; q3c_coord_t t120 = t13*t1; q3c_coord_t t121 = t29*t26; q3c_coord_t t123 = t1*t5; q3c_coord_t t126 = t71*t13; q3c_coord_t t136 = t113*t29; q3c_coord_t t138 = t5*t71; q3c_coord_t t144 = 2.0*t6*t7*t13*t11*t21; q3c_coord_t t147 = t113*t74; q3c_coord_t t150 = t26*t21; q3c_coord_t t157 = t30*t74; q3c_coord_t tmpy0 = 2.0*(-t3+t6-t3*t9-t14+t12*t15+t3*t8)*t19*t21+2.0*t23; q3c_coord_t tmpy1 = 4.0*t26*(-t5-t28+t31-t32+t35-t37+t34+t9)*t21-4.0*t26*(t31-t5); q3c_coord_t tmpy2 = 2.0*t47; q3c_coord_t tmpz0 = 2.0*(-t48*t11+t48*t11*t5+t52-t52*t5+t52*t9-t52*t8)*t19*t21-2.0*t59; q3c_coord_t tmpz1 = -4.0*t26*(-t29-t61-t28+t31-t32+t35-t37+t34+t29*t5+t9)*t21+4.0*t26*(-t29+t31+t5); q3c_coord_t tmpz2 = 2.0*t47; *a = t33*t5*t21-t29*t71*t5-t61-t75*t21+t75; *ay = 2.0*t3*t79+2.0*t3*t82-2.0*t3*t85-2.0*t23*t87+2.0*t90*t91*t13+2.0*t3*t84; *az = -2.0*t52*t84+2.0*t52*t85-2.0*t52*t82-2.0*t52*t79+2.0*t90*t91*t1+2.0*t59*t87; *ayz = 2.0*t15*t8*t1*t74-2.0*t15*t8*t1*t74*t21-2.0*t112*t113*t11*t21+2.0*t112*t30*t11*t21-2.0*t120*t121-2.0*t123*t8*t13-2.0*t123*t126+2.0*t15*t71*t1*t74+2.0*t120*t121*t21+2.0*t123*t126*t21; *ayy = -t36+t136*t26-t138*t30-t144+t138*t30*t21-t9*t147-t138*t147-t136*t150+t9*t147*t21; *azz = t138*t113*t21-t9*t157-t138*t157-t31*t150+t9*t157*t21+t144-t138*t113-t9*t113+t31*t26; tmpy1 = q3c_sqrt(tmpy1); tmpy2 = (2 * tmpy2); tmpz1 = q3c_sqrt(tmpz1); tmpz2 = (2 * tmpz2); *ymin = (tmpy0 - tmpy1) / tmpy2; *ymax = (tmpy0 + tmpy1) / tmpy2; *zmin = (tmpz0 - tmpz1) / tmpz2; *zmax = (tmpz0 + tmpz1) / tmpz2; /* reduce the values to the cube with edge length of 1 (instead of 2) */ *ayy*=-4; *azz*=-4; *ayz*=-4; *ay*=-2; *az*=-2; *a*=-1; } /* Get ellipse x,y min,max and poly coeffs for a given ellipse query */ void q3c_fast_get_ellipse_xy_minmax_and_poly_coefs(char face_num, q3c_coord_t ra0, q3c_coord_t dec0, q3c_coord_t d0, q3c_coord_t e, q3c_coord_t PA0, q3c_coord_t *ymin, q3c_coord_t *ymax, q3c_coord_t *zmin, q3c_coord_t *zmax, q3c_coord_t *ayy, q3c_coord_t *azz, q3c_coord_t *ayz, q3c_coord_t *ay, q3c_coord_t *az, q3c_coord_t *a) { q3c_coord_t ra1, dec1 = dec0 * Q3C_DEGRA, d1 = d0 * Q3C_DEGRA, PA1 = PA0 * Q3C_DEGRA, tmpx; if ((face_num > 0) && (face_num < 5)) { ra1 = (ra0 - (face_num - 1) * 90) * Q3C_DEGRA; q3c_fast_get_equatorial_ellipse_xy_minmax_and_poly_coefs( ra1, dec1, d1, e, PA1, ymin, ymax, zmin, zmax, ayy, azz, ayz, ay, az, a); } else { ra1 = ra0 * Q3C_DEGRA; q3c_fast_get_polar_ellipse_xy_minmax_and_poly_coefs( ra1, dec1, d1, e, PA1, ymin, ymax, zmin, zmax, ayy, azz, ayz, ay, az, a); if (face_num == 5) { tmpx = *ymin; *ymin = -(*ymax); *ymax = -tmpx; *ay=-*ay; *ayz=-*ayz; } } } void q3c_fast_get_ellipse_xy_minmax(char face_num, q3c_coord_t ra0, q3c_coord_t dec0, q3c_coord_t rad0, q3c_coord_t e, q3c_coord_t PA0, q3c_coord_t *xmin, q3c_coord_t *xmax, q3c_coord_t *ymin, q3c_coord_t *ymax) { q3c_coord_t ra1, dec1 = dec0 * Q3C_DEGRA, rad1 = rad0 * Q3C_DEGRA, PA1 = PA0 * Q3C_DEGRA, tmpx; if ((face_num > 0) && (face_num < 5)) { ra1 = (ra0 - (face_num - 1) * 90) * Q3C_DEGRA; q3c_fast_get_equatorial_ellipse_xy_minmax(ra1, dec1, rad1, e, PA1, xmin, xmax, ymin, ymax); } else { ra1 = ra0 * Q3C_DEGRA; q3c_fast_get_polar_ellipse_xy_minmax(ra1, dec1, rad1, e, PA1, xmin, xmax, ymin, ymax); if (face_num == 5) { /* We have to invert one axis in the case of south pole face */ tmpx = *xmin; *xmin = - (*xmax); *xmax = -tmpx; } } } /* Function checking whether the square with center xc_cur, yc_cur and the * size cur_size on the cube face lie inside, or intersects etc. with the ellipse * specified by the coefficients (axx, axy, ayy, ax, ay, a) */ static char q3c_circle_cover_check(q3c_coord_t xc_cur, q3c_coord_t yc_cur, q3c_coord_t cur_size, q3c_coord_t xmin, q3c_coord_t xmax, q3c_coord_t ymin, q3c_coord_t ymax, q3c_coord_t axx, q3c_coord_t axy, q3c_coord_t ayy, q3c_coord_t ax, q3c_coord_t ay, q3c_coord_t a) { q3c_coord_t xl_cur, xr_cur, yb_cur, yt_cur; char status = 0, inside; /* Checking the intersection of ellipse and box * The box parameters are set by variables xc_cur, yc_cur and cur_size */ xl_cur = xc_cur - cur_size / 2; /* left */ xr_cur = xc_cur + cur_size / 2; /* right */ yb_cur = yc_cur - cur_size / 2; /* bottom */ yt_cur = yc_cur + cur_size / 2; /* top */ /* Undef labels -- the labels when the current computed values dont allow * to make the final decision about the intersection */ #define EVAL_POLY(x,y) ( x * (axx * x + axy * y + ax) + y * (ayy * y + ay) + a ) /* the idea of the code is following: * we go through the list of vertices till we encounter the one * which is inside the ellipse * If none of the vertices is inside the ellipse we double check the * edge crossings * If all the vertices are inside we return "covered" */ /* Bottom left vertex */ inside = EVAL_POLY(xl_cur, yb_cur) < 0; status += inside; /* Bottom right vertex */ inside = EVAL_POLY(xr_cur, yb_cur) < 0 ; /* we use XOR to check if the current vertex has different status * than the previous ones */ if (inside ^ (status > 0)) { return Q3C_PARTIAL; } status += inside; /* Top right vertex */ inside = EVAL_POLY(xr_cur, yt_cur) < 0; if (inside ^ (status > 0)) { return Q3C_PARTIAL; } status += inside; /* Top left vertex */ inside = EVAL_POLY(xl_cur, yt_cur) < 0; if (inside ^ (status > 0)) { return Q3C_PARTIAL; } status += inside; if (status == 4) { /* All the vertices are inside so the square must be covered by * the ellipse */ return Q3C_COVER; } else { /* All the vertices are outside the ellipse * Now we test if the ellipse crosses the edges of the square */ if ( (Q3C_INTERSECT(xmin, xmax, xl_cur, xr_cur) && Q3C_INTERSECT(ymin, ymax, yb_cur, yt_cur) )&& ((((2 * axx * xl_cur + axy * yt_cur + ax) * (2 * axx * xr_cur + axy * yt_cur + ax)) < 0) || (((2 * axx * xl_cur + axy * yb_cur + ax) * (2 * axx * xr_cur + axy * yb_cur + ax)) < 0) || (((2 * ayy * yb_cur + axy * xl_cur + ay) * (2 * ayy * yt_cur + axy * xl_cur + ay)) < 0) || (((2 * ayy * yb_cur + axy * xr_cur + ay) * (2 * ayy * yt_cur + axy * xr_cur + ay)) < 0) )) { return Q3C_PARTIAL; } else { return Q3C_DISJUNCT; } } #undef POLY_EVAL } /* Try to describe the box on the cube face specified by (xmin,xmax,ymin,ymax) * as a set of quadtree squares * I put them in the stack * n0 is the starting resolution */ int q3c_setup_square_stack(struct q3c_square *stack, q3c_coord_t xmin, q3c_coord_t ymin, q3c_coord_t xmax, q3c_coord_t ymax, int n0) { /* Here we set up the stack with initial squares */ int work_nstack = 0; q3c_ipix_t ixmin = (Q3C_HALF + xmin) * n0; /* Here I use the C truncation of floats */ q3c_ipix_t ixmax = (Q3C_HALF + xmax) * n0; /* to integers */ q3c_ipix_t iymin = (Q3C_HALF + ymin) * n0; q3c_ipix_t iymax = (Q3C_HALF + ymax) * n0; struct q3c_square *cur_square = stack; ixmax = (ixmax == n0 ? (n0 - 1) : ixmax); iymax = (iymax == n0 ? (n0 - 1) : iymax); if (ixmin == ixmax) { if (iymin == iymax) { SET_SQUARE(cur_square, ixmin, iymin, n0); work_nstack = 1; } else { SET_SQUARE(cur_square, ixmin, iymin, n0); cur_square++; SET_SQUARE(cur_square, ixmin, iymax, n0); work_nstack = 2; } } else { if (iymin == iymax) { SET_SQUARE(cur_square, ixmin, iymin, n0); cur_square++; SET_SQUARE(cur_square, ixmax, iymin, n0); work_nstack = 2; } else { SET_SQUARE(cur_square, ixmin, iymin, n0); cur_square++; SET_SQUARE(cur_square, ixmin, iymax, n0); cur_square++; SET_SQUARE(cur_square, ixmax, iymin, n0); cur_square++; SET_SQUARE(cur_square, ixmax, iymax, n0); work_nstack = 4; } } return work_nstack; } /* Process the stack of quad-tree squares and depending on the overlap status * I either keep them, expand them into smaller squares or throw them out */ void q3c_stack_expand(struct q3c_square* work_stack, int *work_nstack, struct q3c_square* out_stack, int *out_nstack, int cur_depth, int res_depth) { /* Now we select the fully covered set of squares from stack and put them * into out_stack, the partly covered squares are expanded to corresponding * set of 4 squares each. * explanation of the following scheme * |xxxxxxxxxxxxx xxxxxxxxxx| * ^ * /---/ tmp_stack2 * tmp_stack1 */ struct q3c_square *cur_square; int tmp_stack1, tmp_stack2; q3c_ipix_t xtmp,ytmp,ntmp; int j,k; for(j = 0, tmp_stack1 = 0, tmp_stack2 = *work_nstack; j < *work_nstack; j++) { cur_square = work_stack + j; //fprintf(stdout,"%d %d %d\n",work_nstack,tmp_stack1,tmp_stack2); if (cur_square->status == Q3C_PARTIAL) /* If this square partially intersects with the ellipse * I should split this square further */ { /* If this is the last stage of resolution loop, I will not split * the "partial" boxes */ if (cur_depth == res_depth) continue; tmp_stack1++; xtmp = 2 * cur_square->x0; ytmp = 2 * cur_square->y0; ntmp = 2 * cur_square->nside0; /* First I try to put the childrens of this square in the part of * the stack freed by thrown away squares (which were disjunct from * the ellipse or which were fully covered by the ellipse) */ for(k = 0; (k <= 3) && (tmp_stack1 > 0); k++) { cur_square = work_stack + (j + 1 - tmp_stack1); SET_SQUARE(cur_square, xtmp + (k & 1), ytmp + ((k & 2) >> 1), ntmp); tmp_stack1--; } for (; k <= 3; k++) { cur_square = work_stack + tmp_stack2; SET_SQUARE(cur_square, xtmp + (k & 1), ytmp + ((k & 2) >> 1), ntmp); tmp_stack2++; } } else { if (cur_square->status == Q3C_COVER) /* I put this square in the output list and * free one place in the stack */ { out_stack[(*out_nstack)++] = *cur_square; tmp_stack1++; } else /* This branch can be reached only if status==Q3C_DISJUNCT */ { tmp_stack1++; /* I just drop this square and free the place in the stack */ } } } /* end of updating of the list of squares loop */ if (cur_depth == res_depth) return; /* After updating the list of squares I compute how many of the * I have them now (except for the case of last resolution step) */ #ifdef Q3C_DEBUG fprintf(stdout,"STACK STATE nw_stack: %d nt_stack1: %d nt_stack2: %d\n", *work_nstack, tmp_stack1, tmp_stack2); #endif if (tmp_stack1 == 0) { *work_nstack = tmp_stack2; } else { if ((tmp_stack2-*work_nstack) > tmp_stack1) { memcpy(work_stack + (*work_nstack - tmp_stack1), work_stack + (tmp_stack2 - tmp_stack1), tmp_stack1 * sizeof(struct q3c_square)); *work_nstack = tmp_stack2 - tmp_stack1; } else { memcpy(work_stack + (*work_nstack - tmp_stack1), work_stack + *work_nstack, (tmp_stack2 - *work_nstack) * sizeof(struct q3c_square)); *work_nstack = tmp_stack2 - tmp_stack1; } } } /* This function processes the stack of quad-tree squares and puts the * fully covered and partially covered squares in the appropriate output * lists */ void q3c_output_stack( struct q3c_prm *hprm, struct q3c_square *out_stack, int out_nstack, struct q3c_square *work_stack, int work_nstack, int face_num, int nside, q3c_ipix_t *out_ipix_arr_fulls, int *out_ipix_arr_fulls_pos, q3c_ipix_t *out_ipix_arr_partials, int *out_ipix_arr_partials_pos) { int i, j; q3c_ipix_t xi, yi, ipix_tmp1, ipix_tmp2, ntmp1; q3c_ipix_t *xbits = hprm->xbits, *ybits = hprm->ybits; struct q3c_square *cur_square; /* Run through fully covered squares (we take them from out_stack) */ for(i = 0; i < out_nstack; i++) { cur_square = out_stack + i; ntmp1 = (nside / cur_square->nside0); //fprintf(stdout, "XX%lld\n", ntmp1); xi = cur_square->x0 * ntmp1; yi = cur_square->y0 * ntmp1; ipix_tmp1 = q3c_xiyi2ipix(nside, xbits, ybits, face_num, xi, yi); ipix_tmp2=ipix_tmp1+(ntmp1*ntmp1); /* Now we have in ipix_tmp1 and ipix_tmp2 -- the pixel range for the * query of current square * The query should be ipix_tmp1 =< II < ipix_tmp2 */ out_ipix_arr_fulls[(*out_ipix_arr_fulls_pos)++] = ipix_tmp1; out_ipix_arr_fulls[(*out_ipix_arr_fulls_pos)++] = ipix_tmp2; } /* End of output run through fully covered squares */ if (out_nstack == 0) /* If the list of fully covered squares is empty */ { /* Now we just do nothing -- the stack of ipix'es will be just empty */ } /* Run through partly covered squares (we take them from work_stack where * the cur_square->status == Q3C_PARTIAL) */ for(i = 0, j = -1; i < work_nstack; i++) { cur_square = work_stack + i; if (cur_square->status != Q3C_PARTIAL) continue; else j+=1; ntmp1 = (nside / cur_square->nside0); //fprintf(stdout, "XX%lld\n", ntmp1); xi = cur_square->x0 * ntmp1; yi = cur_square->y0 * ntmp1; ipix_tmp1 = q3c_xiyi2ipix(nside, xbits, ybits, face_num, xi, yi); ipix_tmp2 = ipix_tmp1 + (ntmp1 * ntmp1); /* Now we have in ipix_tmp1 and ipix_tmp2 -- the pixel range for the * query of current square * The query should be ipix_tmp1 =< II < ipix_tmp2 */ out_ipix_arr_partials[(*out_ipix_arr_partials_pos)++] = ipix_tmp1; out_ipix_arr_partials[(*out_ipix_arr_partials_pos)++] = ipix_tmp2; } /* End of output run through partly covered squares */ } static void array_filler(q3c_ipix_t *fulls, int fullpos, q3c_ipix_t *parts, int partpos) { /* We fill the tail of the out_ipix_arr_fulls and out_ipix_arr_partials * stack by * [1,-1] pairs since our SQL code wants the arrays of fixed length */ int i; for(i = fullpos; i < (2*Q3C_NFULLS);) { fulls[i++] = 1; fulls[i++] = -1; } for(i = partpos; i < (2*Q3C_NPARTIALS);) { parts[i++] = 1; parts[i++] = -1; } } /* Main radial query function */ void q3c_radial_query(struct q3c_prm *hprm, q3c_coord_t ra0, q3c_coord_t dec0, q3c_coord_t rad, q3c_ipix_t *out_ipix_arr_fulls, q3c_ipix_t *out_ipix_arr_partials) { q3c_coord_t axx, ayy, axy, ax, ay, a, xmin, xmax, ymin, ymax, xc_cur = 0 , yc_cur = 0, cur_size, xesize, yesize, points[4]; q3c_ipix_t n0, nside = hprm->nside; char face_num, multi_flag = 0, face_count, face_num0, full_flags[3]={0,0,0}; int out_ipix_arr_fulls_pos = 0; int out_ipix_arr_partials_pos = 0; int work_nstack = 0, i, j, out_nstack = 0, res_depth; struct q3c_square work_stack[Q3C_STACK_SIZE], out_stack[Q3C_STACK_SIZE], *cur_square; /* 35 degrees is a magic size above which the cone from the search can * produce a hyperbola or a parabola on a main face and where a lot of * code will start to break. * So if the query is that large, I just query the whole sphere */ /* TODO * I can instead of querying the whole sphere, just query the appropriate * faces */ if (rad>=Q3C_MAXRAD) { q3c_ipix_t maxval = 6*(nside*nside); for(i = out_ipix_arr_fulls_pos; i < (2*Q3C_NFULLS);) { /* don't have any fully covered squares*/ out_ipix_arr_fulls[i++] = 1 ; out_ipix_arr_fulls[i++] = -1; } i = out_ipix_arr_partials_pos; out_ipix_arr_partials[i++] = -1; out_ipix_arr_partials[i++] = maxval; /* everything is partially covered */ for(; i < (2*Q3C_NPARTIALS);) { /* fill with dummy ranges the rest*/ out_ipix_arr_partials[i++] = 1; out_ipix_arr_partials[i++] = -1; } return; } face_num = q3c_get_facenum(ra0, dec0); q3c_get_poly_coefs(face_num, ra0, dec0, rad, &axx, &ayy, &axy, &ax, &ay, &a); /* The coefficients of the polynome are obtained for the projection * on the cube face for the cube with the edge length 1 * axx*x^2+ayy*y^2+axy*x*y+ax*x+ay*y+a */ q3c_get_xy_minmax(axx, ayy, axy, ax, ay, a, &xmin, &xmax, &ymin, &ymax, full_flags); q3c_multi_face_check(&xmin, &ymin, &xmax, &ymax, points, &multi_flag); face_num0 = face_num; for(face_count = 0; face_count <= multi_flag; out_nstack = 0, face_count++) { /* This the beginning of the mega-loop over multiple faces */ if (face_count > 0) /* This "if" works when we pass through the secondary faces */ { face_num = q3c_xy2facenum(2 * points[2 * (face_count - 1)], 2 * points[2 * (face_count - 1) + 1], face_num0); q3c_get_poly_coefs(face_num, ra0, dec0, rad, &axx, &ayy, &axy, &ax, &ay, &a); q3c_get_xy_minmax(axx, ayy, axy, ax, ay, a, &xmin, &xmax, &ymin, &ymax, full_flags+face_count); } xmax = (xmax > Q3C_HALF ? Q3C_HALF : xmax); xmin = (xmin < -Q3C_HALF ? -Q3C_HALF : xmin); ymax = (ymax > Q3C_HALF ? Q3C_HALF : ymax); ymin = (ymin < -Q3C_HALF ? -Q3C_HALF : ymin); #ifdef Q3C_DEBUG fprintf(stdout,"FACE RUN: %d FACE_NUM: %d\n", face_count, face_num); #endif xesize = xmax - xmin; yesize = ymax - ymin; xesize = xesize > yesize ? xesize : yesize; if (xesize * nside < 1) /* If the region is too small */ { xesize = 1 / (q3c_coord_t)nside; } if (full_flags[(int)face_count]) /* Take the whole face */ { q3c_ipix_t tmpmin = face_num*nside*nside; q3c_ipix_t tmpmax = (face_num+1)*nside*nside; #ifdef Q3C_DEBUG fprintf(stdout, "FULL_FLAG\n"); #endif out_ipix_arr_partials[out_ipix_arr_partials_pos++]=tmpmin; out_ipix_arr_partials[out_ipix_arr_partials_pos++]=tmpmax; continue; } n0 = 1 << ((q3c_ipix_t)(-q3c_ceil((q3c_log(xesize) / q3c_log(2))))); /* n0 is now the level of quadtree for which the minimal * element is >~ our ellipse */ cur_size = ((q3c_coord_t)1) / n0; /* fprintf(stdout, "%lld %Lf %Lf %Lf\n", n0,cur_size,xesize,yesize);*/ #ifdef Q3C_DEBUG fprintf(stdout,"XMIN: "Q3C_COORD_FMT" XMAX: "Q3C_COORD_FMT" YMIN: "Q3C_COORD_FMT" YMAX: "Q3C_COORD_FMT"\n", xmin, xmax, ymin, ymax); #endif /* Here we set up the stack with initial squares */ work_nstack = q3c_setup_square_stack(work_stack, xmin, ymin, xmax, ymax, n0); /* For this case the maximal increase of resolution of 2^res_depth * for each axis */ res_depth = nside / n0; /* If the the query is too small we cannot go up to Q3C_MAX_DEPTH since we * are limited by nside depth */ res_depth = Q3C_MAX_DEPTH > res_depth ? res_depth : Q3C_MAX_DEPTH; for(i = 1; i <= res_depth; i++) { #ifdef Q3C_DEBUG fprintf(stdout,"SQUARE RUN %d :\n", i); #endif #ifdef Q3C_DEBUG fprintf(stdout,"1) NUM squares in the stack %d\n",work_nstack); #endif /* This loop perform the testing of all squares in work_stack */ for(j = 0; j < work_nstack; j++) { cur_square = work_stack + j; cur_size=((q3c_coord_t) 1) / (cur_square->nside0); xc_cur = (( (q3c_coord_t) cur_square->x0) + Q3C_HALF) / cur_square->nside0 - Q3C_HALF; yc_cur = (( (q3c_coord_t) cur_square->y0) + Q3C_HALF) / cur_square->nside0 - Q3C_HALF; /* xc_cur and yc_cur -- center of the square (in the coordinate system * of big square [-0.5:0.5]x[-0.5:0.5] */ //fprintf(stdout,"%Lf %Lf %Lf %d\n",xc_cur,yc_cur,cur_size, status); cur_square->status = q3c_circle_cover_check(xc_cur, yc_cur, cur_size, xmin, xmax, ymin, ymax, axx, axy, ayy, ax, ay, a); } #ifdef Q3C_DEBUG fprintf(stdout,"2) NUM squares in the stack %d\n",work_nstack); #endif q3c_stack_expand(work_stack, &work_nstack, out_stack, &out_nstack, i, res_depth); } /* end of resolution loop */ // Old printing of the results #ifdef Q3C_DEBUG for(i = 0; i < out_nstack; i++) { cur_square = out_stack + i; fprintf(stdout, "OUT: %f %f %d %d\n", cur_square->x0+0.5,cur_square->y0+0.5,cur_square->nside0,cur_square->status); } for(i = 0; i < work_nstack; i++) { cur_square = work_stack + i; if (cur_square->status == Q3C_PARTIAL) fprintf(stdout, "OUT1: %f %f %d %d\n", cur_square->x0+0.5,cur_square->y0+0.5,cur_square->nside0,cur_square->status); } #endif q3c_output_stack( hprm, out_stack, out_nstack, work_stack, work_nstack, face_num, nside, out_ipix_arr_fulls, &out_ipix_arr_fulls_pos, out_ipix_arr_partials, &out_ipix_arr_partials_pos); } /* End of the mega-loop over the faces */ array_filler(out_ipix_arr_fulls, out_ipix_arr_fulls_pos, out_ipix_arr_partials, out_ipix_arr_partials_pos); } /* End of q3c_radial_query() */ void q3c_poly_query(struct q3c_prm *hprm, q3c_poly *qp, q3c_ipix_t *out_ipix_arr_fulls, q3c_ipix_t *out_ipix_arr_partials, char *too_large) { q3c_coord_t xmin, xmax, ymin, ymax, xc_cur = 0 , yc_cur = 0, cur_size, xesize, yesize, points[4]; q3c_ipix_t n0, nside = hprm->nside; char face_num, multi_flag = 0, face_count, face_num0, large_flag = 0; int out_ipix_arr_fulls_pos = 0; int out_ipix_arr_partials_pos = 0; int work_nstack = 0, i, j, out_nstack = 0, res_depth; struct q3c_square work_stack[Q3C_STACK_SIZE], out_stack[Q3C_STACK_SIZE], *cur_square; face_num = q3c_get_facenum_poly(qp); q3c_project_poly(qp, face_num, &large_flag); if (large_flag) { *too_large = 1; return; } q3c_prepare_poly(qp); q3c_get_minmax_poly(qp, &xmin, &xmax, &ymin, &ymax); q3c_multi_face_check(&xmin, &ymin, &xmax, &ymax, points, &multi_flag); face_num0 = face_num; for(face_count = 0; face_count <= multi_flag; out_nstack = 0, face_count++) { /* This the beginning of the mega-loop over multiple faces */ if (face_count > 0) /* This "if" works when we pass through the secondary faces */ { face_num = q3c_xy2facenum(2 * points[2 * (face_count - 1)], 2 * points[2 * (face_count - 1) + 1], face_num0); q3c_project_poly(qp, face_num, &large_flag); if (large_flag) { *too_large = 1; return; } q3c_prepare_poly(qp); q3c_get_minmax_poly(qp, &xmin, &xmax, &ymin, &ymax); xmax = (xmax > Q3C_HALF ? Q3C_HALF : xmax); xmin = (xmin < -Q3C_HALF ? -Q3C_HALF : xmin); ymax = (ymax > Q3C_HALF ? Q3C_HALF : ymax); ymin = (ymin < -Q3C_HALF ? -Q3C_HALF : ymin); } #ifdef Q3C_DEBUG fprintf(stdout,"FACE RUN: %d FACE_NUM: %d\n", face_count, face_num); #endif xesize = xmax - xmin; yesize = ymax - ymin; xesize = xesize > yesize ? xesize : yesize; if (xesize * nside < 1) /* If the region is too small */ { xesize=1 / (q3c_coord_t)nside; } n0 = 1 << ((q3c_ipix_t)(-q3c_ceil((q3c_log(xesize) / q3c_log(2))))); /* n0 is now the level of quadtree for which the minimal * element is >~ our ellipse */ cur_size = ((q3c_coord_t)1) / n0; //fprintf(stdout, "%lld %Lf %Lf %Lf\n", n0,cur_size,xesize,yesize); #ifdef Q3C_DEBUG fprintf(stdout,"XMIN: "Q3C_COORD_FMT" XMAX: "Q3C_COORD_FMT" YMIN: "Q3C_COORD_FMT" YMAX: "Q3C_COORD_FMT"\n", xmin, xmax, ymin, ymax); #endif work_nstack = q3c_setup_square_stack(work_stack, xmin, ymin, xmax, ymax, n0); /* For this case the maximal increase of resolution of 2^res_depth * for each axis */ res_depth = nside / n0; /* If the the query is too small we cannot go up to Q3C_MAX_DEPTH since we * are limited by nside depth */ res_depth = Q3C_MAX_DEPTH > res_depth ? res_depth : Q3C_MAX_DEPTH; for(i = 1; i <= res_depth; i++) { #ifdef Q3C_DEBUG fprintf(stdout,"SQUARE RUN %d :\n", i); #endif #ifdef Q3C_DEBUG fprintf(stdout,"1) NUM squares in the stack %d\n",work_nstack); #endif /* This loop perform the testing of all squares in work_stack */ for(j = 0; j < work_nstack; j++) { cur_square = work_stack + j; cur_size=((q3c_coord_t) 1) / (cur_square->nside0); xc_cur = (( (q3c_coord_t) cur_square->x0) + Q3C_HALF) / cur_square->nside0 - Q3C_HALF; yc_cur = (( (q3c_coord_t) cur_square->y0) + Q3C_HALF) / cur_square->nside0 - Q3C_HALF; /* xc_cur and yc_cur -- center of the square (in the coordinate system * of big square [-0.5:0.5]x[-0.5:0.5] */ //fprintf(stdout,"%Lf %Lf %Lf %d\n",xc_cur,yc_cur,cur_size, status); #ifdef Q3C_DEBUG fprintf(stderr,"Trying (%f %f %f)(%f %f %f %f) --- ",xc_cur,yc_cur,cur_size,xc_cur-cur_size/2,xc_cur+cur_size/2,yc_cur-cur_size/2,yc_cur+cur_size/2); #endif cur_square->status = q3c_poly_cover_check(qp, xc_cur, yc_cur, cur_size); #ifdef Q3C_DEBUG fprintf(stderr,"%d\n",cur_square->status); #endif } #ifdef Q3C_DEBUG fprintf(stdout,"2) NUM squares in the stack %d\n",work_nstack); #endif q3c_stack_expand(work_stack, &work_nstack, out_stack, &out_nstack, i, res_depth); } // Old printing of the results #ifdef Q3C_DEBUG for(i = 0; i < out_nstack; i++) { cur_square = out_stack + i; fprintf(stdout, "OUT: %f %f %d %d\n", cur_square->x0+0.5,cur_square->y0+0.5,cur_square->nside0,cur_square->status); } for(i = 0; i < work_nstack; i++) { cur_square = work_stack + i; if (cur_square->status == Q3C_PARTIAL) fprintf(stdout, "OUT1: %f %f %d %d\n", cur_square->x0+0.5,cur_square->y0+0.5,cur_square->nside0,cur_square->status); } #endif q3c_output_stack( hprm, out_stack, out_nstack, work_stack, work_nstack, face_num, nside, out_ipix_arr_fulls, &out_ipix_arr_fulls_pos, out_ipix_arr_partials, &out_ipix_arr_partials_pos); } /* End of the mega-loop over the faces */ array_filler(out_ipix_arr_fulls, out_ipix_arr_fulls_pos, out_ipix_arr_partials, out_ipix_arr_partials_pos); } /* End of radial_query() */ void q3c_ellipse_query(struct q3c_prm *hprm, q3c_coord_t ra0, q3c_coord_t dec0, q3c_coord_t majax, q3c_coord_t ell, q3c_coord_t PA, q3c_ipix_t *out_ipix_arr_fulls, q3c_ipix_t *out_ipix_arr_partials) { q3c_coord_t xmin, xmax, ymin, ymax, xc_cur = 0, yc_cur = 0, cur_size, xesize, yesize, points[4], axx, ayy, axy, ax, ay, a; q3c_ipix_t n0, nside = hprm->nside; char face_num, multi_flag = 0, face_count, face_num0; int out_ipix_arr_fulls_pos = 0; int out_ipix_arr_partials_pos = 0; int work_nstack = 0, i, j, out_nstack = 0, res_depth; struct q3c_square work_stack[Q3C_STACK_SIZE], out_stack[Q3C_STACK_SIZE], *cur_square; /* 35 degrees is a magic size above which the cone from the search can * produce a hyperbola or a parabola on a main face and where a lot of * code will start to break. * So if the query is that large, I just query the whole sphere */ /* TODO * I can instead of querying the whole sphere, just query the appropriate * faces */ if (majax>= Q3C_MAXRAD) { q3c_ipix_t maxval = 6*(nside*nside); for(i = out_ipix_arr_fulls_pos; i < (2*Q3C_NFULLS);) { /* don't have any fully covered squares*/ out_ipix_arr_fulls[i++] = 1 ; out_ipix_arr_fulls[i++] = -1; } i = out_ipix_arr_partials_pos; out_ipix_arr_partials[i++] = -1; out_ipix_arr_partials[i++] = maxval; /* everything is partially covered */ for(; i < (2*Q3C_NPARTIALS);) { /* fill with dummy ranges the rest*/ out_ipix_arr_partials[i++] = 1; out_ipix_arr_partials[i++] = -1; } return; } face_num = q3c_get_facenum(ra0, dec0); q3c_fast_get_ellipse_xy_minmax_and_poly_coefs(face_num, ra0, dec0, majax, ell, PA, &xmin, &xmax, &ymin, &ymax, &axx, &ayy, &axy, &ax, &ay, &a); q3c_multi_face_check(&xmin, &ymin, &xmax, &ymax, points, &multi_flag); face_num0 = face_num; for(face_count = 0; face_count <= multi_flag; out_nstack = 0, face_count++) { /* This the beginning of the mega-loop over multiple faces */ if (face_count > 0) /* This "if" works when we pass through the secondary faces */ { face_num = q3c_xy2facenum(2 * points[2 * (face_count - 1)], 2 * points[2 * (face_count - 1) + 1], face_num0); q3c_fast_get_ellipse_xy_minmax_and_poly_coefs(face_num, ra0, dec0, majax, ell, PA, &xmin, &xmax, &ymin, &ymax, &axx, &ayy, &axy, &ax, &ay, &a); xmax = (xmax > Q3C_HALF ? Q3C_HALF : xmax); xmin = (xmin < -Q3C_HALF ? -Q3C_HALF : xmin); ymax = (ymax > Q3C_HALF ? Q3C_HALF : ymax); ymin = (ymin < -Q3C_HALF ? -Q3C_HALF : ymin); } #ifdef Q3C_DEBUG fprintf(stdout,"FACE RUN: %d FACE_NUM: %d\n", face_count, face_num); #endif xesize = xmax - xmin; yesize = ymax - ymin; xesize = xesize > yesize ? xesize : yesize; if (xesize * nside < 1) /* If the region is too small */ { xesize=1 / (q3c_coord_t)nside; } n0 = 1 << ((q3c_ipix_t)(-q3c_ceil((q3c_log(xesize) / q3c_log(2))))); /* n0 is now the level of quadtree for which the minimal * element is >~ our ellipse */ cur_size = ((q3c_coord_t)1) / n0; #ifdef Q3C_DEBUG fprintf(stdout,"XMIN: "Q3C_COORD_FMT" XMAX: "Q3C_COORD_FMT" YMIN: "Q3C_COORD_FMT" YMAX: "Q3C_COORD_FMT"\n", xmin, xmax, ymin, ymax); fprintf(stdout,Q3C_COORD_FMT" "Q3C_COORD_FMT" "Q3C_COORD_FMT" "Q3C_COORD_FMT" "Q3C_COORD_FMT" "Q3C_COORD_FMT"\n", axx,ayy,axy,ax,ay,a); #endif work_nstack = q3c_setup_square_stack(work_stack, xmin, ymin, xmax, ymax, n0); /* For this case the maximal increase of resolution of 2^res_depth * for each axis */ res_depth = nside / n0; /* If the the query is too small we cannot go up to Q3C_MAX_DEPTH since we * are limited by nside depth */ res_depth = Q3C_MAX_DEPTH > res_depth ? res_depth : Q3C_MAX_DEPTH; for(i = 1; i <= res_depth; i++) { #ifdef Q3C_DEBUG fprintf(stdout,"SQUARE RUN %d :\n", i); #endif #ifdef Q3C_DEBUG fprintf(stdout,"1) NUM squares in the stack %d\n",work_nstack); #endif /* This loop perform the testing of all squares in work_stack */ for(j = 0; j < work_nstack; j++) { cur_square = work_stack + j; cur_size=((q3c_coord_t) 1) / (cur_square->nside0); xc_cur = (( (q3c_coord_t) cur_square->x0) + Q3C_HALF) / cur_square->nside0 - Q3C_HALF; yc_cur = (( (q3c_coord_t) cur_square->y0) + Q3C_HALF) / cur_square->nside0 - Q3C_HALF; /* xc_cur and yc_cur -- center of the square (in the coordinate system * of big square [-0.5:0.5]x[-0.5:0.5] */ //fprintf(stdout,"%Lf %Lf %Lf %d\n",xc_cur,yc_cur,cur_size, status); cur_square->status = q3c_circle_cover_check(xc_cur, yc_cur, cur_size, xmin, xmax, ymin, ymax, axx, axy, ayy, ax, ay, a); #ifdef Q3C_DEBUG fprintf(stderr,"Trying (%f %f %f)(%f %f %f %f) --- ",xc_cur, yc_cur,cur_size,xc_cur-cur_size/2,xc_cur+cur_size/2,yc_cur-cur_size/2,yc_cur+cur_size/2); fprintf(stderr,"%d\n",cur_square->status); #endif } #ifdef Q3C_DEBUG fprintf(stdout,"2) NUM squares in the stack %d\n",work_nstack); #endif q3c_stack_expand(work_stack, &work_nstack, out_stack, &out_nstack, i, res_depth); } /* end of resolution loop */ // Old printing of the results #ifdef Q3C_DEBUG for(i = 0; i < out_nstack; i++) { cur_square = out_stack + i; fprintf(stdout, "OUT: %f %f %d %d\n", cur_square->x0+0.5,cur_square->y0+0.5,cur_square->nside0,cur_square->status); } for(i = 0; i < work_nstack; i++) { cur_square = work_stack + i; if (cur_square->status == Q3C_PARTIAL) fprintf(stdout, "OUT1: %f %f %d %d\n", cur_square->x0+0.5,cur_square->y0+0.5,cur_square->nside0,cur_square->status); } #endif q3c_output_stack( hprm, out_stack, out_nstack, work_stack, work_nstack, face_num, nside, out_ipix_arr_fulls, &out_ipix_arr_fulls_pos, out_ipix_arr_partials, &out_ipix_arr_partials_pos); } /* End of the mega-loop over the faces */ array_filler(out_ipix_arr_fulls, out_ipix_arr_fulls_pos, out_ipix_arr_partials, out_ipix_arr_partials_pos); } /* End of q3c_ellipse_query() */ q3c-1.5.0/scripts/000077500000000000000000000000001277206762700137125ustar00rootroot00000000000000q3c-1.5.0/scripts/q3c--1.5.0.sql000066400000000000000000002244001277206762700156370ustar00rootroot00000000000000\echo Use "CREATE EXTENSION pair" to load this file. \quit CREATE OR REPLACE FUNCTION q3c_version() RETURNS cstring AS 'MODULE_PATHNAME', 'pgq3c_get_version' LANGUAGE C IMMUTABLE STRICT; COMMENT ON FUNCTION q3c_version() IS 'Function returning Q3C version'; CREATE OR REPLACE FUNCTION q3c_ang2ipix(double precision, double precision) RETURNS bigint AS 'MODULE_PATHNAME', 'pgq3c_ang2ipix' LANGUAGE C IMMUTABLE STRICT; COMMENT ON FUNCTION q3c_ang2ipix (double precision, double precision) IS 'Function converting Ra and Dec to the Q3C ipix value'; CREATE OR REPLACE FUNCTION q3c_ang2ipix(ra real, decl real) RETURNS bigint AS 'MODULE_PATHNAME', 'pgq3c_ang2ipix_real' LANGUAGE C IMMUTABLE STRICT; COMMENT ON FUNCTION q3c_ang2ipix(real, real) IS 'Function converting Ra and Dec(floats) to the Q3C ipix value'; CREATE OR REPLACE FUNCTION q3c_ipix2ang(ipix bigint) RETURNS double precision[] AS 'MODULE_PATHNAME', 'pgq3c_ipix2ang' LANGUAGE C IMMUTABLE STRICT; COMMENT ON FUNCTION q3c_ipix2ang (bigint) IS 'Function converting the Q3C ipix value to Ra, Dec'; CREATE OR REPLACE FUNCTION q3c_pixarea(ipix bigint, depth int) RETURNS double precision AS 'MODULE_PATHNAME', 'pgq3c_pixarea' LANGUAGE C IMMUTABLE STRICT; COMMENT ON FUNCTION q3c_pixarea (bigint, int ) IS 'Function returning the area of the pixel containing ipix being located at certain depth in the quadtree'; CREATE OR REPLACE FUNCTION q3c_ipixcenter(ra double precision, decl double precision, int) RETURNS bigint AS 'SELECT ((q3c_ang2ipix($1,$2))>>((2*$3))<<((2*$3))) + ((1::bigint)<<(2*($3-1))) -1' LANGUAGE SQL; CREATE OR REPLACE FUNCTION q3c_dist(ra1 double precision, dec1 double precision, ra2 double precision, dec2 double precision) RETURNS double precision AS 'MODULE_PATHNAME', 'pgq3c_dist' LANGUAGE C IMMUTABLE STRICT; COMMENT ON FUNCTION q3c_dist(double precision, double precision, double precision, double precision) IS 'Function q3c_dist(ra1, dec1, ra2, dec2) computing the distance between points (ra1, dec1) and (ra2, dec2)'; CREATE OR REPLACE FUNCTION q3c_sindist(double precision, double precision, double precision, double precision) RETURNS double precision AS 'MODULE_PATHNAME', 'pgq3c_sindist' LANGUAGE C IMMUTABLE STRICT COST 100; CREATE OR REPLACE FUNCTION q3c_nearby_it(double precision, double precision, double precision, integer) RETURNS bigint AS 'MODULE_PATHNAME', 'pgq3c_nearby_it' LANGUAGE C IMMUTABLE STRICT COST 100; CREATE OR REPLACE FUNCTION q3c_ellipse_nearby_it(double precision, double precision, double precision, double precision, double precision, integer) RETURNS bigint AS 'MODULE_PATHNAME', 'pgq3c_ellipse_nearby_it' LANGUAGE C IMMUTABLE STRICT COST 100; CREATE OR REPLACE FUNCTION q3c_in_ellipse(ra0 double precision, dec0 double precision, ra_ell double precision, dec_ell double precision, maj_ax double precision, axis_ratio double precision, pa double precision) RETURNS boolean AS 'MODULE_PATHNAME', 'pgq3c_in_ellipse' LANGUAGE C IMMUTABLE STRICT COST 100; CREATE OR REPLACE FUNCTION q3c_radial_query_it(double precision, double precision, double precision, integer, integer) RETURNS bigint AS 'MODULE_PATHNAME', 'pgq3c_radial_query_it' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION q3c_ellipse_query_it(ra_ell double precision, dec_ell double precision, majax double precision, axis_ratio double precision, PA double precision, iteration integer, full_flag integer) RETURNS bigint AS 'MODULE_PATHNAME', 'pgq3c_ellipse_query_it' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION q3c_poly_query_it(double precision[], integer, integer) RETURNS bigint AS 'MODULE_PATHNAME', 'pgq3c_poly_query_it' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION q3c_in_poly(double precision, double precision, double precision[]) RETURNS boolean AS 'MODULE_PATHNAME', 'pgq3c_in_poly' LANGUAGE C IMMUTABLE STRICT; CREATE OR REPLACE FUNCTION q3c_join(leftra double precision, leftdec double precision, rightra double precision, rightdec double precision, radius double precision) RETURNS boolean AS ' SELECT (((q3c_ang2ipix($3,$4)>=(q3c_nearby_it($1,$2,$5,0))) AND (q3c_ang2ipix($3,$4)<=(q3c_nearby_it($1,$2,$5,1)))) OR ((q3c_ang2ipix($3,$4)>=(q3c_nearby_it($1,$2,$5,2))) AND (q3c_ang2ipix($3,$4)<=(q3c_nearby_it($1,$2,$5,3)))) OR ((q3c_ang2ipix($3,$4)>=(q3c_nearby_it($1,$2,$5,4))) AND (q3c_ang2ipix($3,$4)<=(q3c_nearby_it($1,$2,$5,5)))) OR ((q3c_ang2ipix($3,$4)>=(q3c_nearby_it($1,$2,$5,6))) AND (q3c_ang2ipix($3,$4)<=(q3c_nearby_it($1,$2,$5,7))))) AND q3c_sindist($1,$2,$3,$4)=(q3c_nearby_it($1,$2,$5,0))) AND (q3c_ang2ipix($3,$4)<=(q3c_nearby_it($1,$2,$5,1)))) OR ((q3c_ang2ipix($3,$4)>=(q3c_nearby_it($1,$2,$5,2))) AND (q3c_ang2ipix($3,$4)<=(q3c_nearby_it($1,$2,$5,3)))) OR ((q3c_ang2ipix($3,$4)>=(q3c_nearby_it($1,$2,$5,4))) AND (q3c_ang2ipix($3,$4)<=(q3c_nearby_it($1,$2,$5,5)))) OR ((q3c_ang2ipix($3,$4)>=(q3c_nearby_it($1,$2,$5,6))) AND (q3c_ang2ipix($3,$4)<=(q3c_nearby_it($1,$2,$5,7))))) AND q3c_sindist($1,$2,$3,$4)=(q3c_ellipse_nearby_it($1,$2,$5,$6,$7,0))) AND (q3c_ang2ipix($3,$4)<=(q3c_ellipse_nearby_it($1,$2,$5,$6,$7,1)))) OR ((q3c_ang2ipix($3,$4)>=(q3c_ellipse_nearby_it($1,$2,$5,$6,$7,2))) AND (q3c_ang2ipix($3,$4)<=(q3c_ellipse_nearby_it($1,$2,$5,$6,$7,3)))) OR ((q3c_ang2ipix($3,$4)>=(q3c_ellipse_nearby_it($1,$2,$5,$6,$7,4))) AND (q3c_ang2ipix($3,$4)<=(q3c_ellipse_nearby_it($1,$2,$5,$6,$7,5)))) OR ((q3c_ang2ipix($3,$4)>=(q3c_ellipse_nearby_it($1,$2,$5,$6,$7,6))) AND (q3c_ang2ipix($3,$4)<=(q3c_ellipse_nearby_it($1,$2,$5,$6,$7,7))))) AND q3c_in_ellipse($3,$4,$1,$2,$5,$6,$7) ' LANGUAGE SQL IMMUTABLE; CREATE OR REPLACE FUNCTION q3c_radial_query(bigint, double precision, double precision, double precision, double precision, double precision) returns boolean as 'SELECT ( ($1>=q3c_radial_query_it($4,$5,$6,0,1) AND $1=q3c_radial_query_it($4,$5,$6,2,1) AND $1=q3c_radial_query_it($4,$5,$6,4,1) AND $1=q3c_radial_query_it($4,$5,$6,6,1) AND $1=q3c_radial_query_it($4,$5,$6,8,1) AND $1=q3c_radial_query_it($4,$5,$6,10,1) AND $1=q3c_radial_query_it($4,$5,$6,12,1) AND $1=q3c_radial_query_it($4,$5,$6,14,1) AND $1=q3c_radial_query_it($4,$5,$6,16,1) AND $1=q3c_radial_query_it($4,$5,$6,18,1) AND $1=q3c_radial_query_it($4,$5,$6,20,1) AND $1=q3c_radial_query_it($4,$5,$6,22,1) AND $1=q3c_radial_query_it($4,$5,$6,24,1) AND $1=q3c_radial_query_it($4,$5,$6,26,1) AND $1=q3c_radial_query_it($4,$5,$6,28,1) AND $1=q3c_radial_query_it($4,$5,$6,30,1) AND $1=q3c_radial_query_it($4,$5,$6,32,1) AND $1=q3c_radial_query_it($4,$5,$6,34,1) AND $1=q3c_radial_query_it($4,$5,$6,36,1) AND $1=q3c_radial_query_it($4,$5,$6,38,1) AND $1=q3c_radial_query_it($4,$5,$6,40,1) AND $1=q3c_radial_query_it($4,$5,$6,42,1) AND $1=q3c_radial_query_it($4,$5,$6,44,1) AND $1=q3c_radial_query_it($4,$5,$6,46,1) AND $1=q3c_radial_query_it($4,$5,$6,48,1) AND $1=q3c_radial_query_it($4,$5,$6,50,1) AND $1=q3c_radial_query_it($4,$5,$6,52,1) AND $1=q3c_radial_query_it($4,$5,$6,54,1) AND $1=q3c_radial_query_it($4,$5,$6,56,1) AND $1=q3c_radial_query_it($4,$5,$6,58,1) AND $1=q3c_radial_query_it($4,$5,$6,60,1) AND $1=q3c_radial_query_it($4,$5,$6,62,1) AND $1=q3c_radial_query_it($4,$5,$6,64,1) AND $1=q3c_radial_query_it($4,$5,$6,66,1) AND $1=q3c_radial_query_it($4,$5,$6,68,1) AND $1=q3c_radial_query_it($4,$5,$6,70,1) AND $1=q3c_radial_query_it($4,$5,$6,72,1) AND $1=q3c_radial_query_it($4,$5,$6,74,1) AND $1=q3c_radial_query_it($4,$5,$6,76,1) AND $1=q3c_radial_query_it($4,$5,$6,78,1) AND $1=q3c_radial_query_it($4,$5,$6,80,1) AND $1=q3c_radial_query_it($4,$5,$6,82,1) AND $1=q3c_radial_query_it($4,$5,$6,84,1) AND $1=q3c_radial_query_it($4,$5,$6,86,1) AND $1=q3c_radial_query_it($4,$5,$6,88,1) AND $1=q3c_radial_query_it($4,$5,$6,90,1) AND $1=q3c_radial_query_it($4,$5,$6,92,1) AND $1=q3c_radial_query_it($4,$5,$6,94,1) AND $1=q3c_radial_query_it($4,$5,$6,96,1) AND $1=q3c_radial_query_it($4,$5,$6,98,1) AND $1=q3c_radial_query_it($4,$5,$6,0,0) AND $1=q3c_radial_query_it($4,$5,$6,2,0) AND $1=q3c_radial_query_it($4,$5,$6,4,0) AND $1=q3c_radial_query_it($4,$5,$6,6,0) AND $1=q3c_radial_query_it($4,$5,$6,8,0) AND $1=q3c_radial_query_it($4,$5,$6,10,0) AND $1=q3c_radial_query_it($4,$5,$6,12,0) AND $1=q3c_radial_query_it($4,$5,$6,14,0) AND $1=q3c_radial_query_it($4,$5,$6,16,0) AND $1=q3c_radial_query_it($4,$5,$6,18,0) AND $1=q3c_radial_query_it($4,$5,$6,20,0) AND $1=q3c_radial_query_it($4,$5,$6,22,0) AND $1=q3c_radial_query_it($4,$5,$6,24,0) AND $1=q3c_radial_query_it($4,$5,$6,26,0) AND $1=q3c_radial_query_it($4,$5,$6,28,0) AND $1=q3c_radial_query_it($4,$5,$6,30,0) AND $1=q3c_radial_query_it($4,$5,$6,32,0) AND $1=q3c_radial_query_it($4,$5,$6,34,0) AND $1=q3c_radial_query_it($4,$5,$6,36,0) AND $1=q3c_radial_query_it($4,$5,$6,38,0) AND $1=q3c_radial_query_it($4,$5,$6,40,0) AND $1=q3c_radial_query_it($4,$5,$6,42,0) AND $1=q3c_radial_query_it($4,$5,$6,44,0) AND $1=q3c_radial_query_it($4,$5,$6,46,0) AND $1=q3c_radial_query_it($4,$5,$6,48,0) AND $1=q3c_radial_query_it($4,$5,$6,50,0) AND $1=q3c_radial_query_it($4,$5,$6,52,0) AND $1=q3c_radial_query_it($4,$5,$6,54,0) AND $1=q3c_radial_query_it($4,$5,$6,56,0) AND $1=q3c_radial_query_it($4,$5,$6,58,0) AND $1=q3c_radial_query_it($4,$5,$6,60,0) AND $1=q3c_radial_query_it($4,$5,$6,62,0) AND $1=q3c_radial_query_it($4,$5,$6,64,0) AND $1=q3c_radial_query_it($4,$5,$6,66,0) AND $1=q3c_radial_query_it($4,$5,$6,68,0) AND $1=q3c_radial_query_it($4,$5,$6,70,0) AND $1=q3c_radial_query_it($4,$5,$6,72,0) AND $1=q3c_radial_query_it($4,$5,$6,74,0) AND $1=q3c_radial_query_it($4,$5,$6,76,0) AND $1=q3c_radial_query_it($4,$5,$6,78,0) AND $1=q3c_radial_query_it($4,$5,$6,80,0) AND $1=q3c_radial_query_it($4,$5,$6,82,0) AND $1=q3c_radial_query_it($4,$5,$6,84,0) AND $1=q3c_radial_query_it($4,$5,$6,86,0) AND $1=q3c_radial_query_it($4,$5,$6,88,0) AND $1=q3c_radial_query_it($4,$5,$6,90,0) AND $1=q3c_radial_query_it($4,$5,$6,92,0) AND $1=q3c_radial_query_it($4,$5,$6,94,0) AND $1=q3c_radial_query_it($4,$5,$6,96,0) AND $1=q3c_radial_query_it($4,$5,$6,98,0) AND $1=q3c_radial_query_it($3,$4,$5,0,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,2,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,4,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,6,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,8,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,10,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,12,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,14,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,16,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,18,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,20,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,22,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,24,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,26,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,28,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,30,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,32,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,34,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,36,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,38,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,40,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,42,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,44,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,46,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,48,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,50,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,52,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,54,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,56,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,58,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,60,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,62,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,64,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,66,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,68,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,70,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,72,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,74,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,76,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,78,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,80,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,82,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,84,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,86,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,88,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,90,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,92,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,94,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,96,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,98,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,0,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,2,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,4,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,6,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,8,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,10,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,12,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,14,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,16,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,18,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,20,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,22,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,24,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,26,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,28,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,30,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,32,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,34,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,36,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,38,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,40,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,42,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,44,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,46,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,48,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,50,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,52,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,54,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,56,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,58,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,60,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,62,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,64,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,66,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,68,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,70,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,72,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,74,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,76,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,78,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,80,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,82,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,84,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,86,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,88,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,90,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,92,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,94,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,96,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,98,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,0,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,2,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,4,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,6,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,8,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,10,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,12,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,14,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,16,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,18,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,20,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,22,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,24,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,26,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,28,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,30,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,32,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,34,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,36,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,38,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,40,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,42,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,44,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,46,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,48,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,50,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,52,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,54,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,56,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,58,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,60,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,62,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,64,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,66,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,68,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,70,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,72,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,74,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,76,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,78,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,80,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,82,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,84,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,86,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,88,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,90,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,92,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,94,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,96,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,98,1) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,0,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,2,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,4,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,6,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,8,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,10,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,12,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,14,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,16,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,18,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,20,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,22,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,24,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,26,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,28,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,30,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,32,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,34,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,36,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,38,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,40,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,42,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,44,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,46,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,48,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,50,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,52,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,54,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,56,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,58,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,60,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,62,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,64,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,66,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,68,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,70,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,72,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,74,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,76,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,78,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,80,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,82,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,84,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,86,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,88,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,90,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,92,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,94,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,96,0) AND q3c_ang2ipix($1,$2)=q3c_radial_query_it($3,$4,$5,98,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,0,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,2,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,4,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,6,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,8,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,10,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,12,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,14,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,16,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,18,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,20,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,22,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,24,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,26,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,28,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,30,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,32,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,34,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,36,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,38,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,40,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,42,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,44,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,46,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,48,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,50,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,52,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,54,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,56,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,58,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,60,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,62,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,64,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,66,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,68,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,70,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,72,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,74,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,76,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,78,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,80,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,82,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,84,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,86,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,88,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,90,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,92,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,94,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,96,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,98,1) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,0,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,2,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,4,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,6,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,8,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,10,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,12,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,14,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,16,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,18,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,20,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,22,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,24,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,26,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,28,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,30,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,32,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,34,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,36,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,38,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,40,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,42,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,44,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,46,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,48,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,50,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,52,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,54,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,56,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,58,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,60,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,62,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,64,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,66,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,68,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,70,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,72,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,74,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,76,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,78,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,80,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,82,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,84,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,86,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,88,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,90,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,92,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,94,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,96,0) AND q3c_ang2ipix($1,$2)=q3c_ellipse_query_it($3,$4,$5,$6,$7,98,0) AND q3c_ang2ipix($1,$2)=(q3c_nearby_it($1,$2,$6,0))) AND ($5<=(q3c_nearby_it($1,$2,$6,1)))) OR (($5>=(q3c_nearby_it($1,$2,$6,2))) AND ($5<=(q3c_nearby_it($1,$2,$6,3)))) OR (($5>=(q3c_nearby_it($1,$2,$6,4))) AND ($5<=(q3c_nearby_it($1,$2,$6,5)))) OR (($5>=(q3c_nearby_it($1,$2,$6,6))) AND ($5<=(q3c_nearby_it($1,$2,$6,7))))) AND q3c_sindist($1,$2,$3,$4)=q3c_poly_query_it($3,0,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,2,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,4,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,6,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,8,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,10,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,12,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,14,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,16,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,18,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,20,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,22,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,24,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,26,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,28,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,30,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,32,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,34,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,36,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,38,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,40,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,42,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,44,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,46,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,48,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,50,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,52,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,54,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,56,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,58,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,60,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,62,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,64,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,66,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,68,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,70,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,72,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,74,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,76,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,78,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,80,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,82,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,84,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,86,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,88,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,90,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,92,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,94,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,96,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,98,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,0,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,2,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,4,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,6,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,8,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,10,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,12,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,14,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,16,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,18,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,20,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,22,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,24,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,26,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,28,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,30,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,32,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,34,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,36,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,38,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,40,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,42,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,44,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,46,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,48,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,50,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,52,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,54,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,56,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,58,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,60,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,62,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,64,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,66,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,68,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,70,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,72,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,74,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,76,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,78,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,80,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,82,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,84,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,86,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,88,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,90,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,92,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,94,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,96,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,98,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,0,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,2,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,4,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,6,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,8,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,10,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,12,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,14,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,16,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,18,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,20,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,22,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,24,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,26,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,28,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,30,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,32,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,34,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,36,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,38,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,40,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,42,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,44,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,46,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,48,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,50,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,52,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,54,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,56,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,58,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,60,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,62,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,64,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,66,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,68,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,70,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,72,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,74,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,76,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,78,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,80,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,82,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,84,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,86,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,88,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,90,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,92,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,94,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,96,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,98,1) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,0,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,2,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,4,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,6,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,8,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,10,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,12,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,14,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,16,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,18,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,20,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,22,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,24,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,26,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,28,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,30,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,32,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,34,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,36,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,38,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,40,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,42,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,44,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,46,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,48,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,50,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,52,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,54,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,56,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,58,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,60,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,62,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,64,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,66,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,68,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,70,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,72,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,74,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,76,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,78,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,80,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,82,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,84,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,86,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,88,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,90,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,92,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,94,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,96,0) AND q3c_ang2ipix($1,$2)=q3c_poly_query_it($3,98,0) AND q3c_ang2ipix($1,$2)3; q3c-1.5.0/utils/000077500000000000000000000000001277206762700133635ustar00rootroot00000000000000q3c-1.5.0/utils/check_poly.py000066400000000000000000000074161277206762700160650ustar00rootroot00000000000000import shapely import numpy as np,numpy.random import random import multiprocessing,sys from readcol import readcol from shapely.geometry import Point, Polygon def torect(ra,dec): cd=np.cos(np.deg2rad(dec)) sd=np.sin(np.deg2rad(dec)) sr=np.sin(np.deg2rad(ra)) cr=np.cos(np.deg2rad(ra)) x,y,z=cd*cr,cd*sr,sd return x,y,z def fromrect(x,y,z): ra = np.rad2deg(np.arctan2(y, x)) dec = np.rad2deg(np.arctan2(z, np.sqrt(x**2+y**2))) rad = np.sqrt(x**2+y**2+z**2) return ra,dec def within_poly(ra,dec,rapoly,decpoly,getmask=False): rapolycen, decpolycen = (rapoly[0]), (decpoly[0]) x, y, z = torect(ra, dec) xpoly,ypoly,zpoly=torect(rapoly,decpoly) xpolycen,ypolycen,zpolycen=torect(rapolycen,decpolycen ) dists = x*xpolycen+y*ypolycen+z*zpolycen ind = dists>np.cos(np.deg2rad(70)) # only consider the points located at the same #hemisphere as the polygon x1,y1,z1=x[ind],y[ind],z[ind] point = Point(0,0) arr = [] for curx,cury,curz in zip(x1,y1,z1): curx1 = curx + random.random() cury1 = cury + random.random() curz1 = curz + random.random() # this is the perturbed vector to the point vec0 = np.array([curx, cury, curz]) vec1 = np.array([curx1, cury1, curz1]) vec1 = vec1 / (vec1**2).sum()**.5 vec1 = vec1 - (vec0 * vec1).sum() *vec0 vec1 = vec1 / (vec1**2).sum()**.5 vec2 = np.cross(vec0, vec1) # vec0,vec1,vec2 this is the orthogonal system of vectors summer = lambda t: xpoly * t[0] + ypoly * t[1] + zpoly * t[2] norm = summer(vec0) curxpoly = summer(vec1) / norm curypoly = summer(vec2) / norm # curxpoly aren now projections of the polygon vertex onto the plane # perpednicular to the vector pointing towards curx,cury,curz # the rotation angle of this plane is random #print repr(curxpoly),repr(curypoly) poly = Polygon(zip(curxpoly, curypoly)) arr.append(point.within(poly)) result = int(np.array(arr).sum()) print >>sys.stderr , result ind[ind]=arr[:] if getmask: return result,ind return result#,ind def get_rotation_matrix(fi1, fi2, fi3): mat1 = np.matrix([ [ 1, 0, 0 ], [ 0, np.cos(fi1), -np.sin(fi1) ], [ 0, np.sin(fi1), np.cos(fi1) ] ]) mat2 = np.matrix([ [ np.cos(fi2), 0, np.sin(fi2) ], [ 0, 1, 0 ], [ -np.sin(fi2), 0, np.cos(fi2) ] ]) mat3 = np.matrix([ [ np.cos(fi3), -np.sin(fi3), 0 ], [ np.sin(fi3), np.cos(fi3), 0 ], [ 0, 0, 1 ] ]) return mat1*mat2*mat3 def gen_random_poly(): minvert = 3 maxvert = 10 mindist = 1 maxdist = 10 nvert = np.random.uniform(minvert, maxvert, 1)[0] fi1, fi2, fi3 = np.random.uniform(0,2*np.pi,1)[0],\ np.random.uniform(0,2*np.pi,1)[0],\ np.random.uniform(0,2*np.pi,1)[0] mat = get_rotation_matrix(fi1, fi2, fi3) while True: ras = np.sort(np.random.uniform(0, 360, nvert)) if (ras[-1]-ras[0])>180: break dists = np.random.uniform(mindist, maxdist, nvert) decs = (90 - dists) #print ras,decs x,y,z = torect(ras, decs) vec = np.array([x, y, z]) vec1 = mat * vec ras,decs = fromrect(np.array(vec1[0]).flatten(),np.array(vec1[1]).flatten(), np.array(vec1[2]).flatten()) ras = (ras + (180-ras[0]))%360 - (180-ras[0]) ras = ras - (ras)%0.001 ras = (ras+360)%360 decs = decs - (decs)%0.001 return ras,decs def get_all_polys(): npolys = 10000 tab = 'test_small' np.random.seed(1) catra, catdec = readcol('/tmp/zz3_')#./gen_data 3 10000 pool = multiprocessing.Pool(8) res = [] for i in range(npolys): a,b = gen_random_poly() coostring = ','.join(['%f'%_ for _ in np.array([a,b]).T.flatten()]) query = 'select count(*) from %s where q3c_poly_query(ra,dec,ARRAY[%s]);'%(tab,coostring) print query #print a,b #print within_poly(catra,catdec,a,b); res.append(pool.apply_async(within_poly,(catra,catdec,a,b))) pool.close() pool.join() for r in res: print r.get()q3c-1.5.0/utils/create_drops.pl000066400000000000000000000004671277206762700164010ustar00rootroot00000000000000my $state=0; while(<>) { if (/^--/) { next; } elsif (s/CREATE OR REPLACE FUNCTION/DROP FUNCTION/) { if (!(/\)/)) { $state=1; chomp; print; next; } chomp; print; print ";\n"; next; } if ($state==1) { chomp; print; if (/\)/) { print ";\n"; $state=0; } } }q3c-1.5.0/utils/formulae000066400000000000000000000020121277206762700151130ustar00rootroot00000000000000Misc spherical distance formulae: cos(r)=cos(ra1)cos(ra2)cos(dec1)cos(dec2)+sin(ra1)sin(ra2)cos(dec1)cos(dec2)+sin(dec1)sin(dec2) cos(r)=cos(dec1)cos(dec2)cos(ra1-ra2)+sin(dec1)*sin(dec2) cos(r)=cos(dec1)cos(dec2)(1-2sin^2(ra1-ra2))+sin(dec1)*sin(dec2) cos(r)=cos(dec1)cos(dec2)-2sin^2((ra1-ra2)/2)*cos(dec1)cos(dec2)+sin(dec1)*sin(dec2) cos(r)=cos(dec1-dec2)-2sin^2(ra1-ra2)*cos(dec1)cos(dec2) cos(r)=1-2sin^2((dec1-dec2)/2)-2sin^2(ra1-ra2)cos(dec1)cos(dec2) 1-2sin^2(r/2)=1-2sin^2((dec1-dec2)/2)-2sin^2(ra1-ra2)cos(dec1)cos(dec2) sin^2(r/2)=sin^2((dec1-dec2)/2)+sin^2(ra1-ra2)cos(dec1)cos(dec2) sin^2(r/2)=sin^2((dec1-dec2)/2)+sin^2(ra1-ra2)0.5*(cos(dec1-dec2)+cos(dec1+dec2)) sin^2(r/2)=sin^2((dec1-dec2)/2)+sin^2(ra1-ra2)0.5*(1-2*sin^2((dec1-dec2)/2)+cos(dec1+dec2)) sin^2(r / 2) = sin^2(ra1 - ra2) * (cos^2((dec1 + dec2) / 2) - sin^2((dec1 - dec2) / 2)) + sin^2((dec1 - dec2) / 2) q3c-1.5.0/utils/generate_rad_query.pl000066400000000000000000000042221277206762700175650ustar00rootroot00000000000000#!/usr/bin/perl use strict; # Here the numbers are the number of PAIRS!!! of ranges (as in C program) my $full_array_len=50;#800; my $partial_array_len=50;#800; my $q3c_func='q3c_radial_query_it'; my ($ipix_col, $ra_col, $dec_col, $ra_cen, $dec_cen, $radius, $coltype); for (1..3) { if ($_==1) { $ipix_col='$1'; $ra_col='$2'; $dec_col='$3'; $ra_cen='$4'; $dec_cen='$5'; $radius='$6'; print "CREATE OR REPLACE FUNCTION q3c_radial_query(bigint, double precision, double precision, double precision, double precision, double precision) returns boolean as '"; } else { $ipix_col='q3c_ang2ipix($1,$2)'; $ra_col='$1'; $dec_col='$2'; $ra_cen='$3'; $dec_cen='$4'; $radius='$5'; if ($_==2) { $coltype='real'; } else { $coltype='double precision'; } print "CREATE OR REPLACE FUNCTION q3c_radial_query( $coltype, $coltype, double precision, double precision, double precision) returns boolean as '"; } print "SELECT ((\n"; my $i = 0; while(1) { if ($i < 2 * ($full_array_len - 1)) { print "($ipix_col>=$q3c_func($ra_cen,$dec_cen,$radius," . "" . ($i++) . ",1) AND $ipix_col<$q3c_func($ra_cen,$dec_cen,$radius,".($i++).",1)) OR\n"; } else { print "($ipix_col>=$q3c_func($ra_cen,$dec_cen,$radius," . "" . ($i++) . ",1) AND $ipix_col<$q3c_func($ra_cen,$dec_cen,$radius,".($i++).",1)) \n"; last; } } print ") OR (\n"; $i=0; while(1) { if ($i < 2 * ($partial_array_len - 1)) { print "($ipix_col>=$q3c_func($ra_cen,$dec_cen,$radius," . "" . ($i++) . ",0) AND $ipix_col<$q3c_func($ra_cen,$dec_cen,$radius,".($i++).",0)) OR\n"; } else { print "($ipix_col>=$q3c_func($ra_cen,$dec_cen,$radius," . "" . ($i++) . ",0) AND $ipix_col<$q3c_func($ra_cen,$dec_cen,$radius,".($i++).",0)) \n"; last; } } print ")\n AND q3c_sindist($ra_col,$dec_col,$ra_cen,$dec_cen)