commit 296c2ce840c0b9adbebd33899ce104450954667e Author: edward Date: Mon Jun 6 19:50:09 2016 +0800 my first commit diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..c24dddd Binary files /dev/null and b/.DS_Store differ diff --git a/1 b/1 new file mode 100755 index 0000000..d5bee67 --- /dev/null +++ b/1 @@ -0,0 +1 @@ +{u'expr': u'Id = 1912875929', u'entities': [{u'logprob': -11.773, u'Id': 1912875929}]} diff --git a/1.txt b/1.txt new file mode 100755 index 0000000..52c4396 --- /dev/null +++ b/1.txt @@ -0,0 +1,41 @@ +Total Size: 39 +[2094437628, 2273736245] +[2094437628, 3880285, 2094437628, 2273736245] +[2094437628, 2273736245, 2094437628, 2273736245] +[2094437628, 2311122994, 2094437628, 2273736245] +[2094437628, 2273736245, 2088397685, 2273736245] +[2094437628, 2273736245, 2054283902, 2273736245] +[2094437628, 2273736245, 2021067283, 2273736245] +[2094437628, 2311122994, 2021067283, 2273736245] +[2094437628, 2311122994, 2136111777, 2273736245] +[2094437628, 2273736245, 2136111777, 2273736245] +[2094437628, 2273736245, 2067111928, 2273736245] +[2094437628, 2273736245, 2086923594, 2273736245] +[2094437628, 2273736245, 2033935581, 2273736245] +[2094437628, 2273736245, 2053077389, 2273736245] +[2094437628, 2273736245, 2003918905, 2273736245] +[2094437628, 2273736245, 2048481564, 2273736245] +[2094437628, 2273736245, 2017318430, 2273736245] +[2094437628, 2273736245, 2067477861, 2273736245] +[2094437628, 2273736245, 2046860686, 2273736245] +[2094437628, 2311122994, 2046860686, 2273736245] +[2094437628, 2273736245, 1996704434, 2273736245] +[2094437628, 2311122994, 1996704434, 2273736245] +[2094437628, 2273736245, 1991518848, 2273736245] +[2094437628, 2311122994, 1991518848, 2273736245] +[2094437628, 2311122994, 2272756406, 2273736245] +[2094437628, 2273736245, 2272756406, 2273736245] +[2094437628, 2311122994, 1928727717, 2273736245] +[2094437628, 2273736245, 1928727717, 2273736245] +[2094437628, 2273736245, 165450437, 2273736245] +[2094437628, 2311122994, 165450437, 2273736245] +[2094437628, 124657808, 2094437628, 2273736245] +[2094437628, 121332964, 2094437628, 2273736245] +[2094437628, 124657808, 2088397685, 2273736245] +[2094437628, 121332964, 2088397685, 2273736245] +[2094437628, 124657808, 2054283902, 2273736245] +[2094437628, 121332964, 2067111928, 2273736245] +[2094437628, 121332964, 2033935581, 2273736245] +[2094437628, 121332964, 2067477861, 2273736245] +[2094437628, 121332964, 2046860686, 2273736245] +total time: 6143 \ No newline at end of file diff --git a/2 b/2 new file mode 100755 index 0000000..c57dc6a --- /dev/null +++ b/2 @@ -0,0 +1,104 @@ +{ +"expr" : "Composite(AA.AuId = 2014261844)", +"entities" : +[{ "logprob":-19.889, "Id":2114096741, "Ti":"a survey of geodesic paths on 3d surfaces", "Y":2011, "CC":11, "RId":[2149906774, 2256863592, 1999244633, 1238092070, 1999690352, 2166164984, 2054113582, 2084224084, 2161253909, 2159361280, 2130726152, 1999545213, 2108567935, 2280326949, 2141409037, 2005276292, 2028769163, 1990466879, 2331180561, 2081777693, 2170220350, 1989723858, 2129612824, 2074537686, 2169528473, 2120424341, 2072019354, 2042746037, 2029649144, 2074682596, 613480278, 2159549579, 2112346596, 1984697939, 1980197133, 1014505, 240977677, 1999558884, 2132432991, 2167732668, 2094360223, 2018164813, 2012669981, 2049480565, 2024733248, 98519300, 2123631536, 2089694170, 2114121462, 1579058916, 2017117017, 2047629658, 2079841800, 1972774658, 1974931598, 2162703138, 1526047146, 2037134555, 2109278560, 2134422883, 2053723042, 1993264991, 2122845873, 2019758632, 2162114735, 1810598584, 2147690196, 49068151, 1497277914, 2042706118, 1998692689, 1977998901], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":2154897350,"AfId":67031392}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2014261844,"AfId":197604219}], "F":[{"FId":22590252}, {"FId":157498722}, {"FId":29123130}, {"FId":2524010}, {"FId":33923547}], "J":{"JId":165542689} }, +{ "logprob":-19.916, "Id":2156148354, "Ti":"algorithms for optimal outlier removal", "Y":2009, "CC":7, "RId":[2005314985, 2026771935, 2029948740, 145790213, 2339150939, 2059985428, 1972858511, 2110507702, 2046227217, 2010790640, 2048493433, 2042473201, 2102902634, 1516306206, 2302532677, 1968215127, 1977838112, 2044445959, 2005311123, 2167927607, 2123817071, 148814178], "AA":[{"AuId":2057698039,"AfId":67031392}, {"AuId":2120994602,"AfId":67031392}, {"AuId":2138755643,"AfId":67031392}, {"AuId":2154897350,"AfId":67031392}, {"AuId":2160857524,"AfId":67031392}, {"AuId":2169685232,"AfId":67031392}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":206194317}, {"FId":176222170}, {"FId":29123130}, {"FId":33923547}], "J":{"JId":163424111} }, +{ "logprob":-19.974, "Id":2131970932, "Ti":"shrec 10 track non rigid 3d shape retrieval", "Y":2010, "CC":16, "RId":[2151103935, 2131846894, 1625255723, 2099789128, 2056132907, 2131791003, 1999690352, 2159361280, 2106629076, 2071866949, 1982465050, 2172246656, 2151245724, 2063513338, 2084286148, 2084548435, 1885760432, 2238971733, 2123631536], "AA":[{"AuId":2097668895,"AfId":1321296531}, {"AuId":2134662681,"AfId":1321296531}, {"AuId":2171331403,"AfId":99464096}, {"AuId":2133292699,"AfId":66906201}, {"AuId":2190956648,"AfId":99464096}, {"AuId":2166627689,"AfId":66906201}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2146978970,"AfId":99464096}, {"AuId":2096876795,"AfId":99464096}, {"AuId":2030948482,"AfId":99464096}, {"AuId":2014261844,"AfId":197604219}] }, +{ "logprob":-20.036, "Id":2099361645, "Ti":"linear reconfiguration of cube style modular robots", "Y":2009, "CC":7, "RId":[1526777436, 2164380970, 2126295536, 2117416080, 2056453745, 2059661411, 1012009150, 2169676578, 2231045347, 1508698264], "AA":[{"AuId":76407621,"AfId":132053463}, {"AuId":2047536997,"AfId":132053463}, {"AuId":2139371818,"AfId":7863295}, {"AuId":380982395,"AfId":63966007}, {"AuId":2300589195,"AfId":920285187}, {"AuId":695374658,"AfId":132053463}, {"AuId":1995729299,"AfId":202524275}, {"AuId":2102544858,"AfId":178766854}, {"AuId":1985301561,"AfId":9617848}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":193435613}, {"FId":114614502}, {"FId":33923547}], "J":{"JId":165542689} }, +{ "logprob":-20.070, "Id":2052243599, "Ti":"statistical analysis of 3d faces in motion", "Y":2013, "CC":4, "RId":[], "AA":[{"AuId":57898110,"AfId":91712215}, {"AuId":2014261844,"AfId":91712215}] }, +{ "logprob":-20.162, "Id":1012009150, "Ti":"reconfiguration of cube style modular robots using o log n parallel moves", "Y":2008, "CC":7, "RId":[2117416080, 2056453745], "AA":[{"AuId":76407621}, {"AuId":2047536997}, {"AuId":380982395}, {"AuId":695374658}, {"AuId":1985301561}, {"AuId":2014261844}], "J":{"JId":106296714} }, +{ "logprob":-20.223, "Id":2109991685, "Ti":"efficient constant velocity reconfiguration of crystalline robots", "Y":2011, "CC":4, "RId":[2101392651, 2149841830, 1909393615, 2167382904, 1526777436, 1999730797, 2149602461, 1972350, 1976620677, 2121795633, 2164380970, 1566041730, 2126295536, 2032219063, 2117416080, 2140517064, 2132817270, 2035233472, 1982236134, 1972590691, 2056453745, 2033719238, 2163689710, 2164438790, 2104005082, 2188492432, 2099361645, 2116110704, 2056053005, 119161764, 2044917890, 1487445608, 2145386076, 2333066315, 2294545116], "AA":[{"AuId":76407621}, {"AuId":2307369388,"AfId":132053463}, {"AuId":2139371818,"AfId":7863295}, {"AuId":380982395,"AfId":63966007}, {"AuId":2300589195,"AfId":920285187}, {"AuId":695374658,"AfId":132053463}, {"AuId":1995729299,"AfId":202524275}, {"AuId":135182615,"AfId":35462925}, {"AuId":2102544858,"AfId":178766854}, {"AuId":2303622677,"AfId":906480834}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":81074085}, {"FId":154945302}, {"FId":41008148}], "J":{"JId":92163612} }, +{ "logprob":-20.313, "Id":2107465918, "Ti":"filling holes in triangular meshes by curve unfolding", "Y":2009, "CC":5, "RId":[1977758817, 2129412583, 2061010610, 2237825899, 2129098897, 1543226262, 1998255762, 2171542563, 2081507207, 2045471990, 2121669559, 2008151176, 1909076809, 2018110063, 1991845454, 2056725994, 1583585595, 2008888582, 2034609976, 1708197474, 2017477785, 2105522022, 1521071054], "AA":[{"AuId":1984903675,"AfId":197604219}, {"AuId":2014261844,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2120994602,"AfId":67031392}, {"AuId":380982395,"AfId":63966007}] }, +{ "logprob":-20.314, "Id":2159031003, "Ti":"landmark free posture invariant human shape correspondence", "Y":2011, "CC":9, "RId":[2237250383, 2049981393, 2119851068, 334078648, 1989191365, 2104480174, 2025062188, 2159361280, 2098578926, 2098466221, 2123487031, 2042246564, 2064499898, 1969076082, 2026935851, 1944448249, 2115298906, 2037149239, 2141387879, 2003014378, 1542263132, 2113000721], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2099631723,"AfId":197604219}], "F":[{"FId":41008148}], "J":{"JId":73060445} }, +{ "logprob":-20.384, "Id":2002018157, "Ti":"π 2 angle yao graphs are spanners", "Y":2012, "CC":5, "RId":[2095977717], "AA":[{"AuId":2120994602}, {"AuId":2139371818}, {"AuId":286320687}, {"AuId":1995729299}, {"AuId":812850721}, {"AuId":2007139549}, {"AuId":2014261844}], "F":[{"FId":29302406}, {"FId":33923547}], "J":{"JId":25827807} }, +{ "logprob":-20.388, "Id":1936186068, "Ti":"building statistical shape spaces for 3d human modeling", "Y":2015, "CC":1, "RId":[], "AA":[{"AuId":308162991,"AfId":149899117}, {"AuId":2014261844}, {"AuId":209677723}, {"AuId":214804705,"AfId":149899117}, {"AuId":1620943014,"AfId":149899117}] }, +{ "logprob":-20.429, "Id":2010532093, "Ti":"a low dimensional representation for robust partial isometric correspondences computation", "Y":2014, "CC":2, "RId":[2237250383, 1989191365, 2137306662, 1992187125, 2100657858, 2211546658, 1513908640, 2117888987, 2159361280, 2098578926, 2004402003, 2122578066, 2105106232, 1985290145, 2098466221, 2104198297, 2127025496, 2123487031, 2073431710, 1982465050, 2180873826, 1985222241, 1993846356, 1983445044, 2040436296, 1969076082, 2047161559, 1965805571, 2053126129, 2130595631, 2294879381, 2065270678, 1709959390, 2016663152, 2166606682, 2037149239, 2100187127, 2012385660, 2093544140, 2151917516, 2105591368, 2123631536, 2045323633, 1989995855, 2112192224, 2013273872], "AA":[{"AuId":1984903675,"AfId":149899117}, {"AuId":2101927313,"AfId":149899117}, {"AuId":2014261844}, {"AuId":2135052836,"AfId":149899117}, {"AuId":73181535,"AfId":149899117}], "J":{"JId":137436721} }, +{ "logprob":-20.483, "Id":2123631536, "Ti":"posture invariant correspondence of incomplete triangular manifolds", "Y":2011, "CC":10, "RId":[1989191365, 2051434435, 2159361280, 2143030836, 2091626191, 2140500712, 1999597013, 2041771459, 1997744504], "AA":[{"AuId":2014261844}, {"AuId":2132968838}, {"AuId":2120994602}, {"AuId":2127044776}], "J":{"JId":68340538} }, +{ "logprob":-20.486, "Id":1981018417, "Ti":"segmenting animated objects into near rigid components", "Y":2009, "CC":13, "RId":[2099789128, 2122007052, 2104480174, 2023808821, 1993962870, 2160994953, 1572663059, 2052728883, 2121717885, 2123487031, 2168907905, 2108891011, 1969076082, 2091715846, 2071894871, 2110340327, 2155953655, 2104680386, 2208573830], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":1984903675,"AfId":197604219}], "F":[{"FId":45633534}, {"FId":29123130}, {"FId":2524010}], "J":{"JId":73060445} }, +{ "logprob":-20.549, "Id":1987121049, "Ti":"human shape correspondence with automatically predicted landmarks", "Y":2012, "CC":4, "RId":[2119851068, 1540992968, 2099606917, 1989191365, 2104480174, 2098466221, 2115298906], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":2099631723,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}], "C":{"CId":1155500043} }, +{ "logprob":-20.668, "Id":1487445608, "Ti":"realistic reconfiguration of crystalline and telecube robots", "Y":2009, "CC":2, "RId":[1526777436, 2117416080, 2056453745, 2188492432], "AA":[{"AuId":76407621,"AfId":132053463}, {"AuId":2047536997,"AfId":132053463}, {"AuId":2139371818,"AfId":7863295}, {"AuId":380982395,"AfId":63966007}, {"AuId":1723144653,"AfId":60158472}, {"AuId":2300589195,"AfId":920285187}, {"AuId":695374658,"AfId":132053463}, {"AuId":1995729299,"AfId":202524275}, {"AuId":135182615,"AfId":35462925}, {"AuId":2102544858,"AfId":102322142}, {"AuId":1985301561,"AfId":9617848}, {"AuId":2014261844,"AfId":67031392}] }, +{ "logprob":-20.673, "Id":268639037, "Ti":"automatic location of landmarks used in manual anthropometry", "Y":2014, "CC":0, "RId":[2153635508, 2295332248, 2171490473, 1510526001, 1569530544, 2154980168, 1735588541, 1994359450, 2003014378, 2059393299, 1985851765, 2079294336], "AA":[{"AuId":2157123513,"AfId":119439378}, {"AuId":2131007269,"AfId":119439378}, {"AuId":1996155268,"AfId":119439378}, {"AuId":2103542331,"AfId":136259955}, {"AuId":2174370829,"AfId":60158472}, {"AuId":1965603897,"AfId":142476485}, {"AuId":2225981013,"AfId":99464096}, {"AuId":2134662681,"AfId":1321296531}, {"AuId":2139958683,"AfId":1321296531}, {"AuId":168721329,"AfId":142476485}, {"AuId":2232402393,"AfId":142476485}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2135990543,"AfId":99464096}, {"AuId":2096876795,"AfId":99464096}, {"AuId":728773384,"AfId":136259955}, {"AuId":2030948482,"AfId":99464096}, {"AuId":2014261844,"AfId":91712215}, {"AuId":2099631723,"AfId":197604219}] }, +{ "logprob":-20.718, "Id":2084142581, "Ti":"establishing strong connectivity using optimal radius half disk antennas", "Y":2013, "CC":3, "RId":[2093381928, 2104142168, 2120296177, 2009782889, 2112970581, 2102709759, 2154743412, 2147322856, 42897049], "AA":[{"AuId":76407621}, {"AuId":2139371818}, {"AuId":2300589195}, {"AuId":2140429713}, {"AuId":2280126321}, {"AuId":2133297015}, {"AuId":2014261844}], "F":[{"FId":64671776}, {"FId":13743678}, {"FId":94523657}, {"FId":114614502}, {"FId":33923547}], "J":{"JId":165542689} }, +{ "logprob":-20.718, "Id":2143039717, "Ti":"estimating 3d human shapes from measurements", "Y":2011, "CC":5, "RId":[2153504150, 2158179171, 2020466163, 2005645152, 2280326949, 2077557812, 2030575031, 1987121049], "AA":[{"AuId":2014261844,"AfId":91712215}, {"AuId":2132968838,"AfId":197604219}], "F":[{"FId":153180895}, {"FId":60627051}, {"FId":41008148}], "C":{"CId":1155500043} }, +{ "logprob":-20.781, "Id":2093088, "Ti":"correspondences of persistent feature points on near isometric surfaces", "Y":2012, "CC":1, "RId":[2222512263, 2137306662, 2166820607, 2100657858, 1590776313, 2064020260, 2130646036, 2161253909, 2105106232, 2127025496, 2123487031, 2073431710, 2146019744, 1969076082, 1970279742, 2102838323, 2147373864, 1993167366, 2095705972], "AA":[{"AuId":2276897403,"AfId":149899117}, {"AuId":2130756756,"AfId":149899117}, {"AuId":2014261844,"AfId":149899117}, {"AuId":1984903675}, {"AuId":1995219829}, {"AuId":2135052836,"AfId":149899117}, {"AuId":73181535,"AfId":149899117}], "C":{"CId":1124077590} }, +{ "logprob":-20.810, "Id":2149284486, "Ti":"automatically creating design models from 3d anthropometry data", "Y":2012, "CC":4, "RId":[1975442866, 2337065094, 334078648, 2211546658, 2104198297, 2100961486, 1944448249, 2157100308, 2067482733, 2028666973, 2003014378, 2036834050, 2055824434, 2159031003, 1995061439, 1503456783, 2170244379], "AA":[{"AuId":2014261844}, {"AuId":2132968838}, {"AuId":2120994602}], "F":[{"FId":73586568}, {"FId":46886674}, {"FId":39840566}, {"FId":29123130}, {"FId":2524010}, {"FId":33923547}], "J":{"JId":173178594} }, +{ "logprob":-20.817, "Id":184244079, "Ti":"pi 2 angle yao graphs are spanners", "Y":2010, "CC":3, "RId":[2031671531, 2095977717], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":2139371818,"AfId":7863295}, {"AuId":286320687,"AfId":67031392}, {"AuId":1995729299,"AfId":202524275}, {"AuId":812850721,"AfId":67031392}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":197604219}], "C":{"CId":1175727152} }, +{ "logprob":-20.828, "Id":2057922595, "Ti":"posture invariant surface description and feature extraction", "Y":2010, "CC":4, "RId":[2124386111, 2153504150, 2295382923, 1999690352, 1590776313, 2025062188, 2130646036, 2159361280, 2121717885, 2098578926, 2134448913, 1969076082, 2103525210, 2151694303, 2161813446], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":2127044776,"AfId":29607241}, {"AuId":2132968838,"AfId":197604219}], "F":[{"FId":178207025}, {"FId":194401833}, {"FId":52102323}, {"FId":181145010}, {"FId":9083635}, {"FId":77304879}, {"FId":124504099}, {"FId":64876066}, {"FId":97970142}, {"FId":52622490}, {"FId":198107850}, {"FId":1674844}, {"FId":205372480}, {"FId":9417928}, {"FId":31972630}, {"FId":41008148}], "C":{"CId":1158167855} }, +{ "logprob":-20.843, "Id":1988539193, "Ti":"three dimensional human shape inference from silhouettes reconstruction and validation", "Y":2011, "CC":4, "RId":[2104974755, 1989191365, 2117007522, 1999690352, 2164942161, 1494238748, 1967490225], "AA":[{"AuId":1970210942}, {"AuId":2132968838}, {"AuId":2014261844}, {"AuId":2099631723}], "C":{"CId":1155500043} }, +{ "logprob":-20.856, "Id":2048359624, "Ti":"fully automatic expression invariant face correspondence", "Y":2014, "CC":3, "RId":[2140190241, 2152826865, 2237250383, 2019599312, 334078648, 2051434435, 2137306662, 1992187125, 2161116336, 2153759571, 2159361280, 2098578926, 2137821246, 1985290145, 2130093472, 2135042441, 2135666716, 2158054470, 1976295221, 2097365005, 2104539097, 2047836041, 2116258886, 2128258626, 2151231840, 2003014378, 1967879679, 2159031003, 1966800193, 1601628837, 2093120612, 2136500581, 2102717885, 2086359182, 2148535600, 2306421343], "AA":[{"AuId":2331953835,"AfId":84593992}, {"AuId":2014261844,"AfId":91712215}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2099866554,"AfId":36243813}], "F":[{"FId":14961307}], "C":{"CId":1155500043} }, +{ "logprob":-20.887, "Id":2034643056, "Ti":"estimation of human body shape and posture under clothing", "Y":2014, "CC":1, "RId":[2159080219, 2099940712, 1540992968, 1989191365, 2051434435, 2104480174, 1999690352, 2211546658, 2159361280, 2158179171, 2122578066, 2071866949, 2165258384, 2098466221, 2088230067, 2109752307, 1993846356, 1965805571, 2075834168, 1944448249, 2074407824, 2154750607, 2026861142, 2159031003, 2080666679, 2114621449], "AA":[{"AuId":2014261844}, {"AuId":308162991,"AfId":149899117}, {"AuId":1984903675}, {"AuId":2305398014}, {"AuId":2308397549}], "J":{"JId":185008460} }, +{ "logprob":-20.910, "Id":1576311670, "Ti":"reconfiguration of 3d crystalline robots using o log n parallel moves", "Y":2009, "CC":0, "RId":[], "AA":[{"AuId":2311459076}, {"AuId":2305207799,"AfId":63966007}, {"AuId":380982395}, {"AuId":695374658}, {"AuId":1985301561}, {"AuId":2014261844}] }, +{ "logprob":-21.002, "Id":2114621449, "Ti":"posture invariant statistical shape analysis using laplace operator", "Y":2012, "CC":4, "RId":[2119350939, 334078648, 1989191365, 1999690352, 2211546658, 2125949583, 2169776045, 2104198297, 2158778494, 1909894032, 1993846356, 2052069724, 1944448249, 2106466172, 2074407824, 2103296388, 1520035080, 2073655956, 2120383035, 2036834050, 2086435606], "AA":[{"AuId":2014261844}, {"AuId":2132968838}, {"AuId":2099631723}], "F":[{"FId":165700671}], "J":{"JId":94821547} }, +{ "logprob":-21.034, "Id":1600526016, "Ti":"reconfiguration of cube style modular robots using o logn parallel moves", "Y":2008, "CC":0, "RId":[1526777436, 2164380970, 2126295536, 2117416080, 2056453745], "AA":[{"AuId":76407621,"AfId":132053463}, {"AuId":2047536997,"AfId":132053463}, {"AuId":380982395,"AfId":63966007}, {"AuId":695374658,"AfId":132053463}, {"AuId":1985301561,"AfId":9617848}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":120373497}, {"FId":41008148}, {"FId":33923547}], "C":{"CId":1175727152} }, +{ "logprob":-21.053, "Id":2089277703, "Ti":"posture invariant correspondence of triangular meshes in shape space", "Y":2009, "CC":4, "RId":[2049981393, 2099789128, 1989191365, 1999690352, 2159361280, 2123487031, 2153487529, 2143030836, 2068333134, 1486218565, 2061845601], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2120994602,"AfId":67031392}], "F":[{"FId":178207025}, {"FId":194401833}, {"FId":181145010}, {"FId":53533937}, {"FId":77660652}, {"FId":66024118}, {"FId":1674844}, {"FId":2524010}, {"FId":33923547}], "C":{"CId":1164975091} }, +{ "logprob":-21.055, "Id":2150635919, "Ti":"review of statistical shape spaces for 3d data with comparative analysis for human faces", "Y":2012, "CC":2, "RId":[2115755118, 2038952578, 2117188745, 334078648, 2085261163, 1989191365, 2051434435, 1992187125, 2211546658, 2125949583, 2166743687, 1544875853, 2142152601, 2104198297, 2135666716, 1976295221, 1993846356, 2104539097, 1965805571, 2075834168, 2069997605, 2074407824, 1575243757, 2067032877, 2012048984, 2063601108, 2163183381, 2066090933, 1995712965, 2134389879, 2154320156, 2163399942, 1553670630, 2030116982, 2143039717, 1988539193, 2114621449], "AA":[{"AuId":1984903675,"AfId":149899117}, {"AuId":2193757115}, {"AuId":57898110}, {"AuId":2014261844}], "J":{"JId":185008460} }, +{ "logprob":-21.072, "Id":2113000721, "Ti":"semi automatic prediction of landmarks on human models in varying poses", "Y":2010, "CC":2, "RId":[1999690352, 2113656553, 2159361280, 2123487031, 2153487529, 2074407824, 2037149239, 2003014378, 2036834050], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":2127044776,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}], "F":[{"FId":52102323}, {"FId":27511587}, {"FId":204707403}, {"FId":193293595}, {"FId":127011070}, {"FId":159886148}, {"FId":66024118}, {"FId":1674844}, {"FId":105795698}], "C":{"CId":1160896163} }, +{ "logprob":-21.079, "Id":2127958493, "Ti":"posture invariant gender classification for 3d human models", "Y":2009, "CC":2, "RId":[2135541996, 1999690352, 2161253909, 1971957654, 2014877967, 2002286769, 2003014378, 2103525210, 2146308415, 2112646535, 2162114735, 2230315448, 2141267000], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2001181309,"AfId":197604219}], "F":[{"FId":12267149}, {"FId":110083411}, {"FId":119857082}, {"FId":41008148}], "C":{"CId":1158167855} }, +{ "logprob":-21.095, "Id":2187479452, "Ti":"shrec 14 track automatic location of landmarks used in manual anthropometry", "Y":2014, "CC":1, "RId":[2295332248, 2019599312, 2171490473, 1510526001, 1569530544, 168966905, 2154980168, 1735588541, 1994359450, 2034105264, 2003014378, 2059393299, 1985851765, 2079294336, 2113000721], "AA":[{"AuId":2157123513}, {"AuId":2131007269}, {"AuId":1996155268}, {"AuId":2103542331}, {"AuId":2174370829}, {"AuId":1965603897}, {"AuId":2225981013}, {"AuId":2134662681}, {"AuId":2110580142}, {"AuId":168721329}, {"AuId":2116133272}, {"AuId":2135990543}, {"AuId":2096876795}, {"AuId":728773384}, {"AuId":2030948482}, {"AuId":2014261844}, {"AuId":2099631723}] }, +{ "logprob":-21.172, "Id":2010839818, "Ti":"tracking complete deformable objects with finite elements", "Y":2012, "CC":4, "RId":[], "AA":[{"AuId":2014261844}, {"AuId":2164413517}, {"AuId":2132968838}] }, +{ "logprob":-21.190, "Id":1520300017, "Ti":"linear reconfiguration of cube style modular robots", "Y":2007, "CC":0, "RId":[1526777436, 2117416080], "AA":[{"AuId":76407621,"AfId":132053463}, {"AuId":2047536997,"AfId":132053463}, {"AuId":2139371818,"AfId":7863295}, {"AuId":380982395,"AfId":63966007}, {"AuId":298322331,"AfId":920285187}, {"AuId":695374658,"AfId":132053463}, {"AuId":2108112919,"AfId":202524275}, {"AuId":2102544858,"AfId":178766854}, {"AuId":1985301561,"AfId":9617848}, {"AuId":2014261844,"AfId":67031392}], "C":{"CId":1175727152} }, +{ "logprob":-21.204, "Id":2030723399, "Ti":"a linear space algorithm for distance preserving graph embedding", "Y":2009, "CC":3, "RId":[2053186076, 2001141328, 2067752346, 2340006107, 2051434435, 1999690352, 2166164984, 2159361280, 2105082158, 1973264045, 2096141080, 2134201719, 1566976463, 2044028871, 1999823999, 1972859956, 2162114735, 2018998921], "AA":[{"AuId":2111668054,"AfId":177738480}, {"AuId":2120994602,"AfId":67031392}, {"AuId":2042195894,"AfId":67031392}, {"AuId":2154897350,"AfId":67031392}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":75564084}, {"FId":176370821}, {"FId":186450821}, {"FId":49847556}, {"FId":91682802}, {"FId":73555534}, {"FId":176012381}, {"FId":2524010}, {"FId":33923547}], "J":{"JId":165542689} }, +{ "logprob":-21.218, "Id":2080526711, "Ti":"3d faces in motion fully automatic registration and statistical analysis", "Y":2015, "CC":1, "RId":[1560013842, 2085261163, 1992187125, 2102924784, 2104425538, 2104198297, 2135666716, 1909894032, 1976295221, 32702425, 2143829622, 2104539097, 2038891881, 1965805571, 2166672191, 2069997605, 1575243757, 1990940174, 2067032877, 2012048984, 2163183381, 1995712965, 2003706019, 2087642411, 2134389879, 2011556862, 2012075579, 2096020629, 2052243599, 2162280462, 2089623493, 2136500581, 2030116982, 2149284486, 2048359624, 2076756054, 2087960557, 1590053313, 2021679049], "AA":[{"AuId":57898110}, {"AuId":2014261844}], "F":[{"FId":105795698}], "J":{"JId":185008460} }, +{ "logprob":-21.220, "Id":2119872517, "Ti":"a characterization of the degree sequences of 2 trees", "Y":2008, "CC":1, "RId":[301824129, 2087083200, 2336652925, 2064721098, 2005706719, 1592352976, 1598444089, 195844759, 2000204877, 2136019314, 1996874849, 2161839451, 2287138200, 2079721544], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":2284031192,"AfId":67031392}, {"AuId":270679271,"AfId":100538780}, {"AuId":695374658,"AfId":132053463}, {"AuId":2160857524,"AfId":67031392}, {"AuId":2158694965}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":48785453}, {"FId":132569581}, {"FId":114614502}, {"FId":33923547}], "J":{"JId":193368155} }, +{ "logprob":-21.229, "Id":2036688247, "Ti":"finite element based tracking of deforming surfaces", "Y":2015, "CC":0, "RId":[334078648, 2211546658, 2122578066, 2129494071, 2143703219, 1985290145, 2098466221, 2082254676, 2109752307, 2127374940, 1965805571, 2168685057, 2081927584, 2016663152, 1988179100, 2023560768, 2146700972, 2041855012, 2002980568, 2091593985, 2117541425, 2006303959, 2091843001, 2038837307], "AA":[{"AuId":2014261844,"AfId":91712215}, {"AuId":2164413517,"AfId":153718931}, {"AuId":2088902210,"AfId":153718931}, {"AuId":2132968838,"AfId":197604219}], "J":{"JId":137436721} }, +{ "logprob":-21.257, "Id":2114241394, "Ti":"pi 2 angle yao graphs are spanners", "Y":2010, "CC":0, "RId":[], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":2139371818,"AfId":7863295}, {"AuId":286320687,"AfId":67031392}, {"AuId":1995729299,"AfId":202524275}, {"AuId":812850721,"AfId":67031392}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":197604219}] }, +{ "logprob":-21.270, "Id":2251676003, "Ti":"3d faces in motion", "Y":2015, "CC":0, "RId":[2237250383, 2085261163, 2051434435, 2137306662, 1992187125, 2102924784, 2104425538, 2104198297, 1909894032, 1976295221, 32702425, 2104539097, 2146161009, 1575243757, 1990940174, 2067032877, 2003706019, 2129360799, 2087642411, 2011556862, 2096020629, 2162653225, 2089623493, 2075759375, 2093120612, 2136500581, 2030116982, 2149284486, 2164118058, 2087960557], "AA":[{"AuId":57898110,"AfId":91712215}, {"AuId":2014261844,"AfId":91712215}], "F":[{"FId":105795698}], "J":{"JId":185008460} }, +{ "logprob":-21.322, "Id":2124999587, "Ti":"image based model completion", "Y":2007, "CC":2, "RId":[2033819227, 2160014001, 2129098897, 2005126631, 1543226262, 2120977599, 1981940178, 1969549682, 2081507207, 1541700072, 2008151176, 2165455240, 1991845454, 2157688203, 2085858393, 2017477785, 1997641715, 140307293, 2279061013], "AA":[{"AuId":1984903675,"AfId":197604219}, {"AuId":2014261844,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}], "F":[{"FId":182310444}, {"FId":2524010}, {"FId":41008148}], "C":{"CId":1149416356} }, +{ "logprob":-21.331, "Id":2104765276, "Ti":"morphing of triangular meshes in shape space", "Y":2011, "CC":2, "RId":[], "AA":[{"AuId":2014261844}, {"AuId":2120994602}, {"AuId":2103437391}, {"AuId":1995729299}, {"AuId":1984903675}], "F":[{"FId":50637493}, {"FId":29123130}, {"FId":2524010}, {"FId":33923547}], "J":{"JId":68340538} }, +{ "logprob":-21.378, "Id":2063175732, "Ti":"rotationally monotone polygons", "Y":2009, "CC":1, "RId":[2149906774, 2129879687, 2139230981, 2126876121, 1825136300, 1481903970, 2063346183, 2045783875, 2080276023, 2306830116, 2022832678, 1553375877, 1997316506, 2034428396, 2028695830], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":2160857524,"AfId":67031392}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":197949415}, {"FId":72169020}, {"FId":2524010}, {"FId":33923547}], "J":{"JId":165542689} }, +{ "logprob":-21.386, "Id":2115896006, "Ti":"shape from suggestive contours using 3d priors", "Y":2012, "CC":1, "RId":[], "AA":[{"AuId":2014261844,"AfId":91712215}, {"AuId":2132968838}], "F":[{"FId":27438332}, {"FId":155650255}, {"FId":31510193}, {"FId":31972630}, {"FId":119857082}, {"FId":41008148}], "C":{"CId":1160896163} }, +{ "logprob":-21.387, "Id":2296729236, "Ti":"a low dimensional representation for robust partial isometric correspondences computation", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":1984903675}, {"AuId":2101927313}, {"AuId":2014261844}, {"AuId":73181535}, {"AuId":2135052836}] }, +{ "logprob":-21.432, "Id":2064761790, "Ti":"efficient reconfiguration of lattice based modular robots", "Y":2013, "CC":2, "RId":[1526777436, 2096537964, 1524850010, 2139714790, 2117416080, 2032768325, 2188492432, 2099361645, 1012009150, 2056053005], "AA":[{"AuId":76407621}, {"AuId":2059928011}, {"AuId":2139371818}, {"AuId":380982395}, {"AuId":2300589195}, {"AuId":2112876687}, {"AuId":2014261844}], "J":{"JId":165542689} }, +{ "logprob":-21.460, "Id":2027612430, "Ti":"bending invariant meshes and application to groupwise correspondences", "Y":2009, "CC":0, "RId":[2053186076, 2001141328, 2099789128, 1999690352, 1590776313, 2025062188, 2159361280, 2144083240, 2140500712, 1982366717, 2147647517, 2090320629, 2018110063, 1999597013, 1566976463, 2108258308, 92634156, 158821397], "AA":[{"AuId":2014261844,"AfId":197604219}, {"AuId":2132968838,"AfId":197604219}, {"AuId":1970210942,"AfId":197604219}, {"AuId":2159171761,"AfId":197604219}, {"AuId":2099631723,"AfId":197604219}], "F":[{"FId":194401833}, {"FId":165818556}, {"FId":181145010}, {"FId":120174047}, {"FId":77660652}, {"FId":66024118}, {"FId":106516650}, {"FId":1674844}, {"FId":192939610}, {"FId":2524010}, {"FId":33923547}], "C":{"CId":1164975091} }, +{ "logprob":-21.503, "Id":2231045347, "Ti":"realistic reconfiguration of crystalline and telecube robots", "Y":2008, "CC":1, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2047536997}, {"AuId":2139371818}, {"AuId":380982395}, {"AuId":1723144653}, {"AuId":298322331}, {"AuId":695374658}, {"AuId":1995729299}, {"AuId":135182615}, {"AuId":2102544858}, {"AuId":1586814107}, {"AuId":2014261844}] }, +{ "logprob":-21.511, "Id":2267768293, "Ti":"smi 2012 full posture invariant statistical shape analysis using laplace operator", "Y":2012, "CC":0, "RId":[334078648, 1989191365, 2051434435, 1631674738, 1999690352, 2125949583, 2144570481, 1944448249, 2036834050, 2096071249], "AA":[{"AuId":2014261844,"AfId":91712215}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2099631723,"AfId":197604219}], "F":[{"FId":165700671}], "J":{"JId":94821547} }, +{ "logprob":-21.512, "Id":62232106, "Ti":"characterization of partial intrinsic symmetries", "Y":2014, "CC":0, "RId":[1626653188, 1590776313, 1544875853, 2127025496, 2155957710, 2091791686, 2130518695, 2145093702, 2077031952, 2130595631, 2161271908, 2145524482, 2146527621, 2093544140, 1540641376, 2116077655, 2161420750, 2025044072, 2045323633, 2000403788, 2295140937, 1534713745, 2171851104, 2260540739], "AA":[{"AuId":2109044626,"AfId":91712215}, {"AuId":2060265658,"AfId":4923324}, {"AuId":2014261844,"AfId":91712215}, {"AuId":2101927313,"AfId":193662353}], "F":[{"FId":41008148}], "C":{"CId":1124077590} }, +{ "logprob":-21.527, "Id":2106341096, "Ti":"isometric morphing of triangular meshes", "Y":2008, "CC":1, "RId":[2140798815, 2147774191, 2048158019, 2154084374, 1542792704, 2014770458, 2144707889, 2168771843], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":1995729299,"AfId":202524275}, {"AuId":2132968838}, {"AuId":2014261844}], "F":[{"FId":194401833}, {"FId":171836373}, {"FId":33923547}], "C":{"CId":1201479284} }, +{ "logprob":-21.556, "Id":1668992945, "Ti":"morphing of triangular meshes in shape space", "Y":2008, "CC":0, "RId":[2122007052, 1572663059, 2151636374, 2142326458, 2147774191, 2095986812, 2091804476, 2048158019, 2154084374, 1944448249, 2098727428, 2092053444, 2036834050, 2144707889, 2030458754, 2106341096], "AA":[{"AuId":2014261844,"AfId":67031392}, {"AuId":2120994602,"AfId":67031392}, {"AuId":2132968838,"AfId":197604219}, {"AuId":1995729299}, {"AuId":1984903675,"AfId":153718931}] }, +{ "logprob":-21.561, "Id":1807911131, "Ti":"multilinear wavelets a statistical shape space for human faces", "Y":2014, "CC":0, "RId":[2117188745, 2071866949, 2142152601, 2135666716, 32702425, 1965805571, 2087642411, 2052243599, 2131202735, 1511946343], "AA":[{"AuId":2060265658,"AfId":4923324}, {"AuId":57898110,"AfId":91712215}, {"AuId":2014261844,"AfId":91712215}], "C":{"CId":1124077590} }, +{ "logprob":-21.722, "Id":1561451935, "Ti":"geodesic paths on 3d surfaces survey and open problems", "Y":2009, "CC":2, "RId":[], "AA":[{"AuId":2154897350}, {"AuId":2014261844}] }, +{ "logprob":-21.752, "Id":1973850282, "Ti":"algorithms for designing clamshell molds", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":2014261844}, {"AuId":2120994602}, {"AuId":2160857524}, {"AuId":2007139549}], "F":[{"FId":16635281}, {"FId":175700187}, {"FId":29123130}, {"FId":2524010}], "J":{"JId":143715161} }, +{ "logprob":-21.794, "Id":2162114735, "Ti":"approximations of geodesic distances for incomplete triangular manifolds", "Y":2007, "CC":3, "RId":[1999690352, 2161253909, 2159361280, 2108567935, 2104700297, 1999597013, 92634156, 158821397, 2018998921], "AA":[{"AuId":2127044776}, {"AuId":2120994602}, {"AuId":2132968838}, {"AuId":2014261844}], "F":[{"FId":165818556}, {"FId":2524010}, {"FId":33923547}], "C":{"CId":1201479284} }, +{ "logprob":-21.801, "Id":1553375877, "Ti":"rotational clamshell casting in three dimensions", "Y":2006, "CC":1, "RId":[], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":2160857524,"AfId":67031392}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":67031392}] }, +{ "logprob":-21.873, "Id":2310280492, "Ti":"a robust multilinear model learning framework for 3d faces", "Y":2016, "CC":0, "RId":[], "AA":[{"AuId":57898110}, {"AuId":2014261844}], "C":{"CId":1158167855} }, +{ "logprob":-21.889, "Id":2123817071, "Ti":"removing outliers to minimize area and perimeter", "Y":2006, "CC":1, "RId":[2048493433, 2042473201, 2167927607], "AA":[{"AuId":2057698039,"AfId":67031392}, {"AuId":2160857524,"AfId":67031392}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":206194317}, {"FId":2524010}, {"FId":33923547}], "C":{"CId":1201479284} }, +{ "logprob":-21.949, "Id":2055752405, "Ti":"3d anthropometric data processing", "Y":2012, "CC":1, "RId":[], "AA":[{"AuId":2132968838}, {"AuId":2014261844}, {"AuId":2099631723}], "J":{"JId":183335753} }, +{ "logprob":-21.979, "Id":2336233787, "Ti":"clamshell casting", "Y":2009, "CC":0, "RId":[301824129, 2126876121, 2059155916, 2067631433, 2292025986, 1538991644, 2085041675, 2113830395, 153494752, 180909918, 2125685982, 2002507856, 23500900], "AA":[{"AuId":2120994602,"AfId":67031392}, {"AuId":2160857524,"AfId":67031392}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":67031392}], "J":{"JId":89324355} }, +{ "logprob":-22.013, "Id":2141646866, "Ti":"linear space algorithms for distance preserving embedding", "Y":2007, "CC":0, "RId":[2166164984, 2134921160, 1973264045, 1999823999], "AA":[{"AuId":2111668054}, {"AuId":2120994602,"AfId":67031392}, {"AuId":2042195894,"AfId":67031392}, {"AuId":2154897350,"AfId":67031392}, {"AuId":2132968838,"AfId":197604219}, {"AuId":2007139549,"AfId":67031392}, {"AuId":2014261844,"AfId":67031392}], "F":[{"FId":75564084}, {"FId":176370821}, {"FId":186450821}, {"FId":87195055}, {"FId":2524010}, {"FId":33923547}], "C":{"CId":1201479284} }, +{ "logprob":-22.073, "Id":2261888986, "Ti":"fitting a 3d morphable model to edges a comparison between hard and soft correspondences", "Y":2016, "CC":0, "RId":[], "AA":[{"AuId":2269457212}, {"AuId":2253705556}, {"AuId":57898110}, {"AuId":2014261844}] }, +{ "logprob":-22.104, "Id":1808135090, "Ti":"a statistical shape space model of the palate surface trained on 3d mri scans of the vocal tract", "Y":2015, "CC":0, "RId":[], "AA":[{"AuId":2079520017}, {"AuId":2168222028}, {"AuId":57898110}, {"AuId":2014261844}, {"AuId":2158195643}] }, +{ "logprob":-22.120, "Id":1599889834, "Ti":"linear reconfiguration of cube style modular robots", "Y":2007, "CC":0, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2047536997}, {"AuId":1947593104}, {"AuId":380982395}, {"AuId":2300589195}, {"AuId":695374658}, {"AuId":1995729299}, {"AuId":2102544858}, {"AuId":1985301561}, {"AuId":2014261844}], "J":{"JId":106296714} }, +{ "logprob":-22.140, "Id":2180648442, "Ti":"a groupwise multilinear correspondence optimization for 3d faces", "Y":2015, "CC":0, "RId":[], "AA":[{"AuId":57898110}, {"AuId":2014261844}], "C":{"CId":1164975091} }, +{ "logprob":-22.143, "Id":1633576308, "Ti":"algorithms for optimal outlier removal 1 rossen atanassov prosenjit bose mathieu couture", "Y":2012, "CC":0, "RId":[], "AA":[{"AuId":2154897350}, {"AuId":2160857524}, {"AuId":2169685232}, {"AuId":2007139549}, {"AuId":2014261844}] }, +{ "logprob":-22.259, "Id":771468320, "Ti":"realistic reconfiguration of crystalline and teletube robots", "Y":2008, "CC":0, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2047536997}, {"AuId":2139371818}, {"AuId":380982395}, {"AuId":1723144653}, {"AuId":2300589195}, {"AuId":695374658}, {"AuId":1995729299}, {"AuId":135182615}, {"AuId":2102544858}, {"AuId":1985301561}, {"AuId":2014261844}] }, +{ "logprob":-22.266, "Id":2269332872, "Ti":"matching and morphing of isometric models", "Y":2009, "CC":1, "RId":[], "AA":[{"AuId":2014261844,"AfId":67031392}] }, +{ "logprob":-22.289, "Id":1658042064, "Ti":"analysis of farthest point sampling for approximating geodesics in a graph", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":195882947}, {"AuId":2241594721}, {"AuId":2154897350}, {"AuId":2014261844}], "F":[{"FId":101837359}, {"FId":148764684}, {"FId":114614502}, {"FId":33923547}], "J":{"JId":165542689} }, +{ "logprob":-22.389, "Id":2295413353, "Ti":"establishing strong connectivity using optimal radius half disk antennas", "Y":2011, "CC":1, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2139371818}, {"AuId":298322331}, {"AuId":2140429713}, {"AuId":2280126321}, {"AuId":2133297015}, {"AuId":2014261844}], "C":{"CId":1201479284} }, +{ "logprob":-22.393, "Id":2051898570, "Ti":"filling holes in triangular meshes using digital images by curve unfolding", "Y":2011, "CC":1, "RId":[2033819227, 2160014001, 2099789128, 1977758817, 2129412583, 2051434435, 2061010610, 2237825899, 2129098897, 2005126631, 1543226262, 2120977599, 1998255762, 2111240761, 2171542563, 1981940178, 2081507207, 2151214419, 2071111253, 2045471990, 2145093702, 1541700072, 2121669559, 2008151176, 2165455240, 1909076809, 2018110063, 2038126344, 1991845454, 2056725994, 1583585595, 2008888582, 2034609976, 1708197474, 2007847953, 2042254269, 1966871317, 2084188728, 2017477785, 1997641715, 2105522022, 140307293, 2279061013], "AA":[{"AuId":1984903675}, {"AuId":2014261844}, {"AuId":2103437391}, {"AuId":2120994602}, {"AuId":380982395}], "J":{"JId":68340538} }, +{ "logprob":-22.425, "Id":2294545116, "Ti":"efficient reconfiguration of lattice based modular robots", "Y":2009, "CC":1, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2059928011}, {"AuId":2139371818}, {"AuId":380982395}, {"AuId":298322331}, {"AuId":2112876687}, {"AuId":2014261844}] }, +{ "logprob":-22.435, "Id":2296577209, "Ti":"how to cite this article", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2047536997}, {"AuId":2139371818}, {"AuId":380982395}, {"AuId":1827704974}, {"AuId":695374658}, {"AuId":135182615}, {"AuId":2102544858}, {"AuId":1985301561}, {"AuId":2014261844}, {"AuId":2295413464}] }, +{ "logprob":-22.713, "Id":2180134226, "Ti":"a characterization of the degree sequences of 2 trees", "Y":2007, "CC":0, "RId":[], "AA":[{"AuId":2120994602}, {"AuId":1973971504}, {"AuId":270679271}, {"AuId":695374658}, {"AuId":2160857524}, {"AuId":2158694965}, {"AuId":2014261844}] }, +{ "logprob":-22.736, "Id":2199709889, "Ti":"a characterization of the degree sequences of 2 trees", "Y":2006, "CC":0, "RId":[], "AA":[{"AuId":2120994602}, {"AuId":1973971504}, {"AuId":270679271}, {"AuId":695374658}, {"AuId":2160857524}, {"AuId":2158694965}, {"AuId":2014261844}] }, +{ "logprob":-22.768, "Id":2294962059, "Ti":"rotationally monotone polygons", "Y":2006, "CC":0, "RId":[], "AA":[{"AuId":2120994602}, {"AuId":2160857524}, {"AuId":2007139549}, {"AuId":2014261844}], "C":{"CId":1201479284} }, +{ "logprob":-22.863, "Id":2052207545, "Ti":"a general framework to generate sizing systems from 3d motion data applied to face mask design", "Y":2014, "CC":0, "RId":[2237250383, 334078648, 2137306662, 2211546658, 1566413196, 2157100308, 2028666973, 2163131540, 2052243599, 1963954287, 2162048995, 2138930031, 2030740176, 2149284486], "AA":[{"AuId":57898110}, {"AuId":2120994602}, {"AuId":2132968838}, {"AuId":2014261844}] }, +{ "logprob":-22.885, "Id":2225840200, "Ti":"filling holes in triangular meshes by curve unfolding", "Y":2009, "CC":0, "RId":[], "AA":[{"AuId":380982395}, {"AuId":2120994602}, {"AuId":2132968838}, {"AuId":2014261844}, {"AuId":1984903675}] }, +{ "logprob":-22.891, "Id":761823114, "Ti":"communaute francaise de belgique arc", "Y":2009, "CC":0, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2047536997}, {"AuId":2139371818}, {"AuId":380982395}, {"AuId":1723144653}, {"AuId":1827704974}, {"AuId":695374658}, {"AuId":135182615}, {"AuId":2102544858}, {"AuId":1985301561}, {"AuId":2014261844}, {"AuId":2137867949}, {"AuId":2140062869}, {"AuId":2045170451}] }, +{ "logprob":-22.891, "Id":2241341858, "Ti":"linear reconfiguration of cube style modular robots", "Y":2009, "CC":0, "RId":[], "AA":[{"AuId":380982395}, {"AuId":76407621}, {"AuId":2047536997}, {"AuId":2139371818}, {"AuId":695374658}, {"AuId":2108112919}, {"AuId":2102544858}, {"AuId":2014261844}] }, +{ "logprob":-22.891, "Id":829689105, "Ti":"efficient reconfiguration for lattice based modular robots", "Y":2009, "CC":0, "RId":[], "AA":[{"AuId":76407621}, {"AuId":2059928011}, {"AuId":2139371818}, {"AuId":380982395}, {"AuId":2300589195}, {"AuId":2112876687}, {"AuId":2014261844}] }, +{ "logprob":-22.929, "Id":2293810765, "Ti":"a hybrid approach to 3d tongue modeling from vocal tract mri using unsupervised image segmentation and mesh deformation", "Y":2014, "CC":0, "RId":[], "AA":[{"AuId":2079520017}, {"AuId":2168222028}, {"AuId":2014261844}], "C":{"CId":1177287137} }, +{ "logprob":-23.063, "Id":2294471017, "Ti":"a statistical shape space model of the palate surface trained on 3d mri scans of the vocal tract", "Y":2016, "CC":0, "RId":[], "AA":[{"AuId":2079520017}, {"AuId":2168222028}, {"AuId":57898110}, {"AuId":2014261844}, {"AuId":2158195643}] }, +{ "logprob":-23.205, "Id":2296119166, "Ti":"automatically creating design models from 3d anthropometry data", "Y":2011, "CC":0, "RId":[], "AA":[{"AuId":2014261844}, {"AuId":2132968838}, {"AuId":2120994602}] }, +{ "logprob":-23.359, "Id":2179812682, "Ti":"statistical shape spaces for 3d data a review", "Y":2016, "CC":0, "RId":[], "AA":[{"AuId":1984903675}, {"AuId":2331953835}, {"AuId":57898110}, {"AuId":2014261844}] }, +{ "logprob":-23.364, "Id":2337456168, "Ti":"analysis of farthest point sampling for approximating geodesics in a graph", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":195882947}, {"AuId":2241594721}, {"AuId":2154897350}, {"AuId":2014261844}] }, +{ "logprob":-23.394, "Id":2293869343, "Ti":"fully automatic expression invariant face correspondence", "Y":2012, "CC":0, "RId":[], "AA":[{"AuId":2309876607}, {"AuId":2014261844}, {"AuId":2132968838}, {"AuId":2099866554}] }, +{ "logprob":-23.397, "Id":2184304798, "Ti":"order type invariant labeling and comparison of point sets", "Y":2012, "CC":0, "RId":[2157266306, 16939786, 1967443570, 1966030595, 2129175815, 1968264007, 2034752889, 2052653263, 2020541197], "AA":[{"AuId":2188808206}, {"AuId":2112876687}, {"AuId":695374658}, {"AuId":2102544858}, {"AuId":2014261844}] }, +{ "logprob":-23.519, "Id":2294893056, "Ti":"finite element based tracking of deforming surfaces", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":2014261844}, {"AuId":2164413517}, {"AuId":2088902210}, {"AuId":2132968838}] }, +{ "logprob":-23.519, "Id":2295845112, "Ti":"estimation of human body shape and posture under clothing", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":2014261844}, {"AuId":308162991}, {"AuId":1984903675}, {"AuId":2132968838}, {"AuId":2164413517}] }, +{ "logprob":-23.519, "Id":2064118604, "Ti":"from 3 d scans to design tools", "Y":2013, "CC":0, "RId":[], "AA":[{"AuId":2132968838}, {"AuId":2031320464}, {"AuId":2014261844}] }, +{ "logprob":-23.587, "Id":2296127659, "Ti":"multilinear wavelets a statistical shape space for human faces", "Y":2014, "CC":0, "RId":[], "AA":[{"AuId":1984903675}, {"AuId":57898110}, {"AuId":2014261844}] }, +{ "logprob":-23.733, "Id":2188958145, "Ti":"establishing strong connectivity using optimal", "Y":2012, "CC":0, "RId":[2102709759, 42897049], "AA":[{"AuId":2181913596}, {"AuId":2300589195}, {"AuId":2140429713}, {"AuId":2133297015}, {"AuId":2014261844}] }, +{ "logprob":-23.747, "Id":2295499190, "Ti":"estimating 3d human shapes from measurements", "Y":2011, "CC":0, "RId":[], "AA":[{"AuId":2014261844}, {"AuId":2132968838}] }, +{ "logprob":-23.815, "Id":2296099950, "Ti":"comparative analysis of statistical shape spaces", "Y":2012, "CC":0, "RId":[], "AA":[{"AuId":1984903675}, {"AuId":2331953835}, {"AuId":57898110}, {"AuId":2014261844}] }, +{ "logprob":-23.815, "Id":2249684012, "Ti":"review and comparative analysis of statistical shape spaces of 3d data", "Y":2012, "CC":0, "RId":[2115755118, 2038952578, 2237250383, 2137306662, 1992187125, 2125949583, 1566413196, 2152826766, 2158179171, 2142152601, 2088230067, 1976295221, 2100484145, 1520005879, 2075834168, 2074407824, 1992475172, 2156736396, 2166468061, 1575243757, 2163183381, 2066090933, 2131202735, 2110733656, 1553670630, 2149466360, 1511946343, 2030575031, 2030116982, 108644101, 2131039592, 2147886171, 1912889008, 1533103600], "AA":[{"AuId":1984903675}, {"AuId":2331953835}, {"AuId":57898110}, {"AuId":2014261844}] }] +} + diff --git a/2.txt b/2.txt new file mode 100644 index 0000000..6deb5b3 --- /dev/null +++ b/2.txt @@ -0,0 +1 @@ +[[2126125555, 41008148, 2119479037, 2060367530], [2126125555, 41008148, 2132549764, 2060367530], [2126125555, 41008148, 1995903777, 2060367530], [2126125555, 41008148, 2172000360, 2060367530], [2126125555, 41008148, 1648445109, 2060367530], [2126125555, 41008148, 2153233077, 2060367530], [2126125555, 41008148, 2143426320, 2060367530], [2126125555, 150899416, 2165698076, 2060367530], [2126125555, 83665646, 2165698076, 2060367530], [2126125555, 41008148, 2165698076, 2060367530], [2126125555, 2109031554, 2165698076, 2060367530], [2126125555, 41008148, 2108995755, 2060367530], [2126125555, 41008148, 2158001550, 2060367530], [2126125555, 41008148, 2096335861, 2060367530], [2126125555, 136389625, 2104290444, 2060367530], [2126125555, 41008148, 2104290444, 2060367530], [2126125555, 41008148, 2104978738, 2060367530], [2126125555, 41008148, 2108728387, 2060367530], [2126125555, 83665646, 2132870739, 2060367530], [2126125555, 41008148, 2132870739, 2060367530], [2126125555, 41008148, 1970088130, 2060367530], [2126125555, 41008148, 2143040521, 2060367530], [2126125555, 41008148, 2158994553, 2060367530], [2126125555, 83665646, 2102794349, 2060367530], [2126125555, 136389625, 2102794349, 2060367530], [2126125555, 41008148, 2142623206, 2060367530], [2126125555, 41008148, 2046589280, 2060367530], [2126125555, 41008148, 2133864802, 2060367530], [2126125555, 41008148, 1608462934, 2060367530], [2126125555, 83665646, 2157239837, 2060367530], [2126125555, 41008148, 2157239837, 2060367530], [2126125555, 41008148, 2156106639, 2060367530], [2126125555, 41008148, 2157791002, 2060367530], [2126125555, 41008148, 2141695047, 2060367530], [2126125555, 41008148, 2031248101, 2060367530], [2126125555, 41008148, 2145310492, 2060367530], [2126125555, 41008148, 2138079527, 2060367530], [2126125555, 41008148, 2124101779, 2060367530], [2126125555, 136389625, 2130903752, 2060367530], [2126125555, 41008148, 2130903752, 2060367530], [2126125555, 41008148, 2136251662, 2060367530], [2126125555, 41008148, 2070771761, 2060367530], [2126125555, 136389625, 2109531142, 2060367530], [2126125555, 41008148, 2109531142, 2060367530], [2126125555, 41008148, 2125687218, 2060367530], [2126125555, 41008148, 2118286367, 2060367530], [2126125555, 41008148, 2159737176, 2060367530], [2126125555, 41008148, 2164456230, 2060367530], [2126125555, 41008148, 2149427297, 2060367530], [2126125555, 41008148, 2000651380, 2060367530], [2126125555, 41008148, 2120814856, 2060367530], [2126125555, 41008148, 2147898188, 2060367530], [2126125555, 41008148, 2131697388, 2060367530], [2126125555, 41008148, 2111557120, 2060367530], [2126125555, 41008148, 2117500881, 2060367530], [2126125555, 41008148, 2119040605, 2060367530], [2126125555, 41008148, 2126326837, 2060367530], [2126125555, 41008148, 2143304877, 2060367530], [2126125555, 41008148, 2154740476, 2060367530], [2126125555, 136389625, 2129018774, 2060367530], [2126125555, 41008148, 2129018774, 2060367530], [2126125555, 41008148, 2124225314, 2060367530], [2126125555, 41008148, 2115358726, 2060367530], [2126125555, 41008148, 2127176025, 2060367530], [2126125555, 41008148, 2144752499, 2060367530], [2126125555, 41008148, 2105055468, 2060367530], [2126125555, 83665646, 2150579376, 2060367530], [2126125555, 136389625, 2150579376, 2060367530], [2126125555, 41008148, 2150579376, 2060367530], [2126125555, 41008148, 2104269704, 2060367530], [2126125555, 41008148, 1543810117, 2060367530], [2126125555, 41008148, 2138627627, 2060367530], [2126125555, 41008148, 2159727956, 2060367530], [2126125555, 41008148, 2108859253, 2060367530], [2126125555, 41008148, 2168239064, 2060367530], [2126125555, 41008148, 1602492977, 2060367530], [2126125555, 41008148, 1970689298, 2060367530], [2126125555, 41008148, 2143104527, 2060367530], [2126125555, 41008148, 2160979370, 2060367530], [2126125555, 41008148, 2139461634, 2060367530], [2126125555, 41008148, 2161444669, 2060367530], [2126125555, 41008148, 1714704734, 2060367530], [2126125555, 41008148, 2107369107, 2060367530], [2126125555, 41008148, 2157963336, 2060367530], [2126125555, 41008148, 2106488920, 2060367530], [2126125555, 41008148, 2116948717, 2060367530], [2126125555, 41008148, 2096451472, 2060367530], [2126125555, 41008148, 2138043057, 2060367530], [2126125555, 41008148, 2108767394, 2060367530], [2126125555, 41008148, 2137253512, 2060367530], [2126125555, 41008148, 2121069620, 2060367530], [2126125555, 136389625, 2148029428, 2060367530], [2126125555, 41008148, 2148029428, 2060367530], [2126125555, 41008148, 2169570643, 2060367530], [2126125555, 41008148, 2168108030, 2060367530], [2126125555, 41008148, 2115682519, 2060367530], [2126125555, 41008148, 2170858770, 2060367530], [2126125555, 41008148, 2153290280, 2060367530], [2126125555, 41008148, 2163362093, 2060367530], [2126125555, 41008148, 2132996843, 2060367530], [2126125555, 41008148, 2163584563, 2060367530], [2126125555, 41008148, 2168441989, 2060367530], [2126125555, 41008148, 2116079122, 2060367530], [2126125555, 41008148, 2105026179, 2060367530], [2126125555, 136389625, 2146571341, 2060367530], [2126125555, 41008148, 2146571341, 2060367530], [2126125555, 41008148, 2150581781, 2060367530], [2126125555, 41008148, 2151531457, 2060367530], [2126125555, 41008148, 2166474856, 2060367530], [2126125555, 41008148, 1491300635, 2060367530], [2126125555, 41008148, 2147278565, 2060367530], [2126125555, 41008148, 2104049510, 2060367530], [2126125555, 41008148, 1647376582, 2060367530], [2126125555, 41008148, 2110298216, 2060367530], [2126125555, 41008148, 2058915639, 2060367530], [2126125555, 41008148, 2128589733, 2060367530], [2126125555, 41008148, 2156135142, 2060367530], [2126125555, 41008148, 2118312744, 2060367530], [2126125555, 41008148, 2140479099, 2060367530], [2126125555, 41008148, 2163496225, 2060367530], [2126125555, 41008148, 2089927030, 2060367530], [2126125555, 41008148, 2121033924, 2060367530], [2126125555, 41008148, 2119970915, 2060367530], [2126125555, 41008148, 2170960297, 2060367530], [2126125555, 136389625, 2133458583, 2060367530], [2126125555, 41008148, 2133458583, 2060367530], [2126125555, 41008148, 2163406054, 2060367530], [2126125555, 41008148, 2168138569, 2060367530], [2126125555, 41008148, 2144469199, 2060367530], [2126125555, 41008148, 2125654608, 2060367530], [2126125555, 41008148, 2169243280, 2060367530], [2126125555, 41008148, 2113584252, 2060367530], [2126125555, 41008148, 2172064003, 2060367530], [2126125555, 41008148, 2161663128, 2060367530], [2126125555, 83665646, 2129156852, 2060367530], [2126125555, 41008148, 2129156852, 2060367530], [2126125555, 41008148, 2120587290, 2060367530], [2126125555, 41008148, 2141007997, 2060367530], [2126125555, 41008148, 2122565017, 2060367530], [2126125555, 83665646, 2111440106, 2060367530], [2126125555, 41008148, 2104908641, 2060367530], [2126125555, 41008148, 1965059296, 2060367530], [2126125555, 136389625, 2122945697, 2060367530], [2126125555, 41008148, 2152414269, 2060367530], [2126125555, 41008148, 1981082061, 2060367530], [2126125555, 83665646, 2133396101, 2060367530], [2126125555, 41008148, 2133396101, 2060367530], [2126125555, 41008148, 2154502311, 2060367530], [2126125555, 41008148, 2125675750, 2060367530], [2126125555, 83665646, 2107014760, 2060367530], [2126125555, 41008148, 2107014760, 2060367530], [2126125555, 83665646, 2125877832, 2060367530], [2126125555, 41008148, 2125877832, 2060367530], [2126125555, 41008148, 2119874464, 2060367530], [2126125555, 41008148, 1524688041, 2060367530], [2126125555, 41008148, 2067767241, 2060367530], [2126125555, 41008148, 2157770256, 2060367530], [2126125555, 41008148, 2108113956, 2060367530], [2126125555, 41008148, 2095652037, 2060367530], [2126125555, 41008148, 2099760476, 2060367530], [2126125555, 41008148, 2100967622, 2060367530], [2126125555, 41008148, 2133984628, 2060367530], [2126125555, 41008148, 1493036841, 2060367530], [2126125555, 41008148, 2165922980, 2060367530], [2126125555, 41008148, 1973560868, 2060367530], [2126125555, 41008148, 1967511636, 2060367530], [2126125555, 41008148, 2139526185, 2060367530], [2126125555, 41008148, 2044459470, 2060367530], [2126125555, 41008148, 2161723275, 2060367530], [2126125555, 44249647, 2151726393, 2060367530], [2126125555, 41008148, 2138477898, 2060367530], [2126125555, 41008148, 2131153423, 2060367530], [2126125555, 41008148, 2074445922, 2060367530], [2126125555, 41008148, 2142431032, 2060367530], [2126125555, 41008148, 2150588363, 2060367530], [2126125555, 41008148, 2159237780, 2060367530], [2126125555, 41008148, 2107598685, 2060367530], [2126125555, 41008148, 2161878953, 2060367530], [2126125555, 41008148, 2150045166, 2060367530], [2126125555, 41008148, 2122946987, 2060367530], [2126125555, 41008148, 2157176527, 2060367530], [2126125555, 41008148, 2169743536, 2060367530], [2126125555, 41008148, 2114232233, 2060367530], [2126125555, 41008148, 2101109743, 2060367530], [2126125555, 41008148, 2129809168, 2060367530], [2126125555, 41008148, 2075710390, 2060367530], [2126125555, 41008148, 1845402413, 2060367530], [2126125555, 41008148, 2153534417, 2060367530], [2126125555, 41008148, 1792685479, 2060367530], [2126125555, 41008148, 2099841076, 2060367530], [2126125555, 41008148, 2100537461, 2060367530], [2126125555, 41008148, 2103077782, 2060367530], [2126125555, 41008148, 2098369756, 2060367530], [2126125555, 136389625, 2148830179, 2060367530], [2126125555, 41008148, 2148830179, 2060367530], [2126125555, 41008148, 2162033093, 2060367530], [2126125555, 41008148, 2170756173, 2060367530], [2126125555, 41008148, 2123330025, 2060367530], [2126125555, 41008148, 2018671131, 2060367530], [2126125555, 41008148, 2138907228, 2060367530], [2126125555, 41008148, 2148219066, 2060367530], [2126125555, 41008148, 2110899801, 2060367530], [2126125555, 41008148, 2159549127, 2060367530], [2126125555, 41008148, 2133568543, 2060367530], [2126125555, 41008148, 2152066136, 2060367530], [2126125555, 41008148, 2133774033, 2060367530], [2126125555, 41008148, 2160829192, 2060367530], [2126125555, 41008148, 1567012231, 2060367530], [2126125555, 41008148, 2121950477, 2060367530], [2126125555, 41008148, 1968763291, 2060367530], [2126125555, 41008148, 2115322217, 2060367530], [2126125555, 41008148, 2292825768, 2060367530], [2126125555, 41008148, 2107710506, 2060367530], [2126125555, 83665646, 2153477625, 2060367530], [2126125555, 41008148, 2153477625, 2060367530], [2126125555, 41008148, 2137190664, 2060367530], [2126125555, 41008148, 2128097790, 2060367530], [2126125555, 41008148, 2152799677, 2060367530], [2126125555, 41008148, 2165796970, 2060367530], [2126125555, 41008148, 2137736727, 2060367530], [2126125555, 41008148, 2048522269, 2060367530], [2126125555, 41008148, 2034489756, 2060367530], [2126125555, 41008148, 2095885101, 2060367530], [2126125555, 136389625, 2156398782, 2060367530], [2126125555, 41008148, 2156398782, 2060367530], [2126125555, 41008148, 2162854380, 2060367530], [2126125555, 41008148, 2144287333, 2060367530], [2126125555, 41008148, 2139334285, 2060367530], [2126125555, 41008148, 2107753812, 2060367530], [2126125555, 41008148, 2104226279, 2060367530], [2126125555, 41008148, 2163624601, 2060367530], [2126125555, 41008148, 2000023271, 2060367530], [2126125555, 197046077, 1997838466, 2060367530], [2126125555, 41008148, 1997838466, 2060367530], [2126125555, 41008148, 2143628522, 2060367530], [2126125555, 41008148, 2111427896, 2060367530], [2126125555, 41008148, 2157677694, 2060367530], [2126125555, 41008148, 2123636872, 2060367530], [2126125555, 41008148, 2029296527, 2060367530], [2126125555, 41008148, 2164012765, 2060367530], [2126125555, 41008148, 2106589580, 2060367530], [2126125555, 41008148, 2107333657, 2060367530], [2126125555, 41008148, 1987486061, 2060367530], [2126125555, 41008148, 1583555936, 2060367530], [2126125555, 136389625, 2155487617, 2060367530], [2126125555, 41008148, 2155487617, 2060367530], [2126125555, 41008148, 2162657934, 2060367530], [2126125555, 41008148, 2146194630, 2060367530], [2126125555, 41008148, 2124735751, 2060367530], [2126125555, 41008148, 2155398148, 2060367530], [2126125555, 41008148, 2056894934, 2060367530], [2126125555, 41008148, 2118556122, 2060367530], [2126125555, 41008148, 2145276325, 2060367530], [2126125555, 41008148, 2152939563, 2060367530], [2126125555, 136389625, 2159570078, 2060367530], [2126125555, 41008148, 2159570078, 2060367530], [2126125555, 41008148, 2128036349, 2060367530], [2126125555, 41008148, 2114338449, 2060367530], [2126125555, 83665646, 2120738995, 2060367530], [2126125555, 41008148, 2120738995, 2060367530], [2126125555, 41008148, 2118142823, 2060367530], [2126125555, 41008148, 2081301924, 2060367530], [2126125555, 41008148, 2114252863, 2060367530], [2126125555, 41008148, 2171428093, 2060367530], [2126125555, 41008148, 2131864940, 2060367530], [2126125555, 41008148, 2145721853, 2060367530], [2126125555, 136389625, 2157958821, 2060367530], [2126125555, 41008148, 2157958821, 2060367530], [2126125555, 41008148, 2121035740, 2060367530], [2126125555, 41008148, 2127551029, 2060367530], [2126125555, 41008148, 2097665214, 2060367530], [2126125555, 41008148, 2147071755, 2060367530], [2126125555, 41008148, 2161160446, 2060367530], [2126125555, 41008148, 2004320486, 2060367530], [2126125555, 41008148, 2019432531, 2060367530], [2126125555, 41008148, 2145635005, 2060367530], [2126125555, 41008148, 2122006243, 2060367530], [2126125555, 41008148, 1977117871, 2060367530], [2126125555, 41008148, 2092253051, 2060367530], [2126125555, 136389625, 1972222614, 2060367530], [2126125555, 41008148, 1972222614, 2060367530], [2126125555, 41008148, 2165447611, 2060367530], [2126125555, 41008148, 1822246767, 2060367530], [2126125555, 41008148, 2108271008, 2060367530], [2126125555, 41008148, 2111336388, 2060367530], [2126125555, 41008148, 2100221277, 2060367530], [2126125555, 41008148, 2162619882, 2060367530], [2126125555, 41008148, 2153366199, 2060367530], [2126125555, 41008148, 1972785704, 2060367530], [2126125555, 41008148, 2148477345, 2060367530], [2126125555, 41008148, 2167257481, 2060367530], [2126125555, 41008148, 2090224109, 2060367530], [2126125555, 41008148, 2097827365, 2060367530], [2126125555, 41008148, 126543085, 2060367530], [2126125555, 41008148, 2154221499, 2060367530], [2126125555, 41008148, 2067562626, 2060367530], [2126125555, 41008148, 2064474534, 2060367530], [2126125555, 41008148, 2121921208, 2060367530], [2126125555, 41008148, 2120929742, 2060367530], [2126125555, 41008148, 1540358749, 2060367530], [2126125555, 41008148, 2169502938, 2060367530], [2126125555, 41008148, 2167139585, 2060367530], [2126125555, 41008148, 2111377143, 2060367530], [2126125555, 41008148, 2150452800, 2060367530], [2126125555, 83665646, 2161195767, 2060367530], [2126125555, 41008148, 2161195767, 2060367530], [2126125555, 41008148, 2131612655, 2060367530], [2126125555, 41008148, 2132360759, 2060367530], [2126125555, 41008148, 2085443648, 2060367530], [2126125555, 41008148, 2145815109, 2060367530], [2126125555, 41008148, 2145473366, 2060367530], [2126125555, 41008148, 2083911205, 2060367530], [2126125555, 41008148, 1987859285, 2060367530], [2126125555, 41008148, 2021211279, 2060367530], [2126125555, 41008148, 2063112000, 2060367530], [2126125555, 41008148, 2082081125, 2060367530], [2126125555, 41008148, 2140077863, 2060367530], [2126125555, 41008148, 2151203917, 2060367530], [2126125555, 41008148, 2114966857, 2060367530], [2126125555, 41008148, 2122361883, 2060367530], [2126125555, 41008148, 1970424517, 2060367530], [2126125555, 41008148, 2162401840, 2060367530], [2126125555, 41008148, 1890374229, 2060367530], [2126125555, 41008148, 2167360858, 2060367530], [2126125555, 41008148, 2063867591, 2060367530], [2126125555, 41008148, 2094084140, 2060367530], [2126125555, 41008148, 2033354942, 2060367530], [2126125555, 41008148, 2017065517, 2060367530], [2126125555, 41008148, 2169027522, 2060367530], [2126125555, 41008148, 2097775060, 2060367530], [2126125555, 41008148, 2134473538, 2060367530], [2126125555, 83665646, 2149551942, 2060367530], [2126125555, 41008148, 2149551942, 2060367530], [2126125555, 41008148, 2054371124, 2060367530], [2126125555, 41008148, 2094023061, 2060367530], [2126125555, 41008148, 1967333634, 2060367530], [2126125555, 41008148, 2154054404, 2060367530], [2126125555, 41008148, 2090091537, 2060367530], [2126125555, 41008148, 1970942140, 2060367530], [2126125555, 41008148, 1983998816, 2060367530], [2126125555, 41008148, 2103179193, 2060367530], [2126125555, 41008148, 2121111408, 2060367530], [2126125555, 41008148, 2170708028, 2060367530], [2126125555, 41008148, 2103291381, 2060367530], [2126125555, 41008148, 2052495112, 2060367530], [2126125555, 41008148, 2054160901, 2060367530], [2126125555, 41008148, 2118064259, 2060367530], [2126125555, 41008148, 2164939051, 2060367530], [2126125555, 41008148, 2094579227, 2060367530], [2126125555, 41008148, 2163973188, 2060367530], [2126125555, 41008148, 2069165391, 2060367530], [2126125555, 41008148, 1974776350, 2060367530], [2126125555, 83665646, 2162275200, 2060367530], [2126125555, 41008148, 2162275200, 2060367530], [2126125555, 41008148, 1992666150, 2060367530], [2126125555, 41008148, 2125730438, 2060367530], [2126125555, 83665646, 2158413235, 2060367530], [2126125555, 136389625, 2158413235, 2060367530], [2126125555, 41008148, 2158413235, 2060367530], [2126125555, 41008148, 2010425280, 2060367530], [2126125555, 41008148, 2144092555, 2060367530], [2126125555, 41008148, 2167136297, 2060367530], [2126125555, 41008148, 2168022998, 2060367530], [2126125555, 41008148, 1709057194, 2060367530], [2126125555, 41008148, 2038567802, 2060367530], [2126125555, 41008148, 2106717332, 2060367530], [2126125555, 41008148, 2101278914, 2060367530], [2126125555, 41008148, 2142012908, 2060367530], [2126125555, 41008148, 2079492342, 2060367530], [2126125555, 41008148, 2105099387, 2060367530], [2126125555, 41008148, 2110425545, 2060367530], [2126125555, 41008148, 2117089038, 2060367530], [2126125555, 41008148, 1974826193, 2060367530], [2126125555, 41008148, 2128801478, 2060367530], [2126125555, 41008148, 2080955644, 2060367530], [2126125555, 41008148, 2111479622, 2060367530], [2126125555, 136389625, 2123845705, 2060367530], [2126125555, 41008148, 2171798319, 2060367530], [2126125555, 41008148, 2131822674, 2060367530], [2126125555, 41008148, 2110376334, 2060367530], [2126125555, 41008148, 2007453627, 2060367530], [2126125555, 41008148, 1985727987, 2060367530], [2126125555, 41008148, 2088048599, 2060367530], [2126125555, 41008148, 2102033730, 2060367530], [2126125555, 41008148, 2122158102, 2060367530], [2126125555, 41008148, 2123625324, 2060367530], [2126125555, 41008148, 2081180521, 2060367530], [2126125555, 41008148, 2124648367, 2060367530], [2126125555, 41008148, 2150062669, 2060367530], [2126125555, 41008148, 2170065295, 2060367530], [2126125555, 41008148, 2117540369, 2060367530], [2126125555, 41008148, 2031602671, 2060367530], [2126125555, 41008148, 2161419360, 2060367530], [2126125555, 41008148, 2109445534, 2060367530], [2126125555, 41008148, 2114296668, 2060367530], [2126125555, 41008148, 2170311913, 2060367530], [2126125555, 41008148, 2108299701, 2060367530], [2126125555, 41008148, 2098758111, 2060367530], [2126125555, 41008148, 2140542189, 2060367530], [2126125555, 41008148, 2136623223, 2060367530], [2126125555, 41008148, 2120626801, 2060367530], [2126125555, 41008148, 2097703723, 2060367530], [2126125555, 41008148, 2103224511, 2060367530], [2126125555, 41008148, 1987345571, 2060367530], [2126125555, 41008148, 2101057528, 2060367530], [2126125555, 41008148, 2103336901, 2060367530], [2126125555, 41008148, 2133348086, 2060367530], [2126125555, 41008148, 2012216972, 2060367530], [2126125555, 41008148, 2169171650, 2060367530], [2126125555, 150899416, 2102419107, 2060367530], [2126125555, 41008148, 2102419107, 2060367530], [2126125555, 41008148, 2130941826, 2060367530], [2126125555, 41008148, 2100503224, 2060367530], [2126125555, 41008148, 2042838633, 2060367530], [2126125555, 41008148, 2120396754, 2060367530], [2126125555, 41008148, 2030927677, 2060367530], [2126125555, 41008148, 2069035751, 2060367530], [2126125555, 41008148, 2126819771, 2060367530], [2126125555, 41008148, 2106458073, 2060367530], [2126125555, 41008148, 2100644924, 2060367530], [2126125555, 41008148, 2112066132, 2060367530], [2126125555, 41008148, 2007141058, 2060367530], [2126125555, 41008148, 2039813705, 2060367530], [2126125555, 41008148, 2141962398, 2060367530], [2126125555, 136389625, 2159257417, 2060367530], [2126125555, 41008148, 2159257417, 2060367530], [2126125555, 83665646, 2150747245, 2060367530], [2126125555, 41008148, 2150747245, 2060367530], [2126125555, 41008148, 2140069289, 2060367530], [2126125555, 41008148, 2029372760, 2060367530], [2126125555, 41008148, 2132648706, 2060367530], [2126125555, 41008148, 2101087512, 2060367530], [2126125555, 41008148, 2112354775, 2060367530], [2126125555, 41008148, 2094124601, 2060367530], [2126125555, 41008148, 2086431959, 2060367530], [2126125555, 41008148, 2147202318, 2060367530], [2126125555, 41008148, 1978845507, 2060367530], [2126125555, 41008148, 2153272791, 2060367530], [2126125555, 41008148, 2131315497, 2060367530], [2126125555, 41008148, 2132291180, 2060367530], [2126125555, 41008148, 2157069634, 2060367530], [2126125555, 83665646, 1971733255, 2060367530], [2126125555, 136389625, 1971733255, 2060367530], [2126125555, 41008148, 1971733255, 2060367530], [2126125555, 41008148, 1536716526, 2060367530], [2126125555, 41008148, 2138039051, 2060367530], [2126125555, 83665646, 2095948462, 2060367530], [2126125555, 41008148, 2095948462, 2060367530], [2126125555, 41008148, 1977073753, 2060367530], [2126125555, 41008148, 2056778909, 2060367530], [2126125555, 41008148, 2040356073, 2060367530], [2126125555, 41008148, 2135394914, 2060367530], [2126125555, 41008148, 2140016149, 2060367530], [2126125555, 41008148, 2159291644, 2060367530], [2126125555, 41008148, 2156455118, 2060367530], [2126125555, 41008148, 1978779053, 2060367530], [2126125555, 41008148, 2101591109, 2060367530], [2126125555, 41008148, 2045049630, 2060367530], [2126125555, 41008148, 2108435369, 2060367530], [2126125555, 41008148, 2014408679, 2060367530], [2126125555, 41008148, 2109059049, 2060367530], [2126125555, 41008148, 2087136607, 2060367530], [2126125555, 41008148, 2170586091, 2060367530], [2126125555, 41008148, 2038445713, 2060367530], [2126125555, 41008148, 2145130412, 2060367530], [2126125555, 41008148, 2131976234, 2060367530], [2126125555, 41008148, 2113590298, 2060367530], [2126125555, 41008148, 2046547379, 2060367530], [2126125555, 41008148, 1974696541, 2060367530], [2126125555, 41008148, 2100781145, 2060367530], [2126125555, 41008148, 2103164654, 2060367530], [2126125555, 41008148, 2125229941, 2060367530], [2126125555, 41008148, 2130060563, 2060367530], [2126125555, 41008148, 1580375566, 2060367530], [2126125555, 41008148, 2154393852, 2060367530], [2126125555, 41008148, 2118965172, 2060367530], [2126125555, 41008148, 2113146968, 2060367530], [2126125555, 41008148, 2126109423, 2060367530], [2126125555, 41008148, 2118882002, 2060367530], [2126125555, 41008148, 2140214528, 2060367530], [2126125555, 41008148, 2152231009, 2060367530], [2126125555, 41008148, 2023961611, 2060367530], [2126125555, 41008148, 1996828958, 2060367530], [2126125555, 41008148, 2113957760, 2060367530], [2126125555, 41008148, 2131700150, 2060367530], [2126125555, 41008148, 2144245116, 2060367530], [2126125555, 41008148, 2130917470, 2060367530], [2126125555, 41008148, 2083995498, 2060367530], [2126125555, 41008148, 2127031212, 2060367530], [2126125555, 41008148, 2129155776, 2060367530], [2126125555, 83665646, 1532194299, 2060367530], [2126125555, 41008148, 1532194299, 2060367530], [2126125555, 41008148, 1840091437, 2060367530], [2126125555, 41008148, 2099129687, 2060367530], [2126125555, 41008148, 2157559031, 2060367530], [2126125555, 41008148, 2108588392, 2060367530], [2126125555, 41008148, 2107654046, 2060367530], [2126125555, 41008148, 2113464037, 2060367530], [2126125555, 41008148, 2124691611, 2060367530], [2126125555, 41008148, 2140679654, 2060367530], [2126125555, 41008148, 2016405781, 2060367530], [2126125555, 41008148, 2054337296, 2060367530], [2126125555, 41008148, 2155867588, 2060367530], [2126125555, 41008148, 2156843009, 2060367530], [2126125555, 41008148, 1989570860, 2060367530], [2126125555, 83665646, 2117991580, 2060367530], [2126125555, 41008148, 2117991580, 2060367530], [2126125555, 41008148, 2017368465, 2060367530], [2126125555, 41008148, 2129193626, 2060367530], [2126125555, 41008148, 2141718589, 2060367530], [2126125555, 41008148, 2158100564, 2060367530], [2126125555, 41008148, 2095512713, 2060367530], [2126125555, 41008148, 2137733632, 2060367530], [2126125555, 41008148, 2112504244, 2060367530], [2126125555, 41008148, 1584041440, 2060367530], [2126125555, 41008148, 2042469398, 2060367530], [2126125555, 41008148, 1974200853, 2060367530], [2126125555, 41008148, 2116341502, 2060367530], [2126125555, 41008148, 2111700528, 2060367530], [2126125555, 41008148, 2109831613, 2060367530], [2126125555, 41008148, 2143559846, 2060367530], [2126125555, 41008148, 1980100242, 2060367530], [2126125555, 41008148, 2024184642, 2060367530], [2126125555, 41008148, 2123818990, 2060367530], [2126125555, 41008148, 1999126347, 2060367530], [2126125555, 41008148, 2144035585, 2060367530], [2126125555, 41008148, 2100603339, 2060367530], [2126125555, 41008148, 2095809779, 2060367530], [2126125555, 41008148, 2050741632, 2060367530], [2126125555, 41008148, 2016709551, 2060367530], [2126125555, 83665646, 1979754799, 2060367530], [2126125555, 41008148, 1979754799, 2060367530], [2126125555, 41008148, 1987213187, 2060367530], [2126125555, 41008148, 2042972234, 2060367530], [2126125555, 41008148, 2016563381, 2060367530], [2126125555, 41008148, 2116045940, 2060367530], [2126125555, 41008148, 2171388940, 2060367530], [2126125555, 41008148, 1966100433, 2060367530], [2126125555, 41008148, 2109621301, 2060367530], [2126125555, 41008148, 2130343778, 2060367530], [2126125555, 41008148, 2156145910, 2060367530], [2126125555, 41008148, 2170679550, 2060367530], [2126125555, 41008148, 1997881692, 2060367530], [2126125555, 136389625, 2142013909, 2060367530], [2126125555, 41008148, 2142013909, 2060367530], [2126125555, 41008148, 2143750468, 2060367530], [2126125555, 41008148, 2053080554, 2060367530], [2126125555, 41008148, 2095710475, 2060367530], [2126125555, 83665646, 2165742564, 2060367530], [2126125555, 41008148, 2073817142, 2060367530], [2126125555, 41008148, 2115158471, 2060367530], [2126125555, 41008148, 1493047750, 2060367530], [2126125555, 41008148, 2161970352, 2060367530], [2126125555, 41008148, 2111679734, 2060367530], [2126125555, 41008148, 2079470039, 2060367530], [2126125555, 41008148, 1975620028, 2060367530], [2126125555, 41008148, 2171604354, 2060367530], [2126125555, 41008148, 2087607043, 2060367530], [2126125555, 41008148, 1996149859, 2060367530], [2126125555, 41008148, 2103398089, 2060367530], [2126125555, 41008148, 2036644827, 2060367530], [2126125555, 41008148, 2098509224, 2060367530], [2126125555, 41008148, 2064342429, 2060367530], [2126125555, 41008148, 2069659771, 2060367530], [2126125555, 41008148, 2080626721, 2060367530], [2126125555, 41008148, 2000277463, 2060367530], [2126125555, 136389625, 2122606486, 2060367530], [2126125555, 41008148, 2122606486, 2060367530], [2126125555, 41008148, 2097458023, 2060367530], [2126125555, 41008148, 2075208090, 2060367530], [2126125555, 41008148, 2113577581, 2060367530], [2126125555, 41008148, 1981049948, 2060367530], [2126125555, 136389625, 2115659607, 2060367530], [2126125555, 41008148, 2115659607, 2060367530], [2126125555, 41008148, 2121127941, 2060367530], [2126125555, 83665646, 2107227001, 2060367530], [2126125555, 41008148, 2132320458, 2060367530], [2126125555, 41008148, 2000266578, 2060367530], [2126125555, 41008148, 2151764894, 2060367530], [2126125555, 41008148, 2019543400, 2060367530], [2126125555, 41008148, 2112203433, 2060367530], [2126125555, 41008148, 2171394996, 2060367530], [2126125555, 41008148, 2115394472, 2060367530], [2126125555, 41008148, 2100081831, 2060367530], [2126125555, 41008148, 2013021480, 2060367530], [2126125555, 41008148, 2047000895, 2060367530], [2126125555, 41008148, 2148791530, 2060367530], [2126125555, 41008148, 2117138276, 2060367530], [2126125555, 41008148, 2051455168, 2060367530], [2126125555, 41008148, 1963954178, 2060367530], [2126125555, 83665646, 2109077768, 2060367530], [2126125555, 41008148, 2109077768, 2060367530], [2126125555, 41008148, 2169113723, 2060367530], [2126125555, 41008148, 1977193486, 2060367530], [2126125555, 136389625, 2069735839, 2060367530], [2126125555, 41008148, 2069735839, 2060367530], [2126125555, 41008148, 2098584485, 2060367530], [2126125555, 41008148, 2130189327, 2060367530], [2126125555, 83665646, 1529681343, 2060367530], [2126125555, 41008148, 1529681343, 2060367530], [2126125555, 136389625, 2076131212, 2060367530], [2126125555, 41008148, 2076131212, 2060367530], [2126125555, 41008148, 1714001321, 2060367530], [2126125555, 41008148, 1992632596, 2060367530], [2126125555, 41008148, 2095365800, 2060367530], [2126125555, 41008148, 2008769248, 2060367530], [2126125555, 41008148, 2138963285, 2060367530], [2126125555, 41008148, 2119985557, 2060367530], [2126125555, 41008148, 2077084699, 2060367530], [2126125555, 41008148, 2068588646, 2060367530], [2126125555, 41008148, 2035165861, 2060367530], [2126125555, 136389625, 2044774029, 2060367530], [2126125555, 41008148, 2044774029, 2060367530], [2126125555, 41008148, 2136902972, 2060367530], [2126125555, 41008148, 2125357381, 2060367530], [2126125555, 41008148, 1974515274, 2060367530], [2126125555, 41008148, 2020571458, 2060367530], [2126125555, 41008148, 2171770233, 2060367530], [2126125555, 41008148, 2077773163, 2060367530], [2126125555, 41008148, 2083673985, 2060367530], [2126125555, 41008148, 2138127867, 2060367530], [2126125555, 41008148, 2162991033, 2060367530], [2126125555, 41008148, 2030950474, 2060367530], [2126125555, 41008148, 2104596964, 2060367530], [2126125555, 41008148, 2159624360, 2060367530], [2126125555, 41008148, 2152521138, 2060367530], [2126125555, 136389625, 2131595827, 2060367530], [2126125555, 41008148, 2131595827, 2060367530], [2126125555, 41008148, 2122540156, 2060367530], [2126125555, 41008148, 2170532676, 2060367530], [2126125555, 41008148, 2022635660, 2060367530], [2126125555, 41008148, 2016286809, 2060367530], [2126125555, 41008148, 1974455604, 2060367530], [2126125555, 2109031554, 1974455604, 2060367530], [2126125555, 41008148, 2167806820, 2060367530], [2126125555, 41008148, 2139212933, 2060367530], [2126125555, 41008148, 1993644118, 2060367530], [2126125555, 41008148, 2083026317, 2060367530], [2126125555, 41008148, 2138899937, 2060367530], [2126125555, 41008148, 1974928465, 2060367530], [2126125555, 41008148, 1991754220, 2060367530], [2126125555, 41008148, 2066496894, 2060367530], [2126125555, 41008148, 2098318489, 2060367530], [2126125555, 41008148, 2082776647, 2060367530], [2126125555, 41008148, 2101711932, 2060367530], [2126125555, 41008148, 2163140472, 2060367530], [2126125555, 41008148, 2109758161, 2060367530], [2126125555, 41008148, 2112340198, 2060367530], [2126125555, 41008148, 2149997286, 2060367530], [2126125555, 41008148, 2189612118, 2060367530], [2126125555, 136389625, 2109668081, 2060367530], [2126125555, 41008148, 2109668081, 2060367530], [2126125555, 41008148, 1992608033, 2060367530], [2126125555, 41008148, 2075818274, 2060367530], [2126125555, 41008148, 2042561770, 2060367530], [2126125555, 41008148, 2075538140, 2060367530], [2126125555, 83665646, 2036079977, 2060367530], [2126125555, 41008148, 2093624953, 2060367530], [2126125555, 41008148, 2141127144, 2060367530], [2126125555, 41008148, 2084136177, 2060367530], [2126125555, 41008148, 2160662337, 2060367530], [2126125555, 41008148, 2148275879, 2060367530], [2126125555, 41008148, 2136241053, 2060367530], [2126125555, 41008148, 2056602228, 2060367530], [2126125555, 41008148, 2111206974, 2060367530], [2126125555, 41008148, 2161401420, 2060367530], [2126125555, 41008148, 2165772152, 2060367530], [2126125555, 41008148, 2101930552, 2060367530], [2126125555, 41008148, 1969193896, 2060367530], [2126125555, 41008148, 2127426073, 2060367530], [2126125555, 41008148, 1980800761, 2060367530], [2126125555, 41008148, 2168825483, 2060367530], [2126125555, 41008148, 2165049595, 2060367530], [2126125555, 41008148, 2107443860, 2060367530], [2126125555, 41008148, 2105386417, 2060367530], [2126125555, 41008148, 2155779606, 2060367530], [2126125555, 41008148, 2042042193, 2060367530], [2126125555, 83665646, 2074925665, 2060367530], [2126125555, 136389625, 2074925665, 2060367530], [2126125555, 41008148, 2074925665, 2060367530], [2126125555, 41008148, 2169977688, 2060367530], [2126125555, 41008148, 2161367368, 2060367530], [2126125555, 41008148, 2143747826, 2060367530], [2126125555, 136389625, 2143386126, 2060367530], [2126125555, 41008148, 2143386126, 2060367530], [2126125555, 83665646, 2118347512, 2060367530], [2126125555, 41008148, 2118347512, 2060367530], [2126125555, 41008148, 2146302903, 2060367530], [2126125555, 41008148, 1985313797, 2060367530], [2126125555, 41008148, 2115843962, 2060367530], [2126125555, 41008148, 2105131949, 2060367530], [2126125555, 41008148, 2154751794, 2060367530], [2126125555, 41008148, 2057312656, 2060367530], [2126125555, 41008148, 2133671386, 2060367530], [2126125555, 41008148, 2070473734, 2060367530], [2126125555, 41008148, 1906857739, 2060367530], [2126125555, 41008148, 2076360002, 2060367530], [2126125555, 41008148, 2067032929, 2060367530], [2126125555, 41008148, 2024303949, 2060367530], [2126125555, 41008148, 2074743521, 2060367530], [2126125555, 41008148, 2085986654, 2060367530], [2126125555, 41008148, 2141335157, 2060367530], [2126125555, 41008148, 2146798037, 2060367530], [2126125555, 136389625, 2126714083, 2060367530], [2126125555, 41008148, 2126714083, 2060367530], [2126125555, 41008148, 1965928728, 2060367530], [2126125555, 136389625, 2125781844, 2060367530], [2126125555, 41008148, 2125781844, 2060367530], [2126125555, 83665646, 2162724919, 2060367530], [2126125555, 41008148, 2162724919, 2060367530], [2126125555, 41008148, 2054682837, 2060367530], [2126125555, 41008148, 2001474526, 2060367530], [2126125555, 41008148, 2147174595, 2060367530], [2126125555, 41008148, 2014932484, 2060367530], [2126125555, 83665646, 2138395288, 2060367530], [2126125555, 41008148, 2138395288, 2060367530], [2126125555, 41008148, 2085044339, 2060367530], [2126125555, 41008148, 2128629203, 2060367530], [2126125555, 41008148, 2117896839, 2060367530], [2126125555, 41008148, 2057133067, 2060367530], [2126125555, 41008148, 2029604420, 2060367530], [2126125555, 41008148, 2122624453, 2060367530], [2126125555, 41008148, 2124782626, 2060367530], [2126125555, 41008148, 2120413242, 2060367530], [2126125555, 41008148, 2019099223, 2060367530], [2126125555, 41008148, 2110411550, 2060367530], [2126125555, 41008148, 2118796860, 2060367530], [2126125555, 41008148, 2118353660, 2060367530], [2126125555, 41008148, 2120985577, 2060367530], [2126125555, 41008148, 2150120952, 2060367530], [2126125555, 41008148, 2122649297, 2060367530], [2126125555, 41008148, 2016891208, 2060367530], [2126125555, 41008148, 1580637085, 2060367530], [2126125555, 41008148, 2130871783, 2060367530], [2126125555, 41008148, 2044885069, 2060367530], [2126125555, 41008148, 2089368853, 2060367530], [2126125555, 41008148, 2169069957, 2060367530], [2126125555, 41008148, 2124231513, 2060367530], [2126125555, 41008148, 2064884852, 2060367530], [2126125555, 83665646, 1984437717, 2060367530], [2126125555, 41008148, 2151208049, 2060367530], [2126125555, 41008148, 2100549317, 2060367530], [2126125555, 121687571, 2067299273, 2060367530], [2126125555, 41008148, 2067299273, 2060367530], [2126125555, 41008148, 2072036242, 2060367530], [2126125555, 41008148, 2142766915, 2060367530], [2126125555, 41008148, 1816488618, 2060367530], [2126125555, 41008148, 2131587055, 2060367530], [2126125555, 41008148, 2156606946, 2060367530], [2126125555, 41008148, 2171630550, 2060367530], [2126125555, 41008148, 2040211078, 2060367530], [2126125555, 41008148, 2125970547, 2060367530], [2126125555, 83665646, 2137772040, 2060367530], [2126125555, 41008148, 2137772040, 2060367530], [2126125555, 41008148, 2156316030, 2060367530], [2126125555, 41008148, 2081345410, 2060367530], [2126125555, 41008148, 1519178192, 2060367530], [2126125555, 41008148, 2065533253, 2060367530], [2126125555, 41008148, 1563247097, 2060367530], [2126125555, 41008148, 1995192893, 2060367530], [2126125555, 41008148, 2163214087, 2060367530], [2126125555, 41008148, 2130684315, 2060367530], [2126125555, 41008148, 2132025639, 2060367530], [2126125555, 41008148, 2082088043, 2060367530], [2126125555, 41008148, 2108149553, 2060367530], [2126125555, 41008148, 2012844989, 2060367530], [2126125555, 41008148, 2108729039, 2060367530], [2126125555, 41008148, 1512068198, 2060367530], [2126125555, 41008148, 2038564898, 2060367530], [2126125555, 41008148, 2039613922, 2060367530], [2126125555, 41008148, 2115394986, 2060367530], [2126125555, 41008148, 2029888179, 2060367530], [2126125555, 41008148, 1503783444, 2060367530], [2126125555, 41008148, 2029065161, 2060367530], [2126125555, 41008148, 2146739705, 2060367530], [2126125555, 41008148, 1966241362, 2060367530], [2126125555, 41008148, 2021353881, 2060367530], [2126125555, 44249647, 2055133036, 2060367530], [2126125555, 41008148, 2055133036, 2060367530], [2126125555, 41008148, 2169540885, 2060367530], [2126125555, 41008148, 2007698848, 2060367530], [2126125555, 41008148, 2123160547, 2060367530], [2126125555, 41008148, 1578316706, 2060367530], [2126125555, 41008148, 2162571797, 2060367530], [2126125555, 41008148, 2040260156, 2060367530], [2126125555, 41008148, 2102108412, 2060367530], [2126125555, 41008148, 2169625877, 2060367530], [2126125555, 41008148, 2059089906, 2060367530], [2126125555, 41008148, 1579877966, 2060367530], [2126125555, 41008148, 1484966362, 2060367530], [2126125555, 41008148, 2061759159, 2060367530], [2126125555, 41008148, 2170934897, 2060367530], [2126125555, 41008148, 2121936213, 2060367530], [2126125555, 41008148, 2034618876, 2060367530], [2126125555, 41008148, 2171866629, 2060367530], [2126125555, 41008148, 2150100034, 2060367530], [2126125555, 41008148, 2120739165, 2060367530], [2126125555, 41008148, 2118854554, 2060367530], [2126125555, 41008148, 2115127435, 2060367530], [2126125555, 41008148, 2006027806, 2060367530], [2126125555, 41008148, 1979063032, 2060367530], [2126125555, 41008148, 2154904274, 2060367530], [2126125555, 41008148, 1479895691, 2060367530], [2126125555, 41008148, 2090194999, 2060367530], [2126125555, 41008148, 2163370485, 2060367530], [2126125555, 41008148, 2119522830, 2060367530], [2126125555, 41008148, 2108950639, 2060367530], [2126125555, 41008148, 2115012641, 2060367530], [2126125555, 83665646, 2011334977, 2060367530], [2126125555, 41008148, 2088059023, 2060367530], [2126125555, 41008148, 2130129917, 2060367530], [2126125555, 136389625, 1804536132, 2060367530], [2126125555, 41008148, 1804536132, 2060367530], [2126125555, 41008148, 2112547580, 2060367530], [2126125555, 44249647, 2097490235, 2060367530], [2126125555, 41008148, 2127371284, 2060367530], [2126125555, 197046077, 2096810317, 2060367530], [2126125555, 41008148, 2096810317, 2060367530], [2126125555, 41008148, 1984232434, 2060367530], [2126125555, 41008148, 1974314970, 2060367530], [2126125555, 41008148, 2105087447, 2060367530], [2126125555, 136389625, 2097462699, 2060367530], [2126125555, 41008148, 2097462699, 2060367530], [2126125555, 41008148, 2109169614, 2060367530], [2126125555, 41008148, 2078559757, 2060367530], [2126125555, 41008148, 2166943865, 2060367530], [2126125555, 41008148, 2119155265, 2060367530], [2126125555, 41008148, 2160727916, 2060367530], [2126125555, 41008148, 2138973161, 2060367530], [2126125555, 41008148, 2137563479, 2060367530], [2126125555, 41008148, 2018127993, 2060367530], [2126125555, 41008148, 2115076892, 2060367530], [2126125555, 41008148, 2143755314, 2060367530], [2126125555, 41008148, 2106701503, 2060367530], [2126125555, 41008148, 2121169814, 2060367530], [2126125555, 41008148, 2029161185, 2060367530], [2126125555, 41008148, 2101302356, 2060367530], [2126125555, 41008148, 1997903011, 2060367530], [2126125555, 83665646, 1538281814, 2060367530], [2126125555, 41008148, 1538281814, 2060367530], [2126125555, 41008148, 2126768332, 2060367530], [2126125555, 41008148, 1519361431, 2060367530], [2126125555, 41008148, 1999286885, 2060367530], [2126125555, 41008148, 2169482235, 2060367530], [2126125555, 41008148, 2152116196, 2060367530], [2126125555, 41008148, 1572386387, 2060367530], [2126125555, 41008148, 2077924235, 2060367530], [2126125555, 41008148, 2101730772, 2060367530], [2126125555, 41008148, 1988975411, 2060367530], [2126125555, 44249647, 2132618831, 2060367530], [2126125555, 41008148, 2162657744, 2060367530], [2126125555, 41008148, 2089631831, 2060367530], [2126125555, 41008148, 2035222601, 2060367530], [2126125555, 41008148, 2058628428, 2060367530], [2126125555, 41008148, 2056052642, 2060367530], [2126125555, 41008148, 1985390817, 2060367530], [2126125555, 41008148, 2152048394, 2060367530], [2126125555, 41008148, 2008831863, 2060367530], [2126125555, 41008148, 2119611763, 2060367530], [2126125555, 41008148, 2020144989, 2060367530], [2126125555, 41008148, 2129922540, 2060367530], [2126125555, 41008148, 1596088102, 2060367530], [2126125555, 41008148, 2169042894, 2060367530], [2126125555, 41008148, 2168515119, 2060367530], [2126125555, 41008148, 2038105731, 2060367530], [2126125555, 41008148, 2134837462, 2060367530], [2126125555, 41008148, 1975664724, 2060367530], [2126125555, 41008148, 2141014294, 2060367530], [2126125555, 41008148, 2091095338, 2060367530], [2126125555, 41008148, 2037911143, 2060367530], [2126125555, 41008148, 2139211176, 2060367530], [2126125555, 41008148, 1990803080, 2060367530], [2126125555, 41008148, 2131652924, 2060367530], [2126125555, 83665646, 1839352295, 2060367530], [2126125555, 41008148, 1839352295, 2060367530], [2126125555, 41008148, 2167033949, 2060367530], [2126125555, 41008148, 2004532359, 2060367530], [2126125555, 41008148, 2129151899, 2060367530], [2126125555, 41008148, 2086316204, 2060367530], [2126125555, 41008148, 2113144536, 2060367530], [2126125555, 41008148, 60934498, 2060367530], [2126125555, 41008148, 2146189537, 2060367530], [2126125555, 41008148, 2131541171, 2060367530], [2126125555, 41008148, 2157820340, 2060367530], [2126125555, 41008148, 2136564616, 2060367530], [2126125555, 41008148, 1992961908, 2060367530], [2126125555, 41008148, 2029246249, 2060367530], [2126125555, 41008148, 1984073246, 2060367530], [2126125555, 41008148, 2017418484, 2060367530], [2126125555, 41008148, 2168810081, 2060367530], [2126125555, 41008148, 1890144016, 2060367530], [2126125555, 41008148, 1979264048, 2060367530], [2126125555, 41008148, 2130844249, 2060367530], [2126125555, 41008148, 1965102691, 2060367530], [2126125555, 41008148, 2030912027, 2060367530], [2126125555, 41008148, 2135835957, 2060367530], [2126125555, 41008148, 2044259175, 2060367530], [2126125555, 41008148, 2097334502, 2060367530], [2126125555, 83665646, 2145284369, 2060367530], [2126125555, 41008148, 2145284369, 2060367530], [2126125555, 83665646, 2148279834, 2060367530], [2126125555, 41008148, 2148279834, 2060367530], [2126125555, 136389625, 2154171475, 2060367530], [2126125555, 41008148, 2154171475, 2060367530], [2126125555, 41008148, 2001832483, 2060367530], [2126125555, 41008148, 2040271757, 2060367530], [2126125555, 41008148, 2119410311, 2060367530], [2126125555, 41008148, 1771155305, 2060367530], [2126125555, 136389625, 2145876631, 2060367530], [2126125555, 41008148, 2145876631, 2060367530], [2126125555, 41008148, 2168876499, 2060367530], [2126125555, 41008148, 1988296307, 2060367530], [2126125555, 41008148, 2168507657, 2060367530], [2126125555, 41008148, 2158295342, 2060367530], [2126125555, 41008148, 2045517669, 2060367530], [2126125555, 41008148, 1575299770, 2060367530], [2126125555, 41008148, 2018795357, 2060367530], [2126125555, 41008148, 2096364142, 2060367530], [2126125555, 41008148, 1977894787, 2060367530], [2126125555, 41008148, 2105628930, 2060367530], [2126125555, 41008148, 2042929577, 2060367530], [2126125555, 41008148, 1572372689, 2060367530], [2126125555, 41008148, 1967621805, 2060367530], [2126125555, 41008148, 2151591744, 2060367530], [2126125555, 41008148, 2056523469, 2060367530], [2126125555, 41008148, 2037059691, 2060367530], [2126125555, 41008148, 2172237138, 2060367530], [2126125555, 121687571, 1606768424, 2060367530], [2126125555, 136389625, 1606768424, 2060367530], [2126125555, 41008148, 1606768424, 2060367530], [2126125555, 41008148, 1852635481, 2060367530], [2126125555, 41008148, 2172081788, 2060367530], [2126125555, 41008148, 2092730838, 2060367530], [2126125555, 41008148, 1996770352, 2060367530], [2126125555, 121687571, 2096771210, 2060367530], [2126125555, 136389625, 2096771210, 2060367530], [2126125555, 41008148, 2096771210, 2060367530], [2126125555, 41008148, 2132522721, 2060367530], [2126125555, 136389625, 2166903773, 2060367530], [2126125555, 41008148, 2166903773, 2060367530], [2126125555, 83665646, 2106084229, 2060367530], [2126125555, 41008148, 2114269623, 2060367530], [2126125555, 41008148, 2105210673, 2060367530], [2126125555, 41008148, 2101649019, 2060367530], [2126125555, 41008148, 2155737120, 2060367530], [2126125555, 136389625, 2092483655, 2060367530], [2126125555, 41008148, 2092483655, 2060367530], [2126125555, 41008148, 2149807144, 2060367530], [2126125555, 41008148, 2034659169, 2060367530], [2126125555, 41008148, 2014098003, 2060367530], [2126125555, 41008148, 2104386187, 2060367530], [2126125555, 41008148, 2012310519, 2060367530], [2126125555, 41008148, 2113921460, 2060367530], [2126125555, 41008148, 2027043498, 2060367530], [2126125555, 41008148, 2060741466, 2060367530], [2126125555, 41008148, 2149775297, 2060367530], [2126125555, 41008148, 2080529918, 2060367530], [2126125555, 41008148, 1858081177, 2060367530], [2126125555, 83665646, 2165102451, 2060367530], [2126125555, 41008148, 2165102451, 2060367530], [2126125555, 41008148, 2155461860, 2060367530], [2126125555, 41008148, 2161549499, 2060367530], [2126125555, 41008148, 2031161851, 2060367530], [2126125555, 41008148, 2105393881, 2060367530], [2126125555, 41008148, 2009615718, 2060367530], [2126125555, 41008148, 1986190044, 2060367530], [2126125555, 41008148, 2154605514, 2060367530], [2126125555, 136389625, 2039546445, 2060367530], [2126125555, 41008148, 2039546445, 2060367530], [2126125555, 41008148, 1972027273, 2060367530], [2126125555, 41008148, 2067018786, 2060367530], [2126125555, 136389625, 2126666380, 2060367530], [2126125555, 41008148, 2126666380, 2060367530], [2126125555, 41008148, 2151471214, 2060367530], [2126125555, 44249647, 2114224214, 2060367530], [2126125555, 41008148, 2114224214, 2060367530], [2126125555, 41008148, 2157532876, 2060367530], [2126125555, 83665646, 1533151499, 2060367530], [2126125555, 41008148, 1533151499, 2060367530], [2126125555, 41008148, 1965805826, 2060367530], [2126125555, 41008148, 1964900038, 2060367530], [2126125555, 41008148, 2143295498, 2060367530], [2126125555, 41008148, 1991618643, 2060367530], [2126125555, 41008148, 2014603447, 2060367530], [2126125555, 41008148, 2143421424, 2060367530], [2126125555, 41008148, 2039321332, 2060367530], [2126125555, 41008148, 2011441697, 2060367530], [2126125555, 41008148, 2104529636, 2060367530], [2126125555, 41008148, 2007619679, 2060367530], [2126125555, 41008148, 2009371655, 2060367530], [2126125555, 41008148, 2116504907, 2060367530], [2126125555, 41008148, 2136219822, 2060367530], [2126125555, 83665646, 1525634681, 2060367530], [2126125555, 41008148, 1525634681, 2060367530], [2126125555, 41008148, 2171125286, 2060367530], [2126125555, 41008148, 2146362072, 2060367530], [2126125555, 41008148, 1543303889, 2060367530], [2126125555, 41008148, 2150285824, 2060367530], [2126125555, 83665646, 2004144815, 2060367530], [2126125555, 41008148, 2004144815, 2060367530], [2126125555, 41008148, 1971275349, 2060367530], [2126125555, 41008148, 2068150776, 2060367530], [2126125555, 41008148, 1976597276, 2060367530], [2126125555, 41008148, 2031357797, 2060367530], [2126125555, 83665646, 1982261958, 2060367530], [2126125555, 41008148, 1982261958, 2060367530], [2126125555, 41008148, 2093746716, 2060367530], [2126125555, 150899416, 2157785456, 2060367530], [2126125555, 41008148, 2157785456, 2060367530], [2126125555, 83665646, 2036089480, 2060367530], [2126125555, 41008148, 2036089480, 2060367530], [2126125555, 41008148, 2093376526, 2060367530], [2126125555, 83665646, 2106525014, 2060367530], [2126125555, 41008148, 2106525014, 2060367530], [2126125555, 41008148, 1982434302, 2060367530], [2126125555, 41008148, 2033193574, 2060367530], [2126125555, 41008148, 2158971341, 2060367530], [2126125555, 41008148, 2025679133, 2060367530], [2126125555, 41008148, 2146952738, 2060367530], [2126125555, 41008148, 2114291707, 2060367530], [2126125555, 41008148, 2156925633, 2060367530], [2126125555, 41008148, 2062063170, 2060367530], [2126125555, 41008148, 2100468749, 2060367530], [2126125555, 41008148, 2100900120, 2060367530], [2126125555, 41008148, 2120599713, 2060367530], [2126125555, 41008148, 1980260088, 2060367530], [2126125555, 41008148, 2108651654, 2060367530], [2126125555, 41008148, 2146655738, 2060367530], [2126125555, 41008148, 2121049613, 2060367530], [2126125555, 41008148, 1736291850, 2060367530], [2126125555, 41008148, 1920328734, 2060367530], [2126125555, 136389625, 2018744542, 2060367530], [2126125555, 41008148, 2018744542, 2060367530], [2126125555, 41008148, 2090549337, 2060367530], [2126125555, 136389625, 2127906599, 2060367530], [2126125555, 41008148, 2127906599, 2060367530], [2126125555, 41008148, 2147590979, 2060367530], [2126125555, 41008148, 2045776044, 2060367530], [2126125555, 41008148, 2079503924, 2060367530], [2126125555, 41008148, 2149870286, 2060367530], [2126125555, 83665646, 1511988855, 2060367530], [2126125555, 41008148, 1511988855, 2060367530], [2126125555, 41008148, 2155684529, 2060367530], [2126125555, 41008148, 2143667634, 2060367530], [2126125555, 41008148, 2167403361, 2060367530], [2126125555, 41008148, 2149521737, 2060367530], [2126125555, 41008148, 2021036171, 2060367530], [2126125555, 41008148, 2123290345, 2060367530], [2126125555, 41008148, 2123856749, 2060367530], [2126125555, 41008148, 2161763236, 2060367530], [2126125555, 41008148, 2043037645, 2060367530], [2126125555, 41008148, 2142674421, 2060367530], [2126125555, 41008148, 2098371241, 2060367530], [2126125555, 41008148, 2066768226, 2060367530], [2126125555, 41008148, 2135964318, 2060367530], [2126125555, 41008148, 1967144543, 2060367530], [2126125555, 41008148, 2011585383, 2060367530], [2126125555, 41008148, 2061488498, 2060367530], [2126125555, 41008148, 2006536226, 2060367530], [2126125555, 136389625, 1585151117, 2060367530], [2126125555, 41008148, 1585151117, 2060367530], [2126125555, 41008148, 2152739562, 2060367530], [2126125555, 41008148, 2036326986, 2060367530], [2126125555, 41008148, 2071256736, 2060367530], [2126125555, 41008148, 2126120913, 2060367530], [2126125555, 41008148, 2105967432, 2060367530], [2126125555, 41008148, 2076080604, 2060367530], [2126125555, 41008148, 2116041589, 2060367530], [2126125555, 41008148, 2155879210, 2060367530], [2126125555, 41008148, 2035365877, 2060367530], [2126125555, 41008148, 2090239801, 2060367530], [2126125555, 41008148, 2112634639, 2060367530], [2126125555, 41008148, 2131154631, 2060367530], [2126125555, 41008148, 2128584444, 2060367530], [2126125555, 41008148, 2160566248, 2060367530], [2126125555, 41008148, 1974447936, 2060367530], [2126125555, 41008148, 2056438097, 2060367530], [2126125555, 41008148, 2168066604, 2060367530], [2126125555, 41008148, 1969163824, 2060367530], [2126125555, 41008148, 2141567889, 2060367530], [2126125555, 41008148, 2154610165, 2060367530], [2126125555, 41008148, 2149810626, 2060367530], [2126125555, 41008148, 2103423124, 2060367530], [2126125555, 41008148, 1979288205, 2060367530], [2126125555, 41008148, 2080509359, 2060367530], [2126125555, 41008148, 1978961637, 2060367530], [2126125555, 41008148, 2146987667, 2060367530], [2126125555, 41008148, 2134901501, 2060367530], [2126125555, 41008148, 2132538608, 2060367530], [2126125555, 41008148, 2121415090, 2060367530], [2126125555, 41008148, 2100421935, 2060367530], [2126125555, 41008148, 2121317287, 2060367530], [2126125555, 41008148, 2046832318, 2060367530], [2126125555, 41008148, 2154074091, 2060367530], [2126125555, 41008148, 1966846152, 2060367530], [2126125555, 41008148, 2201594136, 2060367530], [2126125555, 41008148, 2127261457, 2060367530], [2126125555, 41008148, 2124386567, 2060367530], [2126125555, 41008148, 2056683549, 2060367530], [2126125555, 41008148, 2145722931, 2060367530], [2126125555, 41008148, 2142476243, 2060367530], [2126125555, 83665646, 2117502874, 2060367530], [2126125555, 41008148, 2117502874, 2060367530], [2126125555, 41008148, 2101246646, 2060367530], [2126125555, 41008148, 2032708784, 2060367530], [2126125555, 41008148, 2034279806, 2060367530], [2126125555, 41008148, 1868906402, 2060367530], [2126125555, 41008148, 2108089576, 2060367530], [2126125555, 41008148, 2023036152, 2060367530], [2126125555, 41008148, 2113772163, 2060367530], [2126125555, 41008148, 2158297842, 2060367530], [2126125555, 41008148, 2111145173, 2060367530], [2126125555, 41008148, 2166200312, 2060367530], [2126125555, 41008148, 2092353981, 2060367530], [2126125555, 41008148, 2030707487, 2060367530], [2126125555, 41008148, 2130477805, 2060367530], [2126125555, 41008148, 1966665485, 2060367530], [2126125555, 41008148, 1988714027, 2060367530], [2126125555, 41008148, 1981044004, 2060367530], [2126125555, 41008148, 2133457703, 2060367530], [2126125555, 41008148, 2170168257, 2060367530], [2126125555, 41008148, 2130951397, 2060367530], [2126125555, 41008148, 2146568561, 2060367530], [2126125555, 41008148, 2029952384, 2060367530], [2126125555, 83665646, 2153557925, 2060367530], [2126125555, 41008148, 2153557925, 2060367530], [2126125555, 41008148, 2111560151, 2060367530], [2126125555, 41008148, 2042877132, 2060367530], [2126125555, 41008148, 1803870300, 2060367530], [2126125555, 41008148, 2025697666, 2060367530], [2126125555, 136389625, 2056707879, 2060367530], [2126125555, 41008148, 2056707879, 2060367530], [2126125555, 41008148, 2077337938, 2060367530], [2126125555, 41008148, 2148418853, 2060367530], [2126125555, 41008148, 2147751396, 2060367530], [2126125555, 41008148, 2058492978, 2060367530], [2126125555, 41008148, 2134601045, 2060367530], [2126125555, 41008148, 2048842461, 2060367530], [2126125555, 41008148, 2108016943, 2060367530], [2126125555, 41008148, 2068684977, 2060367530], [2126125555, 41008148, 2068412200, 2060367530], [2126125555, 41008148, 2022254763, 2060367530], [2126125555, 83665646, 2169393112, 2060367530], [2126125555, 41008148, 2169393112, 2060367530], [2126125555, 41008148, 2158137698, 2060367530], [2126125555, 41008148, 2000975517, 2060367530], [2126125555, 41008148, 1988785827, 2060367530], [2126125555, 41008148, 2105267951, 2060367530], [2126125555, 41008148, 2143334669, 2060367530], [2126125555, 41008148, 2007193523, 2060367530], [2126125555, 41008148, 2114900710, 2060367530], [2126125555, 41008148, 1992505708, 2060367530], [2126125555, 41008148, 2152545736, 2060367530], [2126125555, 41008148, 1981396435, 2060367530], [2126125555, 41008148, 2168489973, 2060367530], [2126125555, 41008148, 2114335588, 2060367530], [2126125555, 41008148, 2077989092, 2060367530], [2126125555, 41008148, 2164053026, 2060367530], [2126125555, 41008148, 2132795055, 2060367530], [2126125555, 41008148, 1700449338, 2060367530], [2126125555, 41008148, 2170186274, 2060367530], [2126125555, 136389625, 2124811165, 2060367530], [2126125555, 41008148, 2016018404, 2060367530], [2126125555, 41008148, 2144086405, 2060367530], [2126125555, 41008148, 2079005294, 2060367530], [2126125555, 83665646, 1538151859, 2060367530], [2126125555, 41008148, 1538151859, 2060367530], [2126125555, 83665646, 2051854724, 2060367530], [2126125555, 41008148, 2051854724, 2060367530], [2126125555, 41008148, 1992329416, 2060367530], [2126125555, 41008148, 2096422609, 2060367530], [2126125555, 41008148, 1598638678, 2060367530], [2126125555, 41008148, 1997177391, 2060367530], [2126125555, 41008148, 1965039160, 2060367530], [2126125555, 41008148, 1616377031, 2060367530], [2126125555, 41008148, 1979953412, 2060367530], [2126125555, 41008148, 2112247509, 2060367530], [2126125555, 41008148, 2027424931, 2060367530], [2126125555, 41008148, 2163094209, 2060367530], [2126125555, 41008148, 2105430157, 2060367530], [2126125555, 41008148, 2068783850, 2060367530], [2126125555, 41008148, 2130424402, 2060367530], [2126125555, 136389625, 2130672573, 2060367530], [2126125555, 41008148, 2130672573, 2060367530], [2126125555, 41008148, 2285675229, 2060367530], [2126125555, 83665646, 2067696780, 2060367530], [2126125555, 136389625, 2067696780, 2060367530], [2126125555, 41008148, 2067696780, 2060367530], [2126125555, 41008148, 2286642557, 2060367530], [2126125555, 83665646, 1496147749, 2060367530], [2126125555, 41008148, 1496147749, 2060367530], [2126125555, 41008148, 1539117683, 2060367530], [2126125555, 41008148, 2069809382, 2060367530], [2126125555, 41008148, 2058402854, 2060367530], [2126125555, 41008148, 2080379544, 2060367530], [2126125555, 41008148, 2169492277, 2060367530], [2126125555, 41008148, 2117830517, 2060367530], [2126125555, 41008148, 2019288156, 2060367530], [2126125555, 41008148, 2059786299, 2060367530], [2126125555, 41008148, 2125205396, 2060367530], [2126125555, 41008148, 2059638203, 2060367530], [2126125555, 41008148, 2049320546, 2060367530], [2126125555, 41008148, 2002689747, 2060367530], [2126125555, 41008148, 2100435143, 2060367530], [2126125555, 41008148, 2156654695, 2060367530], [2126125555, 136389625, 2063634833, 2060367530], [2126125555, 41008148, 2124160101, 2060367530], [2126125555, 41008148, 2126814866, 2060367530], [2126125555, 41008148, 1974925885, 2060367530], [2126125555, 41008148, 2063810406, 2060367530], [2126125555, 41008148, 1970833848, 2060367530], [2126125555, 41008148, 1978770035, 2060367530], [2126125555, 41008148, 2032819131, 2060367530], [2126125555, 41008148, 2164617909, 2060367530], [2126125555, 136389625, 2144635266, 2060367530], [2126125555, 41008148, 2144635266, 2060367530], [2126125555, 41008148, 2130059981, 2060367530], [2126125555, 41008148, 2131132457, 2060367530], [2126125555, 41008148, 2114204610, 2060367530], [2126125555, 83665646, 2130381972, 2060367530], [2126125555, 41008148, 2131374321, 2060367530], [2126125555, 41008148, 2167390657, 2060367530], [2126125555, 41008148, 2162042984, 2060367530], [2126125555, 41008148, 2169311228, 2060367530], [2126125555, 41008148, 1964504902, 2060367530], [2126125555, 41008148, 1992493768, 2060367530], [2126125555, 83665646, 2071934013, 2060367530], [2126125555, 41008148, 2071934013, 2060367530], [2126125555, 41008148, 2168599920, 2060367530], [2126125555, 41008148, 2145386692, 2060367530], [2126125555, 41008148, 2163608767, 2060367530], [2126125555, 136389625, 2119028526, 2060367530], [2126125555, 41008148, 1999621696, 2060367530], [2126125555, 41008148, 2049995592, 2060367530], [2126125555, 41008148, 2097184312, 2060367530], [2126125555, 41008148, 2072236214, 2060367530], [2126125555, 41008148, 1967777539, 2060367530], [2126125555, 41008148, 2069825033, 2060367530], [2126125555, 41008148, 2095955955, 2060367530], [2126125555, 41008148, 2018264451, 2060367530], [2126125555, 41008148, 2123611414, 2060367530], [2126125555, 41008148, 2100310139, 2060367530], [2126125555, 83665646, 2081048026, 2060367530], [2126125555, 41008148, 2081048026, 2060367530], [2126125555, 41008148, 2047606947, 2060367530], [2126125555, 41008148, 2139564752, 2060367530], [2126125555, 41008148, 2032938270, 2060367530], [2126125555, 41008148, 2082808011, 2060367530], [2126125555, 41008148, 2129838208, 2060367530], [2126125555, 41008148, 2145576157, 2060367530], [2126125555, 41008148, 2014403077, 2060367530], [2126125555, 41008148, 2132360165, 2060367530], [2126125555, 41008148, 2157475312, 2060367530], [2126125555, 41008148, 2156793801, 2060367530], [2126125555, 41008148, 2158348507, 2060367530], [2126125555, 41008148, 2017836137, 2060367530], [2126125555, 41008148, 2169910434, 2060367530], [2126125555, 41008148, 2097004253, 2060367530], [2126125555, 41008148, 2044151123, 2060367530], [2126125555, 41008148, 2120475512, 2060367530], [2126125555, 41008148, 2119290563, 2060367530], [2126125555, 41008148, 1675272512, 2060367530], [2126125555, 41008148, 2115262433, 2060367530], [2126125555, 83665646, 2151056738, 2060367530], [2126125555, 41008148, 2151056738, 2060367530], [2126125555, 41008148, 2087232378, 2060367530], [2126125555, 41008148, 2136857199, 2060367530], [2126125555, 41008148, 2025983492, 2060367530], [2126125555, 41008148, 2132637576, 2060367530], [2126125555, 41008148, 1975827861, 2060367530], [2126125555, 41008148, 2110270859, 2060367530], [2126125555, 83665646, 2111340031, 2060367530], [2126125555, 41008148, 2111340031, 2060367530], [2126125555, 83665646, 2124709175, 2060367530], [2126125555, 41008148, 2124709175, 2060367530], [2126125555, 41008148, 1982558124, 2060367530], [2126125555, 41008148, 2171921850, 2060367530], [2126125555, 41008148, 2076456422, 2060367530], [2126125555, 41008148, 2157685395, 2060367530], [2126125555, 41008148, 2010355864, 2060367530], [2126125555, 41008148, 2162852363, 2060367530], [2126125555, 41008148, 1978481011, 2060367530], [2126125555, 41008148, 2133075018, 2060367530], [2126125555, 41008148, 2027442956, 2060367530], [2126125555, 41008148, 1995845002, 2060367530], [2126125555, 41008148, 2100383651, 2060367530], [2126125555, 41008148, 2050235055, 2060367530], [2126125555, 41008148, 2098175874, 2060367530], [2126125555, 41008148, 2121808441, 2060367530], [2126125555, 41008148, 2087987373, 2060367530], [2126125555, 41008148, 2158819216, 2060367530], [2126125555, 83665646, 2030793934, 2060367530], [2126125555, 41008148, 2124410428, 2060367530], [2126125555, 41008148, 2050580711, 2060367530], [2126125555, 41008148, 2093998384, 2060367530], [2126125555, 41008148, 1971812886, 2060367530], [2126125555, 83665646, 2136420282, 2060367530], [2126125555, 41008148, 2136420282, 2060367530], [2126125555, 41008148, 2169426118, 2060367530], [2126125555, 136389625, 2109925767, 2060367530], [2126125555, 41008148, 2109925767, 2060367530], [2126125555, 41008148, 1559465747, 2060367530], [2126125555, 136389625, 2008643631, 2060367530], [2126125555, 41008148, 2169512939, 2060367530], [2126125555, 41008148, 2115281877, 2060367530], [2126125555, 41008148, 2052601987, 2060367530], [2126125555, 41008148, 2018301895, 2060367530], [2126125555, 41008148, 2065176792, 2060367530], [2126125555, 41008148, 2132322793, 2060367530], [2126125555, 41008148, 2143407407, 2060367530], [2126125555, 41008148, 2110911841, 2060367530], [2126125555, 41008148, 2127775588, 2060367530], [2126125555, 41008148, 2013390089, 2060367530], [2126125555, 41008148, 2095618661, 2060367530], [2126125555, 41008148, 2052311601, 2060367530], [2126125555, 41008148, 2029801487, 2060367530], [2126125555, 41008148, 2138087096, 2060367530], [2126125555, 150899416, 2062152791, 2060367530], [2126125555, 83665646, 2062152791, 2060367530], [2126125555, 41008148, 2062152791, 2060367530], [2126125555, 41008148, 2001583183, 2060367530], [2126125555, 41008148, 2131344613, 2060367530], [2126125555, 41008148, 2149369033, 2060367530], [2126125555, 41008148, 2161297056, 2060367530], [2126125555, 41008148, 2155802349, 2060367530], [2126125555, 41008148, 2124509762, 2060367530], [2126125555, 41008148, 1956944420, 2060367530], [2126125555, 41008148, 2002840041, 2060367530], [2126125555, 41008148, 2113844397, 2060367530], [2126125555, 83665646, 2093926387, 2060367530], [2126125555, 41008148, 2093926387, 2060367530], [2126125555, 41008148, 2018749988, 2060367530], [2126125555, 41008148, 2099695316, 2060367530], [2126125555, 41008148, 2159888472, 2060367530], [2126125555, 41008148, 2170395999, 2060367530], [2126125555, 41008148, 2128117783, 2060367530], [2126125555, 41008148, 2007057010, 2060367530], [2126125555, 41008148, 2163816481, 2060367530], [2126125555, 41008148, 2060079959, 2060367530], [2126125555, 41008148, 2130211837, 2060367530], [2126125555, 41008148, 1978318335, 2060367530], [2126125555, 41008148, 2093843821, 2060367530], [2126125555, 41008148, 1510773016, 2060367530], [2126125555, 41008148, 2041005477, 2060367530], [2126125555, 83665646, 2056315951, 2060367530], [2126125555, 41008148, 2056315951, 2060367530], [2126125555, 41008148, 1517847330, 2060367530], [2126125555, 41008148, 2140406248, 2060367530], [2126125555, 41008148, 2105737269, 2060367530], [2126125555, 41008148, 1973058695, 2060367530], [2126125555, 41008148, 2023507239, 2060367530], [2126125555, 41008148, 2159832601, 2060367530], [2126125555, 41008148, 2160540263, 2060367530], [2126125555, 41008148, 2164999894, 2060367530], [2126125555, 41008148, 1983793001, 2060367530], [2126125555, 41008148, 2001238876, 2060367530], [2126125555, 41008148, 2130789388, 2060367530], [2126125555, 136389625, 1964443072, 2060367530], [2126125555, 41008148, 1964443072, 2060367530], [2126125555, 41008148, 2170950938, 2060367530], [2126125555, 41008148, 2150688176, 2060367530], [2126125555, 41008148, 2152034960, 2060367530], [2126125555, 41008148, 2128803215, 2060367530], [2126125555, 41008148, 1973678258, 2060367530], [2126125555, 83665646, 2156652258, 2060367530], [2126125555, 41008148, 2156652258, 2060367530], [2126125555, 41008148, 2153291347, 2060367530], [2126125555, 41008148, 2107134036, 2060367530], [2126125555, 41008148, 2167310130, 2060367530], [2126125555, 41008148, 2006260073, 2060367530], [2126125555, 41008148, 1587078375, 2060367530], [2126125555, 41008148, 1994346605, 2060367530], [2126125555, 41008148, 2070849764, 2060367530], [2126125555, 41008148, 2109534047, 2060367530], [2126125555, 83665646, 2103316358, 2060367530], [2126125555, 41008148, 2103316358, 2060367530], [2126125555, 41008148, 2045262022, 2060367530], [2126125555, 41008148, 1971489298, 2060367530], [2126125555, 41008148, 2166987598, 2060367530], [2126125555, 41008148, 2150619134, 2060367530], [2126125555, 44249647, 2005032024, 2060367530], [2126125555, 41008148, 2005032024, 2060367530], [2126125555, 41008148, 2127786262, 2060367530], [2126125555, 41008148, 2160564965, 2060367530], [2126125555, 41008148, 2100054274, 2060367530], [2126125555, 41008148, 2125216345, 2060367530], [2126125555, 41008148, 1986324410, 2060367530], [2126125555, 136389625, 2074850442, 2060367530], [2126125555, 41008148, 2120128255, 2060367530], [2126125555, 41008148, 2140524605, 2060367530], [2126125555, 83665646, 2088915426, 2060367530], [2126125555, 41008148, 2088915426, 2060367530], [2126125555, 41008148, 2155073237, 2060367530], [2126125555, 41008148, 2122026259, 2060367530], [2126125555, 41008148, 232528759, 2060367530], [2126125555, 41008148, 2088344044, 2060367530], [2126125555, 41008148, 2129648876, 2060367530], [2126125555, 41008148, 1996029688, 2060367530], [2126125555, 41008148, 1970772238, 2060367530], [2126125555, 41008148, 1995277704, 2060367530], [2126125555, 83665646, 1605527784, 2060367530], [2126125555, 41008148, 1605527784, 2060367530], [2126125555, 41008148, 2055832063, 2060367530], [2126125555, 41008148, 2121648552, 2060367530], [2126125555, 41008148, 1971246129, 2060367530], [2126125555, 41008148, 2062071965, 2060367530], [2126125555, 41008148, 2030104143, 2060367530], [2126125555, 41008148, 1537832761, 2060367530], [2126125555, 41008148, 2165342893, 2060367530], [2126125555, 41008148, 2110698016, 2060367530], [2126125555, 41008148, 1985223995, 2060367530], [2126125555, 41008148, 2118293018, 2060367530], [2126125555, 41008148, 2100364402, 2060367530], [2126125555, 41008148, 1982901903, 2060367530], [2126125555, 41008148, 1991929674, 2060367530], [2126125555, 136389625, 1548614216, 2060367530], [2126125555, 41008148, 1548614216, 2060367530], [2126125555, 41008148, 1863390086, 2060367530], [2126125555, 41008148, 1588756676, 2060367530], [2126125555, 41008148, 2136549460, 2060367530], [2126125555, 41008148, 1990592622, 2060367530], [2126125555, 41008148, 2096958239, 2060367530], [2126125555, 41008148, 1832535073, 2060367530], [2126125555, 41008148, 2149234583, 2060367530], [2126125555, 41008148, 2014274316, 2060367530], [2126125555, 41008148, 2064149108, 2060367530], [2126125555, 41008148, 2104839952, 2060367530], [2126125555, 41008148, 1993014433, 2060367530], [2126125555, 41008148, 2097331689, 2060367530], [2126125555, 136389625, 2153989749, 2060367530], [2126125555, 41008148, 2153989749, 2060367530], [2126125555, 41008148, 2130464645, 2060367530], [2126125555, 41008148, 1988100576, 2060367530], [2126125555, 41008148, 2100846437, 2060367530], [2126125555, 41008148, 1974458659, 2060367530], [2126125555, 41008148, 2013850631, 2060367530], [2126125555, 41008148, 2062351244, 2060367530], [2126125555, 41008148, 2113968275, 2060367530], [2126125555, 41008148, 2150199594, 2060367530], [2126125555, 41008148, 2151379841, 2060367530], [2126125555, 41008148, 2032901444, 2060367530], [2126125555, 136389625, 1997885189, 2060367530], [2126125555, 41008148, 1997885189, 2060367530], [2126125555, 41008148, 2115647273, 2060367530], [2126125555, 83665646, 2130813649, 2060367530], [2126125555, 41008148, 2130813649, 2060367530], [2126125555, 41008148, 2092114106, 2060367530], [2126125555, 41008148, 2171607657, 2060367530], [2126125555, 150899416, 1544165511, 2060367530], [2126125555, 41008148, 1544165511, 2060367530], [2126125555, 2109031554, 1544165511, 2060367530], [2126125555, 41008148, 1993011479, 2060367530], [2126125555, 41008148, 2039364821, 2060367530], [2126125555, 41008148, 2112204321, 2060367530], [2126125555, 41008148, 1979714143, 2060367530], [2126125555, 41008148, 2158006878, 2060367530], [2126125555, 41008148, 2113458744, 2060367530], [2126125555, 41008148, 2015362166, 2060367530], [2126125555, 41008148, 1487934831, 2060367530], [2126125555, 41008148, 2087067283, 2060367530], [2126125555, 41008148, 2103697417, 2060367530], [2126125555, 41008148, 2026386069, 2060367530], [2126125555, 41008148, 1991556665, 2060367530], [2126125555, 41008148, 2092919167, 2060367530], [2126125555, 41008148, 2160969074, 2060367530], [2126125555, 41008148, 2063891319, 2060367530], [2126125555, 41008148, 2152449524, 2060367530], [2126125555, 41008148, 2002815072, 2060367530], [2126125555, 41008148, 2040248838, 2060367530], [2126125555, 41008148, 1991361881, 2060367530], [2126125555, 41008148, 2110658950, 2060367530], [2126125555, 83665646, 2145084154, 2060367530], [2126125555, 41008148, 2062000081, 2060367530], [2126125555, 83665646, 1999105256, 2060367530], [2126125555, 41008148, 1999105256, 2060367530], [2126125555, 41008148, 2006824146, 2060367530], [2126125555, 41008148, 2141178575, 2060367530], [2126125555, 41008148, 2103195393, 2060367530], [2126125555, 41008148, 2035337734, 2060367530], [2126125555, 41008148, 1496074086, 2060367530], [2126125555, 41008148, 2165388595, 2060367530], [2126125555, 41008148, 2146153407, 2060367530], [2126125555, 41008148, 2163640899, 2060367530], [2126125555, 83665646, 2161425550, 2060367530], [2126125555, 41008148, 2161425550, 2060367530], [2126125555, 41008148, 2017980367, 2060367530], [2126125555, 41008148, 2168479832, 2060367530], [2126125555, 41008148, 2106032822, 2060367530], [2126125555, 41008148, 2122550504, 2060367530], [2126125555, 41008148, 1533647702, 2060367530], [2126125555, 41008148, 2167388003, 2060367530], [2126125555, 41008148, 2143672099, 2060367530], [2126125555, 41008148, 2059981627, 2060367530], [2126125555, 41008148, 2094269252, 2060367530], [2126125555, 41008148, 2117517910, 2060367530], [2126125555, 41008148, 2166691320, 2060367530], [2126125555, 41008148, 2172272445, 2060367530], [2126125555, 41008148, 2144087394, 2060367530], [2126125555, 41008148, 1978015525, 2060367530], [2126125555, 136389625, 2119281377, 2060367530], [2126125555, 41008148, 2119281377, 2060367530], [2126125555, 41008148, 2113751382, 2060367530], [2126125555, 83665646, 2143763906, 2060367530], [2126125555, 41008148, 2143763906, 2060367530], [2126125555, 41008148, 2166214172, 2060367530], [2126125555, 41008148, 2081894181, 2060367530], [2126125555, 41008148, 1998451602, 2060367530], [2126125555, 41008148, 2154316540, 2060367530], [2126125555, 41008148, 1967000320, 2060367530], [2126125555, 41008148, 2029376156, 2060367530], [2126125555, 41008148, 2125068387, 2060367530], [2126125555, 136389625, 196773820, 2060367530], [2126125555, 41008148, 196773820, 2060367530], [2126125555, 41008148, 2041124103, 2060367530], [2126125555, 41008148, 2116603180, 2060367530], [2126125555, 41008148, 1523663624, 2060367530], [2126125555, 41008148, 2167978511, 2060367530], [2126125555, 41008148, 2091760137, 2060367530], [2126125555, 41008148, 2066171225, 2060367530], [2126125555, 41008148, 2164229718, 2060367530], [2126125555, 41008148, 2032867948, 2060367530], [2126125555, 41008148, 2078380024, 2060367530], [2126125555, 136389625, 2144686729, 2060367530], [2126125555, 41008148, 2144686729, 2060367530], [2126125555, 41008148, 2251567929, 2060367530], [2126125555, 41008148, 2118425207, 2060367530], [2126125555, 41008148, 1524004284, 2060367530], [2126125555, 41008148, 2166636227, 2060367530], [2126125555, 41008148, 1974488018, 2060367530], [2126125555, 41008148, 1993368280, 2060367530], [2126125555, 41008148, 2050801860, 2060367530], [2126125555, 41008148, 2164597199, 2060367530], [2126125555, 41008148, 2023016123, 2060367530], [2126125555, 41008148, 1978176240, 2060367530], [2126125555, 41008148, 2154014663, 2060367530], [2126125555, 41008148, 2144894928, 2060367530], [2126125555, 136389625, 1999172275, 2060367530], [2126125555, 41008148, 2145348031, 2060367530], [2126125555, 41008148, 2109705661, 2060367530], [2126125555, 41008148, 2136130862, 2060367530], [2126125555, 136389625, 2139252659, 2060367530], [2126125555, 41008148, 2138079732, 2060367530], [2126125555, 41008148, 2069907961, 2060367530], [2126125555, 41008148, 2065398998, 2060367530], [2126125555, 41008148, 2156227942, 2060367530], [2126125555, 41008148, 2131470200, 2060367530], [2126125555, 41008148, 2106221629, 2060367530], [2126125555, 41008148, 1530209776, 2060367530], [2126125555, 41008148, 2158061226, 2060367530], [2126125555, 41008148, 2139453370, 2060367530], [2126125555, 41008148, 2140829281, 2060367530], [2126125555, 83665646, 2048660210, 2060367530], [2126125555, 41008148, 2048660210, 2060367530], [2126125555, 41008148, 1964118303, 2060367530], [2126125555, 41008148, 2026895667, 2060367530], [2126125555, 41008148, 1969579560, 2060367530], [2126125555, 41008148, 2010177220, 2060367530], [2126125555, 41008148, 2100882899, 2060367530], [2126125555, 41008148, 1967209541, 2060367530], [2126125555, 41008148, 2043081668, 2060367530], [2126125555, 41008148, 1971047516, 2060367530], [2126125555, 41008148, 2009708400, 2060367530], [2126125555, 41008148, 2048269893, 2060367530], [2126125555, 83665646, 1967954218, 2060367530], [2126125555, 41008148, 1967954218, 2060367530], [2126125555, 197046077, 2022987557, 2060367530], [2126125555, 41008148, 2022987557, 2060367530], [2126125555, 41008148, 2018630598, 2060367530], [2126125555, 41008148, 1916649859, 2060367530], [2126125555, 41008148, 2144336224, 2060367530], [2126125555, 41008148, 2121439273, 2060367530], [2126125555, 41008148, 2085384144, 2060367530], [2126125555, 41008148, 1965429011, 2060367530], [2126125555, 41008148, 2013396374, 2060367530], [2126125555, 41008148, 1968161371, 2060367530], [2126125555, 41008148, 2154528686, 2060367530], [2126125555, 83665646, 1536988052, 2060367530], [2126125555, 41008148, 1536988052, 2060367530], [2126125555, 41008148, 1965414634, 2060367530], [2126125555, 41008148, 2102219905, 2060367530], [2126125555, 41008148, 2017109120, 2060367530], [2126125555, 41008148, 2129578806, 2060367530], [2126125555, 41008148, 2095900655, 2060367530], [2126125555, 41008148, 1995285602, 2060367530], [2126125555, 41008148, 2169796734, 2060367530], [2126125555, 41008148, 2019120673, 2060367530], [2126125555, 41008148, 2035859056, 2060367530], [2126125555, 41008148, 2032038941, 2060367530], [2126125555, 41008148, 2042100018, 2060367530], [2126125555, 41008148, 2074762460, 2060367530], [2126125555, 41008148, 2153448690, 2060367530], [2126125555, 41008148, 2135217050, 2060367530], [2126125555, 41008148, 1605883285, 2060367530], [2126125555, 41008148, 1488357069, 2060367530], [2126125555, 41008148, 1534334391, 2060367530], [2126125555, 41008148, 2113410382, 2060367530], [2126125555, 41008148, 2112763234, 2060367530], [2126125555, 41008148, 2043265719, 2060367530], [2126125555, 41008148, 1977030628, 2060367530], [2126125555, 41008148, 2011847587, 2060367530], [2126125555, 41008148, 1966654857, 2060367530], [2126125555, 41008148, 2059447090, 2060367530], [2126125555, 41008148, 2127854316, 2060367530], [2126125555, 41008148, 2127230571, 2060367530], [2126125555, 41008148, 2054822316, 2060367530], [2126125555, 41008148, 2165784799, 2060367530], [2126125555, 41008148, 1974899343, 2060367530], [2126125555, 41008148, 1996999443, 2060367530], [2126125555, 41008148, 2032441077, 2060367530], [2126125555, 41008148, 2100726125, 2060367530], [2126125555, 41008148, 2105360341, 2060367530], [2126125555, 41008148, 2070762377, 2060367530], [2126125555, 41008148, 2165017404, 2060367530], [2126125555, 41008148, 2147283272, 2060367530], [2126125555, 41008148, 2097446478, 2060367530], [2126125555, 41008148, 2127406992, 2060367530], [2126125555, 41008148, 1975079639, 2060367530], [2126125555, 41008148, 2053877850, 2060367530], [2126125555, 41008148, 2078383409, 2060367530], [2126125555, 41008148, 2134452881, 2060367530], [2126125555, 41008148, 2086315650, 2060367530], [2126125555, 41008148, 2137690105, 2060367530], [2126125555, 41008148, 2042230250, 2060367530], [2126125555, 41008148, 2162009929, 2060367530], [2126125555, 41008148, 1992468982, 2060367530], [2126125555, 41008148, 2016816824, 2060367530], [2126125555, 41008148, 2168761589, 2060367530], [2126125555, 41008148, 128063544, 2060367530], [2126125555, 41008148, 2155045454, 2060367530], [2126125555, 41008148, 2121173992, 2060367530], [2126125555, 136389625, 2121393587, 2060367530], [2126125555, 41008148, 2121393587, 2060367530], [2126125555, 41008148, 2034151668, 2060367530], [2126125555, 41008148, 2109839807, 2060367530], [2126125555, 136389625, 2154487873, 2060367530], [2126125555, 41008148, 2154487873, 2060367530], [2126125555, 41008148, 2147867287, 2060367530], [2126125555, 41008148, 2111749799, 2060367530], [2126125555, 41008148, 2159866988, 2060367530], [2126125555, 41008148, 1976905255, 2060367530], [2126125555, 41008148, 2158619747, 2060367530], [2126125555, 41008148, 2170112669, 2060367530], [2126125555, 41008148, 2139722593, 2060367530], [2126125555, 41008148, 2146977819, 2060367530], [2126125555, 41008148, 1977687024, 2060367530], [2126125555, 41008148, 2055699991, 2060367530], [2126125555, 41008148, 2114534492, 2060367530], [2126125555, 41008148, 2043492194, 2060367530], [2126125555, 136389625, 2108544580, 2060367530], [2126125555, 41008148, 2108544580, 2060367530], [2126125555, 41008148, 2144792090, 2060367530], [2126125555, 83665646, 1981722221, 2060367530], [2126125555, 41008148, 2112519824, 2060367530], [2126125555, 41008148, 2245176828, 2060367530], [2126125555, 41008148, 2042162260, 2060367530], [2126125555, 41008148, 2078628467, 2060367530], [2126125555, 41008148, 2171092999, 2060367530], [2126125555, 41008148, 2115140232, 2060367530], [2126125555, 41008148, 2144727125, 2060367530], [2126125555, 41008148, 2082269221, 2060367530], [2126125555, 41008148, 1976524151, 2060367530], [2126125555, 41008148, 2122312880, 2060367530], [2126125555, 41008148, 1967609592, 2060367530], [2126125555, 41008148, 2070439790, 2060367530], [2126125555, 41008148, 2100449765, 2060367530], [2126125555, 83665646, 2094445711, 2060367530], [2126125555, 41008148, 2094445711, 2060367530], [2126125555, 41008148, 1976505338, 2060367530], [2126125555, 41008148, 2157163921, 2060367530], [2126125555, 41008148, 1978705241, 2060367530], [2126125555, 41008148, 2171056096, 2060367530], [2126125555, 41008148, 1905153633, 2060367530], [2126125555, 41008148, 2039365749, 2060367530], [2126125555, 41008148, 1983097586, 2060367530], [2126125555, 41008148, 1991868507, 2060367530], [2126125555, 41008148, 2063752917, 2060367530], [2126125555, 41008148, 2156868547, 2060367530], [2126125555, 41008148, 2005701088, 2060367530], [2126125555, 41008148, 2064722886, 2060367530], [2126125555, 41008148, 1991589570, 2060367530], [2126125555, 41008148, 2054622577, 2060367530], [2126125555, 41008148, 2166467897, 2060367530], [2126125555, 136389625, 2021581933, 2060367530], [2126125555, 41008148, 2021581933, 2060367530], [2126125555, 41008148, 1543232008, 2060367530], [2126125555, 41008148, 2080714465, 2060367530], [2126125555, 41008148, 2062112423, 2060367530], [2126125555, 83665646, 2152941520, 2060367530], [2126125555, 41008148, 2152941520, 2060367530], [2126125555, 41008148, 1996596464, 2060367530], [2126125555, 41008148, 2113513024, 2060367530], [2126125555, 41008148, 2145214215, 2060367530], [2126125555, 41008148, 2081889466, 2060367530], [2126125555, 41008148, 2050855115, 2060367530], [2126125555, 41008148, 2117101597, 2060367530], [2126125555, 41008148, 2022845284, 2060367530], [2126125555, 41008148, 2140987615, 2060367530], [2126125555, 41008148, 2121241734, 2060367530], [2126125555, 41008148, 2156383341, 2060367530], [2126125555, 41008148, 2077229105, 2060367530], [2126125555, 41008148, 1868516946, 2060367530], [2126125555, 41008148, 2074651608, 2060367530], [2126125555, 41008148, 2131542408, 2060367530], [2126125555, 41008148, 1980527312, 2060367530], [2126125555, 41008148, 1491462408, 2060367530], [2126125555, 41008148, 2001967162, 2060367530], [2126125555, 41008148, 2128409240, 2060367530], [2126125555, 41008148, 2106277226, 2060367530], [2126125555, 41008148, 2060989250, 2060367530], [2126125555, 41008148, 1558528538, 2060367530], [2126125555, 41008148, 1970050892, 2060367530], [2126125555, 41008148, 1792924715, 2060367530], [2126125555, 41008148, 2096013205, 2060367530], [2126125555, 2109031554, 2096013205, 2060367530], [2126125555, 41008148, 2057818876, 2060367530], [2126125555, 41008148, 2126101541, 2060367530], [2126125555, 41008148, 2062212345, 2060367530], [2126125555, 41008148, 2027629403, 2060367530], [2126125555, 41008148, 2086413597, 2060367530], [2126125555, 41008148, 2032052034, 2060367530], [2126125555, 41008148, 2016835686, 2060367530], [2126125555, 41008148, 193213977, 2060367530], [2126125555, 41008148, 1822476439, 2060367530], [2126125555, 41008148, 1997750524, 2060367530], [2126125555, 41008148, 2149745785, 2060367530], [2126125555, 41008148, 2063734355, 2060367530], [2126125555, 83665646, 2053552294, 2060367530], [2126125555, 41008148, 2053552294, 2060367530], [2126125555, 41008148, 1608724047, 2060367530], [2126125555, 41008148, 2116283693, 2060367530], [2126125555, 41008148, 2137832790, 2060367530], [2126125555, 136389625, 2057123654, 2060367530], [2126125555, 41008148, 2057123654, 2060367530], [2126125555, 41008148, 2151213737, 2060367530], [2126125555, 41008148, 2098838282, 2060367530], [2126125555, 41008148, 1997079092, 2060367530], [2126125555, 41008148, 2148511782, 2060367530], [2126125555, 41008148, 2081927152, 2060367530], [2126125555, 41008148, 1968098929, 2060367530], [2126125555, 41008148, 2164800394, 2060367530], [2126125555, 41008148, 2107097041, 2060367530], [2126125555, 41008148, 2137228371, 2060367530], [2126125555, 83665646, 1997221694, 2060367530], [2126125555, 41008148, 1997221694, 2060367530], [2126125555, 41008148, 2169559860, 2060367530], [2126125555, 41008148, 1742033587, 2060367530], [2126125555, 41008148, 1989298229, 2060367530], [2126125555, 41008148, 1997007937, 2060367530], [2126125555, 41008148, 2147824299, 2060367530], [2126125555, 136389625, 1872375678, 2060367530], [2126125555, 41008148, 1872375678, 2060367530], [2126125555, 41008148, 2036589699, 2060367530], [2126125555, 41008148, 2149866111, 2060367530], [2126125555, 41008148, 2152096631, 2060367530], [2126125555, 41008148, 2049323762, 2060367530], [2126125555, 41008148, 1981479313, 2060367530], [2126125555, 41008148, 2158522957, 2060367530], [2126125555, 41008148, 1568520625, 2060367530], [2126125555, 41008148, 2117001265, 2060367530], [2126125555, 41008148, 2093370758, 2060367530], [2126125555, 41008148, 2135030552, 2060367530], [2126125555, 41008148, 2023281330, 2060367530], [2126125555, 41008148, 1963733777, 2060367530], [2126125555, 41008148, 2086658417, 2060367530], [2126125555, 41008148, 2118374803, 2060367530], [2126125555, 41008148, 1505479281, 2060367530], [2126125555, 41008148, 1973288659, 2060367530], [2126125555, 41008148, 2084036798, 2060367530], [2126125555, 41008148, 2009045943, 2060367530], [2126125555, 41008148, 1953764758, 2060367530], [2126125555, 41008148, 1981681015, 2060367530], [2126125555, 41008148, 2149863771, 2060367530], [2126125555, 136389625, 2303923175, 2060367530], [2126125555, 41008148, 2303923175, 2060367530], [2126125555, 41008148, 1537803750, 2060367530], [2126125555, 41008148, 2109248887, 2060367530], [2126125555, 41008148, 2069631844, 2060367530], [2126125555, 41008148, 1978099323, 2060367530], [2126125555, 41008148, 2159118500, 2060367530], [2126125555, 41008148, 2070762699, 2060367530], [2126125555, 41008148, 2088890756, 2060367530], [2126125555, 41008148, 1792003674, 2060367530], [2126125555, 41008148, 2065713906, 2060367530], [2126125555, 41008148, 1964137961, 2060367530], [2126125555, 41008148, 2012901092, 2060367530], [2126125555, 41008148, 2115472467, 2060367530], [2126125555, 41008148, 1992897185, 2060367530], [2126125555, 41008148, 2111727091, 2060367530], [2126125555, 41008148, 2111073379, 2060367530], [2126125555, 41008148, 2112525998, 2060367530], [2126125555, 41008148, 2124341039, 2060367530], [2126125555, 41008148, 2022314287, 2060367530], [2126125555, 41008148, 1562134415, 2060367530], [2126125555, 41008148, 1907195750, 2060367530], [2126125555, 41008148, 57756443, 2060367530], [2126125555, 41008148, 2130589815, 2060367530], [2126125555, 136389625, 2101647316, 2060367530], [2126125555, 41008148, 1485026097, 2060367530], [2126125555, 41008148, 2032437475, 2060367530], [2126125555, 41008148, 2067812998, 2060367530], [2126125555, 41008148, 1966815444, 2060367530], [2126125555, 41008148, 2064119490, 2060367530], [2126125555, 41008148, 2157902119, 2060367530], [2126125555, 41008148, 2143682047, 2060367530], [2126125555, 41008148, 2171446500, 2060367530], [2126125555, 41008148, 2019942604, 2060367530], [2126125555, 83665646, 1990470491, 2060367530], [2126125555, 41008148, 1990470491, 2060367530], [2126125555, 136389625, 2145424379, 2060367530], [2126125555, 41008148, 2145424379, 2060367530], [2126125555, 41008148, 2003662620, 2060367530], [2126125555, 83665646, 2105897869, 2060367530], [2126125555, 41008148, 2105897869, 2060367530], [2126125555, 41008148, 2097205059, 2060367530], [2126125555, 83665646, 1562470308, 2060367530], [2126125555, 41008148, 1562470308, 2060367530], [2126125555, 41008148, 2058119134, 2060367530], [2126125555, 41008148, 2118889606, 2060367530], [2126125555, 41008148, 2143222441, 2060367530], [2126125555, 41008148, 1869695074, 2060367530], [2126125555, 41008148, 2147157390, 2060367530], [2126125555, 41008148, 2043888598, 2060367530], [2126125555, 41008148, 1967259944, 2060367530], [2126125555, 41008148, 2028053538, 2060367530], [2126125555, 41008148, 115948432, 2060367530], [2126125555, 41008148, 2101687885, 2060367530], [2126125555, 197046077, 2160387459, 2060367530], [2126125555, 41008148, 2160387459, 2060367530], [2126125555, 41008148, 1972744737, 2060367530], [2126125555, 41008148, 2139421285, 2060367530], [2126125555, 41008148, 2065768257, 2060367530], [2126125555, 41008148, 1586342396, 2060367530], [2126125555, 41008148, 2167355643, 2060367530], [2126125555, 41008148, 2121465628, 2060367530], [2126125555, 83665646, 1536156198, 2060367530], [2126125555, 41008148, 1536156198, 2060367530], [2126125555, 41008148, 2095175954, 2060367530], [2126125555, 136389625, 1974124880, 2060367530], [2126125555, 41008148, 1974124880, 2060367530], [2126125555, 41008148, 2083306835, 2060367530], [2126125555, 41008148, 2091989959, 2060367530], [2126125555, 41008148, 2115529059, 2060367530], [2126125555, 41008148, 2028796024, 2060367530], [2126125555, 41008148, 2138875721, 2060367530], [2126125555, 41008148, 2099778902, 2060367530], [2126125555, 41008148, 2094576104, 2060367530], [2126125555, 41008148, 2162434667, 2060367530], [2126125555, 41008148, 2082041466, 2060367530], [2126125555, 41008148, 1985986137, 2060367530], [2126125555, 41008148, 2019607443, 2060367530], [2126125555, 41008148, 2065056225, 2060367530], [2126125555, 41008148, 1985580475, 2060367530], [2126125555, 41008148, 1552057631, 2060367530], [2126125555, 41008148, 1566953353, 2060367530], [2126125555, 41008148, 2029186581, 2060367530], [2126125555, 41008148, 1526796063, 2060367530], [2126125555, 41008148, 2079392363, 2060367530], [2126125555, 41008148, 2086349765, 2060367530], [2126125555, 41008148, 2043383144, 2060367530], [2126125555, 41008148, 2078662433, 2060367530], [2126125555, 41008148, 1864170427, 2060367530], [2126125555, 41008148, 1985101862, 2060367530], [2126125555, 41008148, 2045250232, 2060367530], [2126125555, 41008148, 1971816655, 2060367530], [2126125555, 41008148, 2047077837, 2060367530], [2126125555, 41008148, 2160857560, 2060367530], [2126125555, 41008148, 1996932677, 2060367530], [2126125555, 41008148, 2162598089, 2060367530], [2126125555, 41008148, 1991713115, 2060367530], [2126125555, 136389625, 2156362066, 2060367530], [2126125555, 41008148, 2156362066, 2060367530], [2126125555, 41008148, 2145611197, 2060367530], [2126125555, 41008148, 2110400261, 2060367530], [2126125555, 41008148, 2034256925, 2060367530], [2126125555, 41008148, 2019301455, 2060367530], [2126125555, 41008148, 2071255734, 2060367530], [2126125555, 41008148, 2132336703, 2060367530], [2126125555, 41008148, 2154232808, 2060367530], [2126125555, 136389625, 2014945137, 2060367530], [2126125555, 41008148, 2014945137, 2060367530], [2126125555, 41008148, 2093610415, 2060367530], [2126125555, 41008148, 2028419679, 2060367530], [2126125555, 41008148, 2103121549, 2060367530], [2126125555, 41008148, 2015591846, 2060367530], [2126125555, 41008148, 1575168451, 2060367530], [2126125555, 41008148, 2058514560, 2060367530], [2126125555, 41008148, 2108821163, 2060367530], [2126125555, 41008148, 1919798942, 2060367530], [2126125555, 41008148, 2066348923, 2060367530], [2126125555, 41008148, 2045331152, 2060367530], [2126125555, 41008148, 2039836104, 2060367530], [2126125555, 41008148, 2102997898, 2060367530], [2126125555, 41008148, 2050587358, 2060367530], [2126125555, 41008148, 2083714852, 2060367530], [2126125555, 41008148, 2065433699, 2060367530], [2126125555, 41008148, 2009810445, 2060367530], [2126125555, 41008148, 2048093796, 2060367530], [2126125555, 41008148, 2131752625, 2060367530], [2126125555, 41008148, 2089563341, 2060367530], [2126125555, 44249647, 2138538314, 2060367530], [2126125555, 41008148, 2138538314, 2060367530], [2126125555, 41008148, 2080009139, 2060367530], [2126125555, 136389625, 1987226204, 2060367530], [2126125555, 41008148, 1987226204, 2060367530], [2126125555, 41008148, 2171711921, 2060367530], [2126125555, 41008148, 2143816742, 2060367530], [2126125555, 41008148, 2051570664, 2060367530], [2126125555, 41008148, 2127893101, 2060367530], [2126125555, 41008148, 2159925876, 2060367530], [2126125555, 41008148, 2131319366, 2060367530], [2126125555, 41008148, 1880350029, 2060367530], [2126125555, 41008148, 2160600098, 2060367530], [2126125555, 41008148, 1998851950, 2060367530], [2126125555, 41008148, 2149268165, 2060367530], [2126125555, 41008148, 2165525622, 2060367530], [2126125555, 136389625, 2164810648, 2060367530], [2126125555, 41008148, 2164810648, 2060367530], [2126125555, 41008148, 1965801346, 2060367530], [2126125555, 41008148, 2058255172, 2060367530], [2126125555, 83665646, 2123317149, 2060367530], [2126125555, 41008148, 2123317149, 2060367530], [2126125555, 41008148, 2105461827, 2060367530], [2126125555, 41008148, 2165690232, 2060367530], [2126125555, 41008148, 2048793796, 2060367530], [2126125555, 41008148, 1561789977, 2060367530], [2126125555, 41008148, 1985020045, 2060367530], [2126125555, 41008148, 2139111279, 2060367530], [2126125555, 41008148, 2051137709, 2060367530], [2126125555, 41008148, 1975557788, 2060367530], [2126125555, 41008148, 2059797154, 2060367530], [2126125555, 41008148, 2057148167, 2060367530], [2126125555, 41008148, 2032314390, 2060367530], [2126125555, 41008148, 2005489626, 2060367530], [2126125555, 41008148, 2041130468, 2060367530], [2126125555, 41008148, 2113229145, 2060367530], [2126125555, 41008148, 2017330456, 2060367530], [2126125555, 41008148, 2088353053, 2060367530], [2126125555, 41008148, 2134409166, 2060367530], [2126125555, 41008148, 2119603641, 2060367530], [2126125555, 41008148, 2170510631, 2060367530], [2126125555, 83665646, 2030410423, 2060367530], [2126125555, 41008148, 2030410423, 2060367530], [2126125555, 41008148, 2121889065, 2060367530], [2126125555, 41008148, 2049674335, 2060367530], [2126125555, 41008148, 2166770220, 2060367530], [2126125555, 41008148, 1982150766, 2060367530], [2126125555, 41008148, 2092627616, 2060367530], [2126125555, 41008148, 2030873237, 2060367530], [2126125555, 41008148, 2057326322, 2060367530], [2126125555, 41008148, 1505108273, 2060367530], [2126125555, 41008148, 2019451007, 2060367530], [2126125555, 41008148, 2149389315, 2060367530], [2126125555, 41008148, 2049477141, 2060367530], [2126125555, 41008148, 2042039446, 2060367530], [2126125555, 41008148, 2115059987, 2060367530], [2126125555, 41008148, 2148267504, 2060367530], [2126125555, 41008148, 2128594680, 2060367530], [2126125555, 41008148, 1492062384, 2060367530], [2126125555, 41008148, 2163176424, 2060367530], [2126125555, 41008148, 2156209126, 2060367530], [2126125555, 136389625, 2040801950, 2060367530], [2126125555, 41008148, 2040801950, 2060367530], [2126125555, 41008148, 2104555144, 2060367530], [2126125555, 41008148, 2152770325, 2060367530], [2126125555, 41008148, 2112832917, 2060367530], [2126125555, 41008148, 2018204224, 2060367530], [2126125555, 41008148, 2105432836, 2060367530], [2126125555, 41008148, 2151509918, 2060367530], [2126125555, 41008148, 1499202269, 2060367530], [2126125555, 41008148, 1824159260, 2060367530], [2126125555, 41008148, 2120839833, 2060367530], [2126125555, 41008148, 2038181824, 2060367530], [2126125555, 41008148, 2169423212, 2060367530], [2126125555, 41008148, 2114644511, 2060367530], [2126125555, 41008148, 2106296076, 2060367530], [2126125555, 41008148, 2117140135, 2060367530], [2126125555, 41008148, 2154218709, 2060367530], [2126125555, 41008148, 1607350267, 2060367530], [2126125555, 83665646, 1555944313, 2060367530], [2126125555, 41008148, 1555944313, 2060367530], [2126125555, 41008148, 1807800941, 2060367530], [2126125555, 41008148, 2142245126, 2060367530], [2126125555, 41008148, 2138285796, 2060367530], [2126125555, 41008148, 2125617266, 2060367530], [2126125555, 41008148, 1571861579, 2060367530], [2126125555, 41008148, 2167411155, 2060367530], [2126125555, 41008148, 2034249906, 2060367530], [2126125555, 41008148, 2111478553, 2060367530], [2126125555, 41008148, 2017499485, 2060367530], [2126125555, 41008148, 1569401919, 2060367530], [2126125555, 41008148, 2087560201, 2060367530], [2126125555, 41008148, 2087788978, 2060367530], [2126125555, 41008148, 1997346006, 2060367530], [2126125555, 41008148, 2112129724, 2060367530], [2126125555, 41008148, 2085316814, 2060367530], [2126125555, 41008148, 1537838346, 2060367530], [2126125555, 41008148, 1496685878, 2060367530], [2126125555, 41008148, 2126471258, 2060367530], [2126125555, 41008148, 2037717620, 2060367530], [2126125555, 41008148, 2114759952, 2060367530], [2126125555, 41008148, 1984059392, 2060367530], [2126125555, 41008148, 2033717092, 2060367530], [2126125555, 41008148, 1963610264, 2060367530], [2126125555, 41008148, 1820874639, 2060367530], [2126125555, 41008148, 2091421113, 2060367530], [2126125555, 41008148, 1973516775, 2060367530], [2126125555, 41008148, 2092551136, 2060367530], [2126125555, 41008148, 2099746384, 2060367530], [2126125555, 41008148, 1866881459, 2060367530], [2126125555, 41008148, 2118319513, 2060367530], [2126125555, 41008148, 2157485565, 2060367530], [2126125555, 41008148, 2058104757, 2060367530], [2126125555, 41008148, 2088078851, 2060367530], [2126125555, 41008148, 1992705103, 2060367530], [2126125555, 41008148, 2149141985, 2060367530], [2126125555, 41008148, 2158168589, 2060367530], [2126125555, 41008148, 2049245185, 2060367530], [2126125555, 41008148, 2001438368, 2060367530], [2126125555, 41008148, 2136790888, 2060367530], [2126125555, 41008148, 2154810660, 2060367530], [2126125555, 41008148, 2026289900, 2060367530], [2126125555, 41008148, 2132094875, 2060367530], [2126125555, 41008148, 1901361661, 2060367530], [2126125555, 41008148, 2131767821, 2060367530], [2126125555, 41008148, 2099781186, 2060367530], [2126125555, 41008148, 2106955188, 2060367530], [2126125555, 41008148, 2148665023, 2060367530], [2126125555, 41008148, 2029282302, 2060367530], [2126125555, 41008148, 2162004655, 2060367530], [2126125555, 41008148, 2148341532, 2060367530], [2126125555, 41008148, 2171295431, 2060367530], [2126125555, 41008148, 2126927975, 2060367530], [2126125555, 41008148, 2103205368, 2060367530], [2126125555, 41008148, 2150540137, 2060367530], [2126125555, 41008148, 2155655769, 2060367530], [2126125555, 41008148, 1517456234, 2060367530], [2126125555, 41008148, 2039797595, 2060367530], [2126125555, 41008148, 1556588158, 2060367530], [2126125555, 41008148, 2163254690, 2060367530], [2126125555, 41008148, 2039883799, 2060367530], [2126125555, 41008148, 2097818823, 2060367530], [2126125555, 41008148, 2165462885, 2060367530], [2126125555, 41008148, 2162230175, 2060367530], [2126125555, 41008148, 2096855366, 2060367530], [2126125555, 41008148, 1978380814, 2060367530], [2126125555, 41008148, 2168633946, 2060367530], [2126125555, 41008148, 1869416169, 2060367530], [2126125555, 41008148, 1969301211, 2060367530], [2126125555, 41008148, 2100768460, 2060367530], [2126125555, 41008148, 2100727996, 2060367530], [2126125555, 41008148, 2121372777, 2060367530], [2126125555, 41008148, 2170005069, 2060367530], [2126125555, 41008148, 2118818962, 2060367530], [2126125555, 41008148, 1993193417, 2060367530], [2126125555, 41008148, 2046688814, 2060367530], [2126125555, 41008148, 2131797280, 2060367530], [2126125555, 41008148, 2097550833, 2060367530], [2126125555, 41008148, 1480499335, 2060367530], [2126125555, 41008148, 2148585824, 2060367530], [2126125555, 41008148, 2163694847, 2060367530], [2126125555, 41008148, 2072036782, 2060367530], [2126125555, 41008148, 1640833237, 2060367530], [2126125555, 41008148, 2135500128, 2060367530], [2126125555, 41008148, 2137446405, 2060367530], [2126125555, 41008148, 2094628421, 2060367530], [2126125555, 41008148, 2134043135, 2060367530], [2126125555, 83665646, 1993579752, 2060367530], [2126125555, 41008148, 2013261143, 2060367530], [2126125555, 41008148, 2045157414, 2060367530], [2126125555, 41008148, 2123229421, 2060367530], [2126125555, 41008148, 2118697335, 2060367530], [2126125555, 41008148, 1975597002, 2060367530], [2126125555, 41008148, 2122810184, 2060367530], [2126125555, 41008148, 2098165694, 2060367530], [2126125555, 41008148, 2157145558, 2060367530], [2126125555, 41008148, 2090603553, 2060367530], [2126125555, 41008148, 2124892836, 2060367530], [2126125555, 41008148, 1976683758, 2060367530], [2126125555, 41008148, 2103278824, 2060367530], [2126125555, 41008148, 2078127574, 2060367530], [2126125555, 41008148, 2007081094, 2060367530], [2126125555, 41008148, 2135677493, 2060367530], [2126125555, 41008148, 2150787276, 2060367530], [2126125555, 41008148, 2085619158, 2060367530], [2126125555, 41008148, 2140848350, 2060367530], [2126125555, 41008148, 2020533597, 2060367530], [2126125555, 41008148, 1971371955, 2060367530], [2126125555, 41008148, 987297356, 2060367530], [2126125555, 41008148, 2073399879, 2060367530], [2126125555, 41008148, 2023244644, 2060367530], [2126125555, 41008148, 2004086221, 2060367530], [2126125555, 41008148, 2093803733, 2060367530], [2126125555, 41008148, 2167604630, 2060367530], [2126125555, 41008148, 1975660996, 2060367530], [2126125555, 41008148, 2051794358, 2060367530], [2126125555, 41008148, 2164527577, 2060367530], [2126125555, 83665646, 2097062438, 2060367530], [2126125555, 41008148, 2097062438, 2060367530], [2126125555, 41008148, 2153030642, 2060367530], [2126125555, 41008148, 1496227086, 2060367530], [2126125555, 41008148, 2122925131, 2060367530], [2126125555, 41008148, 2054676558, 2060367530], [2126125555, 41008148, 2160853918, 2060367530], [2126125555, 41008148, 1996810015, 2060367530], [2126125555, 41008148, 2131585868, 2060367530], [2126125555, 41008148, 2121298420, 2060367530], [2126125555, 41008148, 2011869541, 2060367530], [2126125555, 41008148, 2014902803, 2060367530], [2126125555, 41008148, 2104431586, 2060367530], [2126125555, 41008148, 1996773330, 2060367530], [2126125555, 41008148, 2165599051, 2060367530], [2126125555, 41008148, 1982958099, 2060367530], [2126125555, 41008148, 2165200626, 2060367530], [2126125555, 41008148, 2112130876, 2060367530], [2126125555, 41008148, 2113006343, 2060367530], [2126125555, 41008148, 2162761269, 2060367530], [2126125555, 41008148, 2121982138, 2060367530], [2126125555, 41008148, 2146753762, 2060367530], [2126125555, 41008148, 2088127338, 2060367530], [2126125555, 41008148, 2058089823, 2060367530], [2126125555, 41008148, 2113690702, 2060367530], [2126125555, 41008148, 2014807873, 2060367530], [2126125555, 41008148, 1511660052, 2060367530], [2126125555, 41008148, 2163183933, 2060367530], [2126125555, 41008148, 1536258358, 2060367530], [2126125555, 44249647, 1596665323, 2060367530], [2126125555, 41008148, 1596665323, 2060367530], [2126125555, 41008148, 2145725161, 2060367530], [2126125555, 41008148, 2087539190, 2060367530], [2126125555, 41008148, 2147070561, 2060367530], [2126125555, 41008148, 2058683152, 2060367530], [2126125555, 41008148, 2074464358, 2060367530], [2126125555, 41008148, 2156513435, 2060367530], [2126125555, 41008148, 1985186619, 2060367530], [2126125555, 41008148, 1648231765, 2060367530], [2126125555, 41008148, 1985819320, 2060367530], [2126125555, 41008148, 2094590527, 2060367530], [2126125555, 41008148, 2074086293, 2060367530], [2126125555, 41008148, 2021638225, 2060367530], [2126125555, 41008148, 2108268158, 2060367530], [2126125555, 41008148, 2160155764, 2060367530], [2126125555, 41008148, 1997405810, 2060367530], [2126125555, 41008148, 2125642594, 2060367530], [2126125555, 41008148, 2111002045, 2060367530], [2126125555, 41008148, 2100428701, 2060367530], [2126125555, 41008148, 2122613489, 2060367530], [2126125555, 41008148, 2034976519, 2060367530], [2126125555, 41008148, 2164204739, 2060367530], [2126125555, 41008148, 2160542197, 2060367530], [2126125555, 41008148, 1483543726, 2060367530], [2126125555, 41008148, 2053920233, 2060367530], [2126125555, 41008148, 2012315090, 2060367530], [2126125555, 41008148, 2149606298, 2060367530], [2126125555, 41008148, 2100220027, 2060367530], [2126125555, 41008148, 2162435043, 2060367530], [2126125555, 41008148, 2050454625, 2060367530], [2126125555, 41008148, 1991234467, 2060367530], [2126125555, 41008148, 153206816, 2060367530], [2126125555, 41008148, 2165401139, 2060367530], [2126125555, 41008148, 2142416321, 2060367530], [2126125555, 41008148, 2140159161, 2060367530], [2126125555, 41008148, 2109332572, 2060367530], [2126125555, 41008148, 2122789001, 2060367530], [2126125555, 41008148, 2078691191, 2060367530], [2126125555, 41008148, 2104652092, 2060367530], [2126125555, 41008148, 2122441658, 2060367530], [2126125555, 41008148, 2119112220, 2060367530], [2126125555, 41008148, 2020516950, 2060367530], [2126125555, 41008148, 2127891163, 2060367530], [2126125555, 41008148, 2164232663, 2060367530], [2126125555, 41008148, 2131484267, 2060367530], [2126125555, 41008148, 2121005405, 2060367530], [2126125555, 41008148, 2125369874, 2060367530], [2126125555, 41008148, 2161657418, 2060367530], [2126125555, 41008148, 2154951630, 2060367530], [2126125555, 41008148, 2158761513, 2060367530], [2126125555, 41008148, 2109905341, 2060367530], [2126125555, 41008148, 2127314631, 2060367530], [2126125555, 41008148, 2159177950, 2060367530], [2126125555, 41008148, 2130607673, 2060367530], [2126125555, 41008148, 2005104010, 2060367530], [2126125555, 41008148, 2122301197, 2060367530], [2126125555, 41008148, 2021733249, 2060367530], [2126125555, 41008148, 2110146199, 2060367530], [2126125555, 136389625, 2098890195, 2060367530], [2126125555, 41008148, 2098890195, 2060367530], [2126125555, 41008148, 2112761524, 2060367530], [2126125555, 41008148, 2142692934, 2060367530], [2126125555, 41008148, 2148115600, 2060367530], [2126125555, 41008148, 2142939943, 2060367530], [2126125555, 41008148, 2305913748, 2060367530], [2126125555, 41008148, 2149323686, 2060367530], [2126125555, 41008148, 2117168899, 2060367530], [2126125555, 41008148, 1987048816, 2060367530], [2126125555, 41008148, 2046100773, 2060367530], [2126125555, 41008148, 2058655009, 2060367530], [2126125555, 41008148, 2142149251, 2060367530], [2126125555, 41008148, 2148213677, 2060367530], [2126125555, 41008148, 2011663644, 2060367530], [2126125555, 41008148, 2171149816, 2060367530], [2126125555, 41008148, 1970438427, 2060367530], [2126125555, 41008148, 2111643936, 2060367530], [2126125555, 41008148, 2145539952, 2060367530], [2126125555, 41008148, 1989829089, 2060367530], [2126125555, 41008148, 2043229217, 2060367530], [2126125555, 41008148, 2165771856, 2060367530], [2126125555, 41008148, 2079678116, 2060367530], [2126125555, 41008148, 2044571869, 2060367530], [2126125555, 44249647, 1718891981, 2060367530], [2126125555, 83665646, 1988863701, 2060367530], [2126125555, 41008148, 1988863701, 2060367530], [2126125555, 41008148, 2103104193, 2060367530], [2126125555, 41008148, 2033617438, 2060367530], [2126125555, 41008148, 2115449043, 2060367530], [2126125555, 83665646, 1581601423, 2060367530], [2126125555, 41008148, 1581601423, 2060367530], [2126125555, 41008148, 2162096170, 2060367530], [2126125555, 83665646, 1978137619, 2060367530], [2126125555, 41008148, 1978137619, 2060367530], [2126125555, 41008148, 2112221913, 2060367530], [2126125555, 41008148, 2110290736, 2060367530], [2126125555, 41008148, 2029807882, 2060367530], [2126125555, 41008148, 2110067623, 2060367530], [2126125555, 41008148, 1573308499, 2060367530], [2126125555, 41008148, 2037984755, 2060367530], [2126125555, 41008148, 1529306955, 2060367530], [2126125555, 41008148, 2032915439, 2060367530], [2126125555, 41008148, 2060066124, 2060367530], [2126125555, 83665646, 2003394210, 2060367530], [2126125555, 41008148, 2003394210, 2060367530], [2126125555, 41008148, 2129448010, 2060367530], [2126125555, 41008148, 1978240667, 2060367530], [2126125555, 41008148, 2167487619, 2060367530], [2126125555, 41008148, 2157423413, 2060367530], [2126125555, 41008148, 2012433634, 2060367530], [2126125555, 41008148, 2035439597, 2060367530], [2126125555, 41008148, 2166886638, 2060367530], [2126125555, 83665646, 1537320275, 2060367530], [2126125555, 41008148, 1537320275, 2060367530], [2126125555, 41008148, 2143972711, 2060367530], [2126125555, 41008148, 2093045461, 2060367530], [2126125555, 41008148, 2163204906, 2060367530], [2126125555, 41008148, 2144240219, 2060367530], [2126125555, 41008148, 2115606736, 2060367530], [2126125555, 41008148, 1582850550, 2060367530], [2126125555, 41008148, 1523247053, 2060367530], [2126125555, 41008148, 2169041657, 2060367530], [2126125555, 41008148, 2119908394, 2060367530], [2126125555, 41008148, 2162590473, 2060367530], [2126125555, 41008148, 2017487636, 2060367530], [2126125555, 41008148, 2009968188, 2060367530], [2126125555, 41008148, 2101937946, 2060367530], [2126125555, 41008148, 1880827259, 2060367530], [2126125555, 41008148, 2037887094, 2060367530], [2126125555, 41008148, 2055685281, 2060367530], [2126125555, 41008148, 2018585293, 2060367530], [2126125555, 41008148, 2131403437, 2060367530], [2126125555, 41008148, 2155471382, 2060367530], [2126125555, 41008148, 2120879296, 2060367530], [2126125555, 41008148, 2114866007, 2060367530], [2126125555, 41008148, 2079606180, 2060367530], [2126125555, 41008148, 2011488612, 2060367530], [2126125555, 41008148, 2047868442, 2060367530], [2126125555, 41008148, 2121343619, 2060367530], [2126125555, 41008148, 1517293279, 2060367530], [2126125555, 41008148, 1969623421, 2060367530], [2126125555, 83665646, 1495710594, 2060367530], [2126125555, 41008148, 1495710594, 2060367530], [2126125555, 41008148, 2022414710, 2060367530], [2126125555, 41008148, 2010528420, 2060367530], [2126125555, 41008148, 2137500783, 2060367530], [2126125555, 41008148, 2004912246, 2060367530], [2126125555, 41008148, 2043360390, 2060367530], [2126125555, 41008148, 1884449811, 2060367530], [2126125555, 41008148, 2003452708, 2060367530], [2126125555, 83665646, 1529373367, 2060367530], [2126125555, 41008148, 1529373367, 2060367530], [2126125555, 41008148, 2038576858, 2060367530], [2126125555, 41008148, 2085843736, 2060367530], [2126125555, 41008148, 2036273098, 2060367530], [2126125555, 41008148, 2107913904, 2060367530], [2126125555, 44249647, 1557550410, 2060367530], [2126125555, 41008148, 1557550410, 2060367530], [2126125555, 41008148, 1483324620, 2060367530], [2126125555, 41008148, 2076085555, 2060367530], [2126125555, 41008148, 2067922550, 2060367530], [2126125555, 41008148, 2027829736, 2060367530], [2126125555, 41008148, 2072331102, 2060367530], [2126125555, 41008148, 2073058541, 2060367530], [2126125555, 41008148, 2156773817, 2060367530], [2126125555, 41008148, 2161107932, 2060367530], [2126125555, 41008148, 2143774383, 2060367530], [2126125555, 41008148, 2143049567, 2060367530], [2126125555, 41008148, 2000389657, 2060367530], [2126125555, 41008148, 2162162988, 2060367530], [2126125555, 41008148, 2136571107, 2060367530], [2126125555, 41008148, 2088134541, 2060367530], [2126125555, 41008148, 1978444624, 2060367530], [2126125555, 41008148, 2124974356, 2060367530], [2126125555, 136389625, 1993527150, 2060367530], [2126125555, 41008148, 1993527150, 2060367530], [2126125555, 41008148, 2150045547, 2060367530], [2126125555, 41008148, 2060696365, 2060367530], [2126125555, 41008148, 2122135337, 2060367530], [2126125555, 41008148, 2016799887, 2060367530], [2126125555, 41008148, 2104114371, 2060367530], [2126125555, 41008148, 1925901016, 2060367530], [2126125555, 41008148, 2089501902, 2060367530], [2126125555, 41008148, 2113908141, 2060367530], [2126125555, 41008148, 1546049643, 2060367530], [2126125555, 41008148, 2038022605, 2060367530], [2126125555, 41008148, 2126564540, 2060367530], [2126125555, 41008148, 2117252790, 2060367530], [2126125555, 41008148, 2106748422, 2060367530], [2126125555, 41008148, 1995543329, 2060367530], [2126125555, 41008148, 2096938374, 2060367530], [2126125555, 41008148, 1973660470, 2060367530], [2126125555, 41008148, 2150864321, 2060367530], [2126125555, 41008148, 2069359131, 2060367530], [2126125555, 41008148, 2121703027, 2060367530], [2126125555, 41008148, 1901811652, 2060367530], [2126125555, 41008148, 1593093587, 2060367530], [2126125555, 41008148, 2120563819, 2060367530], [2126125555, 41008148, 2150932143, 2060367530], [2126125555, 41008148, 2011301735, 2060367530], [2126125555, 41008148, 2059140829, 2060367530], [2126125555, 41008148, 2177508090, 2060367530], [2126125555, 41008148, 2136161853, 2060367530], [2126125555, 41008148, 2142643924, 2060367530], [2126125555, 83665646, 2010838229, 2060367530], [2126125555, 41008148, 2010838229, 2060367530], [2126125555, 41008148, 2155335721, 2060367530], [2126125555, 41008148, 2151172508, 2060367530], [2126125555, 41008148, 2151832208, 2060367530], [2126125555, 41008148, 1489791535, 2060367530], [2126125555, 41008148, 1578424234, 2060367530], [2126125555, 83665646, 2071952657, 2060367530], [2126125555, 41008148, 2071952657, 2060367530], [2126125555, 41008148, 2158821845, 2060367530], [2126125555, 41008148, 2126029357, 2060367530], [2126125555, 41008148, 1946406367, 2060367530], [2126125555, 41008148, 2139502638, 2060367530], [2126125555, 136389625, 2058238202, 2060367530], [2126125555, 41008148, 2058238202, 2060367530], [2126125555, 41008148, 1527838541, 2060367530], [2126125555, 41008148, 1980107721, 2060367530], [2126125555, 41008148, 2001092583, 2060367530], [2126125555, 41008148, 2012136488, 2060367530], [2126125555, 41008148, 2044076868, 2060367530], [2126125555, 41008148, 2154145988, 2060367530], [2126125555, 136389625, 2134063365, 2060367530], [2126125555, 41008148, 2134063365, 2060367530], [2126125555, 41008148, 2095439633, 2060367530], [2126125555, 41008148, 2157790742, 2060367530], [2126125555, 41008148, 2139976081, 2060367530], [2126125555, 41008148, 2080129610, 2060367530], [2126125555, 41008148, 1534962339, 2060367530], [2126125555, 41008148, 2131736308, 2060367530], [2126125555, 41008148, 2121219992, 2060367530], [2126125555, 41008148, 2162276208, 2060367530], [2126125555, 41008148, 2039313398, 2060367530], [2126125555, 41008148, 2018395267, 2060367530], [2126125555, 41008148, 1552686964, 2060367530], [2126125555, 41008148, 2068772807, 2060367530], [2126125555, 41008148, 1971437934, 2060367530], [2126125555, 41008148, 2008705302, 2060367530], [2126125555, 41008148, 1992369071, 2060367530], [2126125555, 41008148, 2160824456, 2060367530], [2126125555, 41008148, 2069849680, 2060367530], [2126125555, 41008148, 2038973668, 2060367530], [2126125555, 41008148, 2169976806, 2060367530], [2126125555, 41008148, 2169948249, 2060367530], [2126125555, 41008148, 2040515152, 2060367530], [2126125555, 41008148, 2144642976, 2060367530], [2126125555, 41008148, 2024585912, 2060367530], [2126125555, 41008148, 2083101310, 2060367530], [2126125555, 41008148, 1969535941, 2060367530], [2126125555, 136389625, 1542833070, 2060367530], [2126125555, 41008148, 1542833070, 2060367530], [2126125555, 83665646, 1606751204, 2060367530], [2126125555, 41008148, 1606751204, 2060367530], [2126125555, 41008148, 2073522055, 2060367530], [2126125555, 41008148, 1566311975, 2060367530], [2126125555, 41008148, 1971891155, 2060367530], [2126125555, 197046077, 2109505752, 2060367530], [2126125555, 41008148, 2109505752, 2060367530], [2126125555, 41008148, 1510751352, 2060367530], [2126125555, 41008148, 2038832233, 2060367530], [2126125555, 41008148, 1619233745, 2060367530], [2126125555, 41008148, 2159590158, 2060367530], [2126125555, 83665646, 2130553489, 2060367530], [2126125555, 41008148, 2130553489, 2060367530], [2126125555, 41008148, 2108300872, 2060367530], [2126125555, 41008148, 2074528627, 2060367530], [2126125555, 41008148, 2160607244, 2060367530], [2126125555, 41008148, 2051380891, 2060367530], [2126125555, 41008148, 2097126443, 2060367530], [2126125555, 41008148, 1994347606, 2060367530], [2126125555, 41008148, 1985825887, 2060367530], [2126125555, 41008148, 2136386610, 2060367530], [2126125555, 41008148, 2036285688, 2060367530], [2126125555, 41008148, 1986818436, 2060367530], [2126125555, 41008148, 1564720913, 2060367530], [2126125555, 41008148, 2087563752, 2060367530], [2126125555, 41008148, 1535700711, 2060367530], [2126125555, 41008148, 2121823378, 2060367530], [2126125555, 41008148, 1978234976, 2060367530], [2126125555, 41008148, 2022298437, 2060367530], [2126125555, 41008148, 1971212236, 2060367530], [2126125555, 41008148, 2100548091, 2060367530], [2126125555, 41008148, 2039212407, 2060367530], [2126125555, 41008148, 1577445451, 2060367530], [2126125555, 41008148, 2126569875, 2060367530], [2126125555, 41008148, 2098654823, 2060367530], [2126125555, 44249647, 2099685220, 2060367530], [2126125555, 41008148, 2099685220, 2060367530], [2126125555, 41008148, 1981309637, 2060367530], [2126125555, 41008148, 2024032224, 2060367530], [2126125555, 41008148, 2165200277, 2060367530], [2126125555, 41008148, 2024644533, 2060367530], [2126125555, 41008148, 2117924446, 2060367530], [2126125555, 41008148, 2067005588, 2060367530], [2126125555, 41008148, 2001983900, 2060367530], [2126125555, 41008148, 2149124953, 2060367530], [2126125555, 41008148, 2048312813, 2060367530], [2126125555, 41008148, 2060346113, 2060367530], [2126125555, 41008148, 2302502576, 2060367530], [2126125555, 41008148, 2114475835, 2060367530], [2126125555, 41008148, 2137401344, 2060367530], [2126125555, 41008148, 1965531463, 2060367530], [2126125555, 83665646, 2133742219, 2060367530], [2126125555, 41008148, 2133742219, 2060367530], [2126125555, 41008148, 2122186083, 2060367530], [2126125555, 41008148, 2169843502, 2060367530], [2126125555, 41008148, 2131163986, 2060367530], [2126125555, 2109031554, 2131163986, 2060367530], [2126125555, 136389625, 2117343681, 2060367530], [2126125555, 41008148, 2107899819, 2060367530], [2126125555, 41008148, 2148260600, 2060367530], [2126125555, 41008148, 2111049014, 2060367530], [2126125555, 41008148, 2009880058, 2060367530], [2126125555, 41008148, 2122000746, 2060367530], [2126125555, 41008148, 2091226185, 2060367530], [2126125555, 41008148, 2110612061, 2060367530], [2126125555, 41008148, 2005476832, 2060367530], [2126125555, 41008148, 2073805716, 2060367530], [2126125555, 41008148, 2207595987, 2060367530], [2126125555, 41008148, 2018079881, 2060367530], [2126125555, 41008148, 2203401914, 2060367530], [2126125555, 41008148, 2066697556, 2060367530], [2126125555, 41008148, 1875219865, 2060367530], [2126125555, 41008148, 2134881335, 2060367530], [2126125555, 83665646, 1989507717, 2060367530], [2126125555, 136389625, 1989507717, 2060367530], [2126125555, 41008148, 1989507717, 2060367530], [2126125555, 41008148, 2019849808, 2060367530], [2126125555, 41008148, 2127983758, 2060367530], [2126125555, 83665646, 1989954918, 2060367530], [2126125555, 41008148, 1989954918, 2060367530], [2126125555, 41008148, 1540389991, 2060367530], [2126125555, 41008148, 2123660490, 2060367530], [2126125555, 41008148, 2131176352, 2060367530], [2126125555, 41008148, 2094652073, 2060367530], [2126125555, 41008148, 2048532382, 2060367530], [2126125555, 41008148, 2088703522, 2060367530], [2126125555, 41008148, 2075120671, 2060367530], [2126125555, 41008148, 2106466787, 2060367530], [2126125555, 41008148, 2141442327, 2060367530], [2126125555, 41008148, 2007624229, 2060367530], [2126125555, 41008148, 1963569795, 2060367530], [2126125555, 41008148, 2107286926, 2060367530], [2126125555, 41008148, 2147769521, 2060367530], [2126125555, 41008148, 1494704062, 2060367530], [2126125555, 136389625, 2127332912, 2060367530], [2126125555, 41008148, 2127332912, 2060367530], [2126125555, 41008148, 2062323126, 2060367530], [2126125555, 41008148, 2171928062, 2060367530], [2126125555, 41008148, 2079099232, 2060367530], [2126125555, 41008148, 2081771431, 2060367530], [2126125555, 41008148, 1989425081, 2060367530], [2126125555, 41008148, 2113154557, 2060367530], [2126125555, 41008148, 2042873848, 2060367530], [2126125555, 136389625, 2067078155, 2060367530], [2126125555, 41008148, 2067078155, 2060367530], [2126125555, 41008148, 2075758299, 2060367530], [2126125555, 41008148, 2142542367, 2060367530], [2126125555, 41008148, 2017215697, 2060367530], [2126125555, 41008148, 2123415893, 2060367530], [2126125555, 41008148, 2068447514, 2060367530], [2126125555, 41008148, 2142125950, 2060367530], [2126125555, 41008148, 2137206830, 2060367530], [2126125555, 41008148, 2045426399, 2060367530], [2126125555, 140982614, 2045426399, 2060367530], [2126125555, 41008148, 2164950657, 2060367530], [2126125555, 41008148, 1867482801, 2060367530], [2126125555, 136389625, 2110709196, 2060367530], [2126125555, 41008148, 2110709196, 2060367530], [2126125555, 41008148, 2007284157, 2060367530], [2126125555, 41008148, 2031755058, 2060367530], [2126125555, 41008148, 2050948218, 2060367530], [2126125555, 41008148, 2168137864, 2060367530], [2126125555, 41008148, 2039182691, 2060367530], [2126125555, 41008148, 2171589180, 2060367530], [2126125555, 41008148, 2031391888, 2060367530], [2126125555, 41008148, 2102907099, 2060367530], [2126125555, 41008148, 2012255354, 2060367530], [2126125555, 41008148, 1978380467, 2060367530], [2126125555, 41008148, 2055762999, 2060367530], [2126125555, 41008148, 2146049876, 2060367530], [2126125555, 41008148, 1988195118, 2060367530], [2126125555, 41008148, 2116680122, 2060367530], [2126125555, 41008148, 2052026021, 2060367530], [2126125555, 41008148, 2009811197, 2060367530], [2126125555, 83665646, 1973224984, 2060367530], [2126125555, 41008148, 1973224984, 2060367530], [2126125555, 41008148, 2080195614, 2060367530], [2126125555, 41008148, 2042599594, 2060367530], [2126125555, 41008148, 2132154404, 2060367530], [2126125555, 41008148, 2044838444, 2060367530], [2126125555, 41008148, 2125999281, 2060367530], [2126125555, 41008148, 2075091372, 2060367530], [2126125555, 41008148, 2120529943, 2060367530], [2126125555, 41008148, 1551115015, 2060367530], [2126125555, 41008148, 2150098897, 2060367530], [2126125555, 41008148, 2011544593, 2060367530], [2126125555, 41008148, 2122867608, 2060367530], [2126125555, 136389625, 2102411078, 2060367530], [2126125555, 41008148, 2102411078, 2060367530], [2126125555, 41008148, 2016450545, 2060367530], [2126125555, 41008148, 2061126454, 2060367530], [2126125555, 41008148, 2156109108, 2060367530], [2126125555, 136389625, 2157382909, 2060367530], [2126125555, 41008148, 2157382909, 2060367530], [2126125555, 41008148, 2134597765, 2060367530], [2126125555, 41008148, 2100497088, 2060367530], [2126125555, 41008148, 2100545479, 2060367530], [2126125555, 41008148, 1979792881, 2060367530], [2126125555, 41008148, 2017941239, 2060367530], [2126125555, 41008148, 2132744778, 2060367530], [2126125555, 41008148, 2060556149, 2060367530], [2126125555, 41008148, 2069942113, 2060367530], [2126125555, 41008148, 2043326489, 2060367530], [2126125555, 41008148, 2156598344, 2060367530], [2126125555, 41008148, 2132831991, 2060367530], [2126125555, 121687571, 2053711578, 2060367530], [2126125555, 41008148, 2053711578, 2060367530], [2126125555, 41008148, 2017654692, 2060367530], [2126125555, 41008148, 2010377830, 2060367530], [2126125555, 41008148, 2142162413, 2060367530], [2126125555, 136389625, 2157126826, 2060367530], [2126125555, 41008148, 2157126826, 2060367530], [2126125555, 41008148, 2107389842, 2060367530], [2126125555, 41008148, 2141177188, 2060367530], [2126125555, 41008148, 2139646439, 2060367530], [2126125555, 41008148, 1586127222, 2060367530], [2126125555, 41008148, 2155642345, 2060367530], [2126125555, 41008148, 2105709174, 2060367530], [2126125555, 41008148, 1988019059, 2060367530], [2126125555, 41008148, 1872556891, 2060367530], [2126125555, 41008148, 1558740192, 2060367530], [2126125555, 41008148, 2134407631, 2060367530], [2126125555, 41008148, 2041667362, 2060367530], [2126125555, 41008148, 1507991929, 2060367530], [2126125555, 41008148, 2153997102, 2060367530], [2126125555, 41008148, 2136093728, 2060367530], [2126125555, 41008148, 1979233855, 2060367530], [2126125555, 83665646, 2091467189, 2060367530], [2126125555, 41008148, 2091467189, 2060367530], [2126125555, 41008148, 1592870675, 2060367530], [2126125555, 41008148, 2071029104, 2060367530], [2126125555, 41008148, 2009067114, 2060367530], [2126125555, 41008148, 2093734480, 2060367530], [2126125555, 41008148, 1969638105, 2060367530], [2126125555, 41008148, 2145833348, 2060367530], [2126125555, 41008148, 1566675030, 2060367530], [2126125555, 41008148, 2144203832, 2060367530], [2126125555, 41008148, 2119790193, 2060367530], [2126125555, 41008148, 2057241917, 2060367530], [2126125555, 41008148, 2065354671, 2060367530], [2126125555, 41008148, 2008655746, 2060367530], [2126125555, 41008148, 2120499593, 2060367530], [2126125555, 41008148, 2068886129, 2060367530], [2126125555, 41008148, 2136419356, 2060367530], [2126125555, 41008148, 2141460812, 2060367530], [2126125555, 41008148, 2059751465, 2060367530], [2126125555, 41008148, 2156540429, 2060367530], [2126125555, 41008148, 1601263325, 2060367530], [2126125555, 41008148, 2095845082, 2060367530], [2126125555, 83665646, 2207021635, 2060367530], [2126125555, 41008148, 2207021635, 2060367530], [2126125555, 41008148, 2010478697, 2060367530], [2126125555, 41008148, 2133123666, 2060367530], [2126125555, 41008148, 1548429019, 2060367530], [2126125555, 41008148, 1998699125, 2060367530], [2126125555, 41008148, 1990476635, 2060367530], [2126125555, 41008148, 2063674831, 2060367530], [2126125555, 136389625, 2156311295, 2060367530], [2126125555, 41008148, 2160462258, 2060367530], [2126125555, 41008148, 2171720218, 2060367530], [2126125555, 136389625, 2030581694, 2060367530], [2126125555, 41008148, 2030581694, 2060367530], [2126125555, 41008148, 2031767620, 2060367530], [2126125555, 41008148, 2094584230, 2060367530], [2126125555, 41008148, 2024592335, 2060367530], [2126125555, 41008148, 2145080784, 2060367530], [2126125555, 41008148, 2082670270, 2060367530], [2126125555, 41008148, 2127303383, 2060367530], [2126125555, 41008148, 2076582109, 2060367530], [2126125555, 41008148, 1987316307, 2060367530], [2126125555, 136389625, 2002763349, 2060367530], [2126125555, 41008148, 2002763349, 2060367530], [2126125555, 41008148, 2016690251, 2060367530], [2126125555, 41008148, 2143243940, 2060367530], [2126125555, 83665646, 2155755485, 2060367530], [2126125555, 41008148, 2155755485, 2060367530], [2126125555, 136389625, 2039542125, 2060367530], [2126125555, 41008148, 2039542125, 2060367530], [2126125555, 41008148, 1548459232, 2060367530], [2126125555, 41008148, 2134616230, 2060367530], [2126125555, 83665646, 1608032245, 2060367530], [2126125555, 41008148, 1608032245, 2060367530], [2126125555, 41008148, 1983873074, 2060367530], [2126125555, 41008148, 2034931370, 2060367530], [2126125555, 41008148, 2124670583, 2060367530], [2126125555, 41008148, 1988627554, 2060367530], [2126125555, 41008148, 2132729794, 2060367530], [2126125555, 41008148, 2010379776, 2060367530], [2126125555, 41008148, 2070151867, 2060367530], [2126125555, 41008148, 1996546282, 2060367530], [2126125555, 41008148, 2027956232, 2060367530], [2126125555, 41008148, 2129442563, 2060367530], [2126125555, 41008148, 2082842936, 2060367530], [2126125555, 41008148, 29839599, 2060367530], [2126125555, 41008148, 1970017312, 2060367530], [2126125555, 41008148, 2067756271, 2060367530], [2126125555, 41008148, 1496805632, 2060367530], [2126125555, 41008148, 2038602185, 2060367530], [2126125555, 41008148, 1482984115, 2060367530], [2126125555, 41008148, 1522218938, 2060367530], [2126125555, 41008148, 2159581274, 2060367530], [2126125555, 41008148, 1577529039, 2060367530], [2126125555, 41008148, 2119991813, 2060367530], [2126125555, 41008148, 2151015956, 2060367530], [2126125555, 41008148, 1529761664, 2060367530], [2126125555, 41008148, 2170780589, 2060367530], [2126125555, 41008148, 2097890722, 2060367530], [2126125555, 41008148, 2038083981, 2060367530], [2126125555, 41008148, 2026778803, 2060367530], [2126125555, 41008148, 2062936627, 2060367530], [2126125555, 41008148, 2028704235, 2060367530], [2126125555, 136389625, 2143761310, 2060367530], [2126125555, 41008148, 2143761310, 2060367530], [2126125555, 41008148, 1970161045, 2060367530], [2126125555, 41008148, 2074965739, 2060367530], [2126125555, 41008148, 2163626854, 2060367530], [2126125555, 41008148, 2143338212, 2060367530], [2126125555, 41008148, 2144243347, 2060367530], [2126125555, 41008148, 2163649281, 2060367530], [2126125555, 83665646, 1490872684, 2060367530], [2126125555, 41008148, 1490872684, 2060367530], [2126125555, 41008148, 2106718714, 2060367530], [2126125555, 41008148, 2116134218, 2060367530], [2126125555, 41008148, 1997748612, 2060367530], [2126125555, 41008148, 2146851241, 2060367530], [2126125555, 41008148, 2128983525, 2060367530], [2126125555, 136389625, 2108076437, 2060367530], [2126125555, 41008148, 2108076437, 2060367530], [2126125555, 41008148, 2130275687, 2060367530], [2126125555, 41008148, 2005195748, 2060367530], [2126125555, 41008148, 1513170560, 2060367530], [2126125555, 41008148, 2152171433, 2060367530], [2126125555, 41008148, 2098829325, 2060367530], [2126125555, 41008148, 1979765150, 2060367530], [2126125555, 83665646, 2114637188, 2060367530], [2126125555, 41008148, 2114637188, 2060367530], [2126125555, 41008148, 2169562465, 2060367530], [2126125555, 41008148, 1984902689, 2060367530], [2126125555, 41008148, 2134545150, 2060367530], [2126125555, 41008148, 2078004641, 2060367530], [2126125555, 41008148, 2122774139, 2060367530], [2126125555, 41008148, 2165742212, 2060367530], [2126125555, 41008148, 2113438897, 2060367530], [2126125555, 41008148, 2168363555, 2060367530], [2126125555, 41008148, 2136418941, 2060367530], [2126125555, 83665646, 2143926826, 2060367530], [2126125555, 41008148, 2143926826, 2060367530], [2126125555, 41008148, 2014131677, 2060367530], [2126125555, 41008148, 2121507443, 2060367530], [2126125555, 41008148, 2106383704, 2060367530], [2126125555, 41008148, 2134648236, 2060367530], [2126125555, 41008148, 1979453996, 2060367530], [2126125555, 41008148, 2135997422, 2060367530], [2126125555, 41008148, 2114652002, 2060367530], [2126125555, 41008148, 2084969102, 2060367530], [2126125555, 41008148, 2128384737, 2060367530], [2126125555, 41008148, 2153816094, 2060367530], [2126125555, 41008148, 2117451654, 2060367530], [2126125555, 41008148, 2093918114, 2060367530], [2126125555, 41008148, 2087977130, 2060367530], [2126125555, 41008148, 2102481659, 2060367530], [2126125555, 41008148, 2035411240, 2060367530], [2126125555, 41008148, 2072164819, 2060367530], [2126125555, 41008148, 2141798215, 2060367530], [2126125555, 83665646, 1503480726, 2060367530], [2126125555, 41008148, 1503480726, 2060367530], [2126125555, 41008148, 1993301396, 2060367530], [2126125555, 41008148, 2048901823, 2060367530], [2126125555, 41008148, 2142182456, 2060367530], [2126125555, 41008148, 1980649683, 2060367530], [2126125555, 41008148, 1978036225, 2060367530], [2126125555, 41008148, 2137348364, 2060367530], [2126125555, 41008148, 2082088373, 2060367530], [2126125555, 41008148, 2165447343, 2060367530], [2126125555, 41008148, 2068119731, 2060367530], [2126125555, 41008148, 2086530527, 2060367530], [2126125555, 41008148, 1802606884, 2060367530], [2126125555, 41008148, 2079411085, 2060367530], [2126125555, 41008148, 2142953888, 2060367530], [2126125555, 41008148, 2080137909, 2060367530], [2126125555, 41008148, 2141620903, 2060367530], [2126125555, 41008148, 2120606581, 2060367530], [2126125555, 41008148, 1991119649, 2060367530], [2126125555, 41008148, 2125345236, 2060367530], [2126125555, 41008148, 1664734437, 2060367530], [2126125555, 41008148, 2052466350, 2060367530], [2126125555, 41008148, 2141097525, 2060367530], [2126125555, 41008148, 2159283892, 2060367530], [2126125555, 41008148, 2079502544, 2060367530], [2126125555, 41008148, 2146487442, 2060367530], [2126125555, 41008148, 1496173351, 2060367530], [2126125555, 41008148, 2142323399, 2060367530], [2126125555, 41008148, 1998326324, 2060367530], [2126125555, 41008148, 2021732831, 2060367530], [2126125555, 41008148, 2124978722, 2060367530], [2126125555, 41008148, 2018680475, 2060367530], [2126125555, 41008148, 2051347452, 2060367530], [2126125555, 41008148, 2068764432, 2060367530], [2126125555, 41008148, 2120204647, 2060367530], [2126125555, 41008148, 2025922300, 2060367530], [2126125555, 41008148, 2104680778, 2060367530], [2126125555, 41008148, 1832917778, 2060367530], [2126125555, 41008148, 2015558886, 2060367530], [2126125555, 83665646, 1501644832, 2060367530], [2126125555, 41008148, 1501644832, 2060367530], [2126125555, 41008148, 2111141597, 2060367530], [2126125555, 41008148, 2104013383, 2060367530], [2126125555, 41008148, 2134498593, 2060367530], [2126125555, 41008148, 1973165000, 2060367530], [2126125555, 41008148, 2104972543, 2060367530], [2126125555, 150899416, 1559035773, 2060367530], [2126125555, 41008148, 1559035773, 2060367530], [2126125555, 41008148, 2104691781, 2060367530], [2126125555, 41008148, 1564826916, 2060367530], [2126125555, 41008148, 1976547009, 2060367530], [2126125555, 41008148, 1977943920, 2060367530], [2126125555, 41008148, 1991151336, 2060367530], [2126125555, 41008148, 1974597206, 2060367530], [2126125555, 41008148, 2110464963, 2060367530], [2126125555, 41008148, 2023693944, 2060367530], [2126125555, 41008148, 2160675782, 2060367530], [2126125555, 41008148, 2214522634, 2060367530], [2126125555, 41008148, 1993029589, 2060367530], [2126125555, 41008148, 2246326620, 2060367530], [2126125555, 41008148, 2161538283, 2060367530], [2126125555, 41008148, 1498235585, 2060367530], [2126125555, 41008148, 2081464281, 2060367530], [2126125555, 41008148, 2169459995, 2060367530], [2126125555, 41008148, 2043020814, 2060367530], [2126125555, 41008148, 2102339314, 2060367530], [2126125555, 41008148, 2064231779, 2060367530], [2126125555, 41008148, 2113429165, 2060367530], [2126125555, 41008148, 2047471240, 2060367530], [2126125555, 41008148, 2009447354, 2060367530], [2126125555, 83665646, 1968802088, 2060367530], [2126125555, 41008148, 1968802088, 2060367530], [2126125555, 41008148, 2143335968, 2060367530], [2126125555, 41008148, 1578859550, 2060367530], [2126125555, 41008148, 2143636695, 2060367530], [2126125555, 41008148, 2068301929, 2060367530], [2126125555, 41008148, 2018051311, 2060367530], [2126125555, 41008148, 2147303506, 2060367530], [2126125555, 41008148, 2126245649, 2060367530], [2126125555, 83665646, 2143447423, 2060367530], [2126125555, 136389625, 2143447423, 2060367530], [2126125555, 41008148, 2143447423, 2060367530], [2126125555, 41008148, 2093711054, 2060367530], [2126125555, 41008148, 2108450930, 2060367530], [2126125555, 41008148, 2020466095, 2060367530], [2126125555, 41008148, 2102457308, 2060367530], [2126125555, 41008148, 2122668921, 2060367530], [2126125555, 41008148, 2150709118, 2060367530], [2126125555, 41008148, 2140855119, 2060367530], [2126125555, 41008148, 1982947757, 2060367530], [2126125555, 41008148, 1985675842, 2060367530], [2126125555, 41008148, 2042165210, 2060367530], [2126125555, 41008148, 2142508203, 2060367530], [2126125555, 41008148, 2134490011, 2060367530], [2126125555, 41008148, 2066387892, 2060367530], [2126125555, 41008148, 1996892731, 2060367530], [2126125555, 41008148, 2106689827, 2060367530], [2126125555, 41008148, 2009822433, 2060367530], [2126125555, 41008148, 2133551294, 2060367530], [2126125555, 41008148, 2117392053, 2060367530], [2126125555, 41008148, 2041239012, 2060367530], [2126125555, 41008148, 2100926234, 2060367530], [2126125555, 41008148, 1576307993, 2060367530], [2126125555, 41008148, 2060844394, 2060367530], [2126125555, 41008148, 2058929553, 2060367530], [2126125555, 41008148, 2119170415, 2060367530], [2126125555, 41008148, 2106258985, 2060367530], [2126125555, 41008148, 2000647275, 2060367530], [2126125555, 41008148, 2105121207, 2060367530], [2126125555, 136389625, 2118928272, 2060367530], [2126125555, 41008148, 2118928272, 2060367530], [2126125555, 41008148, 2115110758, 2060367530], [2126125555, 41008148, 2105714535, 2060367530], [2126125555, 41008148, 1992789308, 2060367530], [2126125555, 41008148, 2056246260, 2060367530], [2126125555, 41008148, 2033206719, 2060367530], [2126125555, 41008148, 2056144141, 2060367530], [2126125555, 41008148, 1988964524, 2060367530], [2126125555, 41008148, 2108728249, 2060367530], [2126125555, 41008148, 2151613183, 2060367530], [2126125555, 41008148, 2115541214, 2060367530], [2126125555, 41008148, 1967186380, 2060367530], [2126125555, 41008148, 1493776876, 2060367530], [2126125555, 136389625, 2054035259, 2060367530], [2126125555, 41008148, 2100761899, 2060367530], [2126125555, 83665646, 1600663531, 2060367530], [2126125555, 41008148, 1600663531, 2060367530], [2126125555, 41008148, 2245234895, 2060367530], [2126125555, 41008148, 2121551391, 2060367530], [2126125555, 197046077, 2138456883, 2060367530], [2126125555, 41008148, 2138456883, 2060367530], [2126125555, 136389625, 1981143068, 2060367530], [2126125555, 41008148, 1981143068, 2060367530], [2126125555, 41008148, 1778096727, 2060367530], [2126125555, 41008148, 2031494645, 2060367530], [2126125555, 41008148, 2104895179, 2060367530], [2126125555, 41008148, 2062717041, 2060367530], [2126125555, 41008148, 2003996555, 2060367530], [2126125555, 41008148, 2281809285, 2060367530], [2126125555, 41008148, 1977619009, 2060367530], [2126125555, 41008148, 1963613841, 2060367530], [2126125555, 41008148, 2091888740, 2060367530], [2126125555, 121687571, 2088116874, 2060367530], [2126125555, 41008148, 2088116874, 2060367530], [2126125555, 41008148, 2091903645, 2060367530], [2126125555, 41008148, 1931125231, 2060367530], [2126125555, 41008148, 2169184222, 2060367530], [2126125555, 41008148, 2170923812, 2060367530], [2126125555, 41008148, 2169557470, 2060367530], [2126125555, 83665646, 1886795254, 2060367530], [2126125555, 41008148, 1886795254, 2060367530], [2126125555, 41008148, 2153168037, 2060367530], [2126125555, 41008148, 2038690010, 2060367530], [2126125555, 41008148, 2139400169, 2060367530], [2126125555, 136389625, 2108375390, 2060367530], [2126125555, 41008148, 2108375390, 2060367530], [2126125555, 41008148, 1513144067, 2060367530], [2126125555, 83665646, 2162048273, 2060367530], [2126125555, 41008148, 2162048273, 2060367530], [2126125555, 41008148, 2035109576, 2060367530], [2126125555, 41008148, 2116873850, 2060367530], [2126125555, 41008148, 1990797646, 2060367530], [2126125555, 41008148, 2139772880, 2060367530], [2126125555, 41008148, 1501568714, 2060367530], [2126125555, 83665646, 2163570104, 2060367530], [2126125555, 41008148, 2163570104, 2060367530], [2126125555, 41008148, 2126023884, 2060367530], [2126125555, 41008148, 2137313966, 2060367530], [2126125555, 41008148, 2164414557, 2060367530], [2126125555, 41008148, 2134183863, 2060367530], [2126125555, 41008148, 2161316751, 2060367530], [2126125555, 136389625, 1547362644, 2060367530], [2126125555, 41008148, 1547362644, 2060367530], [2126125555, 41008148, 2152071969, 2060367530], [2126125555, 41008148, 1437003358, 2060367530], [2126125555, 41008148, 2051430465, 2060367530], [2126125555, 83665646, 2151137472, 2060367530], [2126125555, 41008148, 2151137472, 2060367530], [2126125555, 41008148, 2030829435, 2060367530], [2126125555, 83665646, 2143035555, 2060367530], [2126125555, 41008148, 2143035555, 2060367530], [2126125555, 41008148, 2144051690, 2060367530], [2126125555, 41008148, 2090572164, 2060367530], [2126125555, 41008148, 2043583889, 2060367530], [2126125555, 41008148, 2037057926, 2060367530], [2126125555, 83665646, 2015311866, 2060367530], [2126125555, 41008148, 2015311866, 2060367530], [2126125555, 41008148, 1978842586, 2060367530], [2126125555, 41008148, 2095233180, 2060367530], [2126125555, 41008148, 1572432552, 2060367530], [2126125555, 41008148, 2007266727, 2060367530], [2126125555, 41008148, 2097440068, 2060367530], [2126125555, 41008148, 2143656700, 2060367530], [2126125555, 41008148, 2121860922, 2060367530], [2126125555, 41008148, 1950357742, 2060367530], [2126125555, 41008148, 2011505304, 2060367530], [2126125555, 41008148, 2117942708, 2060367530], [2126125555, 41008148, 1523154139, 2060367530], [2126125555, 41008148, 2038406285, 2060367530], [2126125555, 41008148, 2109144615, 2060367530], [2126125555, 83665646, 1512798900, 2060367530], [2126125555, 41008148, 1512798900, 2060367530], [2126125555, 41008148, 1989009305, 2060367530], [2126125555, 41008148, 2152746352, 2060367530], [2126125555, 41008148, 1989005324, 2060367530], [2126125555, 41008148, 2108869194, 2060367530], [2126125555, 41008148, 2151417309, 2060367530], [2126125555, 41008148, 2039516884, 2060367530], [2126125555, 136389625, 2096429116, 2060367530], [2126125555, 41008148, 2096429116, 2060367530], [2126125555, 41008148, 2168057776, 2060367530], [2126125555, 41008148, 1988962577, 2060367530], [2126125555, 41008148, 2145871550, 2060367530], [2126125555, 83665646, 1963899048, 2060367530], [2126125555, 136389625, 1963899048, 2060367530], [2126125555, 41008148, 1966032471, 2060367530], [2126125555, 41008148, 2084055031, 2060367530], [2126125555, 41008148, 2049287639, 2060367530], [2126125555, 41008148, 2160965321, 2060367530], [2126125555, 41008148, 2138844975, 2060367530], [2126125555, 41008148, 2065897648, 2060367530], [2126125555, 41008148, 2073572883, 2060367530], [2126125555, 41008148, 1881844610, 2060367530], [2126125555, 41008148, 1586151637, 2060367530], [2126125555, 41008148, 2118723395, 2060367530], [2126125555, 41008148, 2104691641, 2060367530], [2126125555, 41008148, 2116407161, 2060367530], [2126125555, 41008148, 2155537504, 2060367530], [2126125555, 41008148, 2118619036, 2060367530], [2126125555, 41008148, 1529598617, 2060367530], [2126125555, 136389625, 2076333696, 2060367530], [2126125555, 41008148, 2076333696, 2060367530], [2126125555, 41008148, 2150671833, 2060367530], [2126125555, 83665646, 2008553178, 2060367530], [2126125555, 41008148, 2008553178, 2060367530], [2126125555, 41008148, 2138224681, 2060367530], [2126125555, 41008148, 2100893566, 2060367530], [2126125555, 41008148, 1482574403, 2060367530], [2126125555, 41008148, 2170067904, 2060367530], [2126125555, 41008148, 2086046126, 2060367530], [2126125555, 41008148, 2114275440, 2060367530], [2126125555, 41008148, 1488707986, 2060367530], [2126125555, 41008148, 1640432535, 2060367530], [2126125555, 83665646, 2045270235, 2060367530], [2126125555, 41008148, 2009011310, 2060367530], [2126125555, 41008148, 1539718938, 2060367530], [2126125555, 41008148, 1968273622, 2060367530], [2126125555, 41008148, 179714337, 2060367530], [2126125555, 41008148, 2033150265, 2060367530], [2126125555, 41008148, 2156980814, 2060367530], [2126125555, 41008148, 1993606786, 2060367530], [2126125555, 41008148, 1656228339, 2060367530], [2126125555, 41008148, 1576470535, 2060367530], [2126125555, 41008148, 2031745026, 2060367530], [2126125555, 136389625, 2116008456, 2060367530], [2126125555, 41008148, 2101633703, 2060367530], [2126125555, 41008148, 2161485260, 2060367530], [2126125555, 41008148, 1993171358, 2060367530], [2126125555, 41008148, 2138361364, 2060367530], [2126125555, 41008148, 1984735205, 2060367530], [2126125555, 41008148, 103107239, 2060367530], [2126125555, 41008148, 1571971721, 2060367530], [2126125555, 41008148, 2070796830, 2060367530], [2126125555, 41008148, 1887676092, 2060367530], [2126125555, 41008148, 2143904013, 2060367530], [2126125555, 41008148, 2105641655, 2060367530], [2126125555, 41008148, 1155327853, 2060367530], [2126125555, 41008148, 2142809864, 2060367530], [2126125555, 41008148, 2042720867, 2060367530], [2126125555, 41008148, 2016637318, 2060367530], [2126125555, 41008148, 1980910046, 2060367530], [2126125555, 41008148, 2053943079, 2060367530], [2126125555, 41008148, 2055328789, 2060367530], [2126125555, 41008148, 1588029049, 2060367530], [2126125555, 41008148, 2160858915, 2060367530], [2126125555, 41008148, 2154468723, 2060367530], [2126125555, 41008148, 1984355921, 2060367530], [2126125555, 41008148, 2025804608, 2060367530], [2126125555, 41008148, 2139089279, 2060367530], [2126125555, 41008148, 2148182561, 2060367530], [2126125555, 41008148, 2116828738, 2060367530], [2126125555, 41008148, 1992716556, 2060367530], [2126125555, 41008148, 1758070551, 2060367530], [2126125555, 41008148, 1579282490, 2060367530], [2126125555, 41008148, 2119851445, 2060367530], [2126125555, 41008148, 2114790400, 2060367530], [2126125555, 41008148, 2149671299, 2060367530], [2126125555, 41008148, 345340398, 2060367530], [2126125555, 41008148, 2167118705, 2060367530], [2126125555, 41008148, 2160292576, 2060367530], [2126125555, 41008148, 2018757355, 2060367530], [2126125555, 41008148, 2105392593, 2060367530], [2126125555, 41008148, 1928653571, 2060367530], [2126125555, 41008148, 2055528926, 2060367530], [2126125555, 41008148, 2113058479, 2060367530], [2126125555, 83665646, 2056433889, 2060367530], [2126125555, 41008148, 2056433889, 2060367530], [2126125555, 41008148, 2123228201, 2060367530], [2126125555, 41008148, 2116967773, 2060367530], [2126125555, 41008148, 2217423720, 2060367530], [2126125555, 136389625, 2145262170, 2060367530], [2126125555, 41008148, 2145262170, 2060367530], [2126125555, 41008148, 1980918396, 2060367530], [2126125555, 41008148, 2107710626, 2060367530], [2126125555, 41008148, 2107577916, 2060367530], [2126125555, 41008148, 2127152880, 2060367530], [2126125555, 41008148, 2090520750, 2060367530], [2126125555, 41008148, 2128030160, 2060367530], [2126125555, 41008148, 2109606349, 2060367530], [2126125555, 41008148, 2146885044, 2060367530], [2126125555, 41008148, 199046278, 2060367530], [2126125555, 41008148, 2124685741, 2060367530], [2126125555, 41008148, 2171256621, 2060367530], [2126125555, 41008148, 2141182814, 2060367530], [2126125555, 41008148, 1586656922, 2060367530], [2126125555, 41008148, 2166006339, 2060367530], [2126125555, 41008148, 1496009977, 2060367530], [2126125555, 83665646, 2092436556, 2060367530], [2126125555, 41008148, 2092436556, 2060367530], [2126125555, 41008148, 2050420817, 2060367530], [2126125555, 41008148, 2165547482, 2060367530], [2126125555, 41008148, 2011216526, 2060367530], [2126125555, 150899416, 2168145560, 2060367530], [2126125555, 41008148, 2168145560, 2060367530], [2126125555, 41008148, 2166102771, 2060367530], [2126125555, 41008148, 213537558, 2060367530], [2126125555, 83665646, 1519305082, 2060367530], [2126125555, 41008148, 1519305082, 2060367530], [2126125555, 41008148, 2118979929, 2060367530], [2126125555, 41008148, 2059011034, 2060367530], [2126125555, 41008148, 2113059831, 2060367530], [2126125555, 41008148, 2069936846, 2060367530], [2126125555, 41008148, 1964532546, 2060367530], [2126125555, 41008148, 2121883628, 2060367530], [2126125555, 41008148, 1595133258, 2060367530], [2126125555, 41008148, 2083670761, 2060367530], [2126125555, 41008148, 1576056417, 2060367530], [2126125555, 41008148, 2141868039, 2060367530], [2126125555, 41008148, 2163223411, 2060367530], [2126125555, 41008148, 1601871260, 2060367530], [2126125555, 41008148, 1499917665, 2060367530], [2126125555, 41008148, 2127368617, 2060367530], [2126125555, 41008148, 2037578067, 2060367530], [2126125555, 41008148, 2169915883, 2060367530], [2126125555, 41008148, 2100942256, 2060367530], [2126125555, 41008148, 2084702336, 2060367530], [2126125555, 41008148, 2157497593, 2060367530], [2126125555, 41008148, 1982731868, 2060367530], [2126125555, 41008148, 2149514931, 2060367530], [2126125555, 41008148, 1605839178, 2060367530], [2126125555, 41008148, 2145221928, 2060367530], [2126125555, 41008148, 1997652775, 2060367530], [2126125555, 41008148, 1679570717, 2060367530], [2126125555, 41008148, 2148444290, 2060367530], [2126125555, 41008148, 1563624010, 2060367530], [2126125555, 41008148, 1839388188, 2060367530], [2126125555, 41008148, 1973434865, 2060367530], [2126125555, 41008148, 2069592854, 2060367530], [2126125555, 41008148, 1992633256, 2060367530], [2126125555, 41008148, 59149218, 2060367530], [2126125555, 41008148, 1497743003, 2060367530], [2126125555, 41008148, 1968883826, 2060367530], [2126125555, 41008148, 2157157922, 2060367530], [2126125555, 41008148, 1595301433, 2060367530], [2126125555, 41008148, 1980186656, 2060367530], [2126125555, 41008148, 2143506329, 2060367530], [2126125555, 41008148, 2036038163, 2060367530], [2126125555, 41008148, 1967391020, 2060367530], [2126125555, 41008148, 1980798497, 2060367530], [2126125555, 41008148, 2098472208, 2060367530], [2126125555, 41008148, 2104870232, 2060367530], [2126125555, 41008148, 2067407532, 2060367530], [2126125555, 41008148, 2091169002, 2060367530], [2126125555, 41008148, 2111743762, 2060367530], [2126125555, 41008148, 2094262151, 2060367530], [2126125555, 41008148, 2123130007, 2060367530], [2126125555, 41008148, 2068141143, 2060367530], [2126125555, 41008148, 2116766402, 2060367530], [2126125555, 83665646, 2106034302, 2060367530], [2126125555, 41008148, 2106034302, 2060367530], [2126125555, 41008148, 2101835931, 2060367530], [2126125555, 41008148, 2154074575, 2060367530], [2126125555, 41008148, 2138234357, 2060367530], [2126125555, 41008148, 56212288, 2060367530], [2126125555, 136389625, 1607496110, 2060367530], [2126125555, 41008148, 1607496110, 2060367530], [2126125555, 41008148, 812016355, 2060367530], [2126125555, 41008148, 2032366458, 2060367530], [2126125555, 41008148, 1535753778, 2060367530], [2126125555, 136389625, 1580443261, 2060367530], [2126125555, 41008148, 1580443261, 2060367530], [2126125555, 136389625, 2110395041, 2060367530], [2126125555, 41008148, 2110395041, 2060367530], [2126125555, 41008148, 2140890695, 2060367530], [2126125555, 41008148, 1575014225, 2060367530], [2126125555, 83665646, 2024495121, 2060367530], [2126125555, 41008148, 2024495121, 2060367530], [2126125555, 41008148, 1508968897, 2060367530], [2126125555, 41008148, 1995311488, 2060367530], [2126125555, 41008148, 2149332881, 2060367530], [2126125555, 41008148, 2007515567, 2060367530], [2126125555, 41008148, 2124998511, 2060367530], [2126125555, 41008148, 2121956348, 2060367530], [2126125555, 41008148, 2080772494, 2060367530], [2126125555, 41008148, 2120084600, 2060367530], [2126125555, 41008148, 1541687050, 2060367530], [2126125555, 41008148, 1987482175, 2060367530], [2126125555, 41008148, 2095608430, 2060367530], [2126125555, 41008148, 2071440539, 2060367530], [2126125555, 41008148, 2101917423, 2060367530], [2126125555, 41008148, 2027378799, 2060367530], [2126125555, 41008148, 2080713905, 2060367530], [2126125555, 41008148, 2166965302, 2060367530], [2126125555, 41008148, 1973810917, 2060367530], [2126125555, 41008148, 2168011793, 2060367530], [2126125555, 41008148, 2166555855, 2060367530], [2126125555, 41008148, 2094360362, 2060367530], [2126125555, 41008148, 2121795228, 2060367530], [2126125555, 41008148, 2056716237, 2060367530], [2126125555, 41008148, 2101403221, 2060367530], [2126125555, 41008148, 2112667975, 2060367530], [2126125555, 41008148, 2160948244, 2060367530], [2126125555, 41008148, 2062427398, 2060367530], [2126125555, 41008148, 1885262319, 2060367530], [2126125555, 41008148, 2147876569, 2060367530], [2126125555, 41008148, 1607040979, 2060367530], [2126125555, 41008148, 2148266328, 2060367530], [2126125555, 41008148, 2106462908, 2060367530], [2126125555, 41008148, 2066519765, 2060367530], [2126125555, 41008148, 2147017929, 2060367530], [2126125555, 41008148, 1993371222, 2060367530], [2126125555, 41008148, 1828111109, 2060367530], [2126125555, 41008148, 2116242695, 2060367530], [2126125555, 41008148, 2073064881, 2060367530], [2126125555, 41008148, 2141915888, 2060367530], [2126125555, 41008148, 1576619248, 2060367530], [2126125555, 41008148, 2092670082, 2060367530], [2126125555, 41008148, 1523454849, 2060367530], [2126125555, 41008148, 2024254295, 2060367530], [2126125555, 41008148, 2113662425, 2060367530], [2126125555, 41008148, 1715589, 2060367530], [2126125555, 41008148, 2050025334, 2060367530], [2126125555, 136389625, 2107530710, 2060367530], [2126125555, 41008148, 2107530710, 2060367530], [2126125555, 41008148, 2034470906, 2060367530], [2126125555, 41008148, 2164535573, 2060367530], [2126125555, 41008148, 1628301141, 2060367530], [2126125555, 41008148, 2160876557, 2060367530], [2126125555, 41008148, 1992392048, 2060367530], [2126125555, 41008148, 799017145, 2060367530], [2126125555, 41008148, 1514049470, 2060367530], [2126125555, 41008148, 1887748936, 2060367530], [2126125555, 41008148, 2041580073, 2060367530], [2126125555, 41008148, 1964599475, 2060367530], [2126125555, 83665646, 1987324141, 2060367530], [2126125555, 41008148, 1987324141, 2060367530], [2126125555, 41008148, 2141158720, 2060367530], [2126125555, 41008148, 2159166819, 2060367530], [2126125555, 41008148, 1981225642, 2060367530], [2126125555, 41008148, 2099259943, 2060367530], [2126125555, 41008148, 1996962265, 2060367530], [2126125555, 41008148, 2104353053, 2060367530], [2126125555, 41008148, 2022206191, 2060367530], [2126125555, 41008148, 2163756102, 2060367530], [2126125555, 41008148, 2033152755, 2060367530], [2126125555, 41008148, 2104731375, 2060367530], [2126125555, 41008148, 2072465491, 2060367530], [2126125555, 41008148, 2118714001, 2060367530], [2126125555, 41008148, 2136706620, 2060367530], [2126125555, 83665646, 2096396712, 2060367530], [2126125555, 41008148, 2096396712, 2060367530], [2126125555, 41008148, 1969200066, 2060367530], [2126125555, 41008148, 2122450366, 2060367530], [2126125555, 41008148, 2207054035, 2060367530], [2126125555, 41008148, 1986967481, 2060367530], [2126125555, 41008148, 2149663325, 2060367530], [2126125555, 41008148, 2099557766, 2060367530], [2126125555, 41008148, 1976139682, 2060367530], [2126125555, 41008148, 2182295979, 2060367530], [2126125555, 41008148, 1977513402, 2060367530], [2126125555, 41008148, 2096870579, 2060367530], [2126125555, 41008148, 2138919297, 2060367530], [2126125555, 41008148, 1926323398, 2060367530], [2126125555, 41008148, 2098562567, 2060367530], [2126125555, 41008148, 2100537589, 2060367530], [2126125555, 41008148, 2048386500, 2060367530], [2126125555, 41008148, 2157426608, 2060367530], [2126125555, 41008148, 2078095851, 2060367530], [2126125555, 41008148, 2077871208, 2060367530], [2126125555, 41008148, 1081565272, 2060367530], [2126125555, 83665646, 2102653970, 2060367530], [2126125555, 136389625, 2102653970, 2060367530], [2126125555, 41008148, 2102653970, 2060367530], [2126125555, 41008148, 2148200517, 2060367530], [2126125555, 41008148, 2106353342, 2060367530], [2126125555, 41008148, 1885831658, 2060367530], [2126125555, 41008148, 2140637036, 2060367530], [2126125555, 41008148, 2058845710, 2060367530], [2126125555, 41008148, 1863668774, 2060367530], [2126125555, 41008148, 2051756120, 2060367530], [2126125555, 41008148, 2169687790, 2060367530], [2126125555, 41008148, 2000971069, 2060367530], [2126125555, 41008148, 2103978247, 2060367530], [2126125555, 136389625, 2026513769, 2060367530], [2126125555, 41008148, 2026513769, 2060367530], [2126125555, 41008148, 2139036986, 2060367530], [2126125555, 41008148, 2161645869, 2060367530], [2126125555, 41008148, 2113782937, 2060367530], [2126125555, 41008148, 2006021982, 2060367530], [2126125555, 41008148, 2135999858, 2060367530], [2126125555, 41008148, 2000827064, 2060367530], [2126125555, 41008148, 1550781814, 2060367530], [2126125555, 41008148, 2116204601, 2060367530], [2126125555, 41008148, 1604618930, 2060367530], [2126125555, 41008148, 1593920780, 2060367530], [2126125555, 41008148, 191828855, 2060367530], [2126125555, 41008148, 2145395241, 2060367530], [2126125555, 83665646, 1519373935, 2060367530], [2126125555, 41008148, 1519373935, 2060367530], [2126125555, 41008148, 1926741552, 2060367530], [2126125555, 41008148, 2170094756, 2060367530], [2126125555, 41008148, 2142337435, 2060367530], [2126125555, 41008148, 2135447786, 2060367530], [2126125555, 41008148, 2025279987, 2060367530], [2126125555, 41008148, 1566973065, 2060367530], [2126125555, 2109031554, 1566973065, 2060367530], [2126125555, 41008148, 1997805268, 2060367530], [2126125555, 41008148, 1972927610, 2060367530], [2126125555, 83665646, 1489131649, 2060367530], [2126125555, 41008148, 1489131649, 2060367530], [2126125555, 41008148, 1607702140, 2060367530], [2126125555, 41008148, 2097485241, 2060367530], [2126125555, 41008148, 1980721460, 2060367530], [2126125555, 41008148, 2120982017, 2060367530], [2126125555, 41008148, 2024224096, 2060367530], [2126125555, 41008148, 2164956449, 2060367530], [2126125555, 41008148, 7094477, 2060367530], [2126125555, 83665646, 2117391051, 2060367530], [2126125555, 41008148, 2117391051, 2060367530], [2126125555, 41008148, 2020033160, 2060367530], [2126125555, 41008148, 2171636604, 2060367530], [2126125555, 41008148, 1995648027, 2060367530], [2126125555, 41008148, 2141016251, 2060367530], [2126125555, 41008148, 1991285950, 2060367530], [2126125555, 136389625, 2085140422, 2060367530], [2126125555, 41008148, 2085140422, 2060367530], [2126125555, 41008148, 2016502191, 2060367530], [2126125555, 41008148, 2157203077, 2060367530], [2126125555, 41008148, 2121318693, 2060367530], [2126125555, 41008148, 2011269401, 2060367530], [2126125555, 41008148, 1522954156, 2060367530], [2126125555, 41008148, 2046696485, 2060367530], [2126125555, 41008148, 2136201243, 2060367530], [2126125555, 136389625, 1573072625, 2060367530], [2126125555, 41008148, 1573072625, 2060367530], [2126125555, 41008148, 2015950538, 2060367530], [2126125555, 41008148, 113328148, 2060367530], [2126125555, 41008148, 1964774592, 2060367530], [2126125555, 41008148, 2057331625, 2060367530], [2126125555, 41008148, 2018258098, 2060367530], [2126125555, 41008148, 2106819039, 2060367530], [2126125555, 41008148, 2104404561, 2060367530], [2126125555, 41008148, 753617165, 2060367530], [2126125555, 41008148, 2152395762, 2060367530], [2126125555, 41008148, 2028220375, 2060367530], [2126125555, 41008148, 2033559768, 2060367530], [2126125555, 41008148, 2002175583, 2060367530], [2126125555, 41008148, 1595737663, 2060367530], [2126125555, 136389625, 2139638712, 2060367530], [2126125555, 41008148, 2139638712, 2060367530], [2126125555, 41008148, 175858947, 2060367530], [2126125555, 41008148, 2069200864, 2060367530], [2126125555, 41008148, 1581905247, 2060367530], [2126125555, 41008148, 2164811624, 2060367530], [2126125555, 41008148, 2079968572, 2060367530], [2126125555, 41008148, 1981880290, 2060367530], [2126125555, 41008148, 1979572909, 2060367530], [2126125555, 41008148, 2046792933, 2060367530], [2126125555, 41008148, 2152624700, 2060367530], [2126125555, 41008148, 2015913315, 2060367530], [2126125555, 41008148, 2149232244, 2060367530], [2126125555, 41008148, 2169673019, 2060367530], [2126125555, 121687571, 604466934, 2060367530], [2126125555, 41008148, 604466934, 2060367530], [2126125555, 41008148, 2061734050, 2060367530], [2126125555, 41008148, 2142825941, 2060367530], [2126125555, 41008148, 2072954908, 2060367530], [2126125555, 41008148, 2154793733, 2060367530], [2126125555, 41008148, 182494199, 2060367530], [2126125555, 41008148, 2139207995, 2060367530], [2126125555, 41008148, 2083955084, 2060367530], [2126125555, 41008148, 1557257943, 2060367530], [2126125555, 41008148, 2162299648, 2060367530], [2126125555, 41008148, 2108305472, 2060367530], [2126125555, 41008148, 2055071880, 2060367530], [2126125555, 41008148, 2073615913, 2060367530], [2126125555, 41008148, 2113243342, 2060367530], [2126125555, 41008148, 1506934755, 2060367530], [2126125555, 41008148, 2098702399, 2060367530], [2126125555, 41008148, 2071755385, 2060367530], [2126125555, 41008148, 2018762151, 2060367530], [2126125555, 41008148, 2019710252, 2060367530], [2126125555, 41008148, 2062979914, 2060367530], [2126125555, 41008148, 2041535050, 2060367530], [2126125555, 41008148, 2099754468, 2060367530], [2126125555, 41008148, 2054228171, 2060367530], [2126125555, 41008148, 2076137834, 2060367530], [2126125555, 41008148, 2098762642, 2060367530], [2126125555, 41008148, 2135409046, 2060367530], [2126125555, 41008148, 2161711618, 2060367530], [2126125555, 41008148, 1534553241, 2060367530], [2126125555, 41008148, 2047243441, 2060367530], [2126125555, 41008148, 2167039992, 2060367530], [2126125555, 41008148, 2117823911, 2060367530], [2126125555, 41008148, 1986894595, 2060367530], [2126125555, 41008148, 2010463294, 2060367530], [2126125555, 41008148, 1980458770, 2060367530], [2126125555, 41008148, 2028587455, 2060367530], [2126125555, 41008148, 2143003018, 2060367530], [2126125555, 41008148, 2003449190, 2060367530], [2126125555, 41008148, 2041657512, 2060367530], [2126125555, 41008148, 1518668559, 2060367530], [2126125555, 41008148, 2126461018, 2060367530], [2126125555, 83665646, 2155408230, 2060367530], [2126125555, 41008148, 2155408230, 2060367530], [2126125555, 41008148, 1574212560, 2060367530], [2126125555, 136389625, 2121838964, 2060367530], [2126125555, 41008148, 2121838964, 2060367530], [2126125555, 41008148, 1506245655, 2060367530], [2126125555, 41008148, 1979467971, 2060367530], [2126125555, 41008148, 2022652270, 2060367530], [2126125555, 150899416, 2160428998, 2060367530], [2126125555, 41008148, 2160428998, 2060367530], [2126125555, 41008148, 2171523977, 2060367530], [2126125555, 41008148, 2122380301, 2060367530], [2126125555, 41008148, 1963682480, 2060367530], [2126125555, 41008148, 2112897219, 2060367530], [2126125555, 41008148, 2142667669, 2060367530], [2126125555, 41008148, 2123284999, 2060367530], [2126125555, 41008148, 2104635763, 2060367530], [2126125555, 83665646, 1489165664, 2060367530], [2126125555, 41008148, 1489165664, 2060367530], [2126125555, 41008148, 1676691994, 2060367530], [2126125555, 41008148, 2155078852, 2060367530], [2126125555, 41008148, 2118359036, 2060367530], [2126125555, 41008148, 153650570, 2060367530], [2126125555, 41008148, 2040919170, 2060367530], [2126125555, 41008148, 1965098113, 2060367530], [2126125555, 41008148, 2012898329, 2060367530], [2126125555, 41008148, 2132950014, 2060367530], [2126125555, 41008148, 1487808658, 2060367530], [2126125555, 41008148, 2093560546, 2060367530], [2126125555, 41008148, 1997986924, 2060367530], [2126125555, 41008148, 1972356041, 2060367530], [2126125555, 41008148, 2045836735, 2060367530], [2126125555, 41008148, 2131090565, 2060367530], [2126125555, 41008148, 2171394365, 2060367530], [2126125555, 41008148, 2092186110, 2060367530], [2126125555, 41008148, 2097533791, 2060367530], [2126125555, 41008148, 156794951, 2060367530], [2126125555, 41008148, 2155633358, 2060367530], [2126125555, 41008148, 2025047988, 2060367530], [2126125555, 41008148, 2116309761, 2060367530], [2126125555, 41008148, 2139425664, 2060367530], [2126125555, 41008148, 2017870147, 2060367530], [2126125555, 136389625, 2083444518, 2060367530], [2126125555, 41008148, 2083444518, 2060367530], [2126125555, 41008148, 2099362736, 2060367530], [2126125555, 41008148, 2117122232, 2060367530], [2126125555, 41008148, 1748920148, 2060367530], [2126125555, 41008148, 2130075702, 2060367530], [2126125555, 41008148, 2136743277, 2060367530], [2126125555, 41008148, 1991683888, 2060367530], [2126125555, 41008148, 1520303119, 2060367530], [2126125555, 41008148, 2119333664, 2060367530], [2126125555, 41008148, 1520871619, 2060367530], [2126125555, 41008148, 2044460276, 2060367530], [2126125555, 83665646, 2115034651, 2060367530], [2126125555, 41008148, 2115034651, 2060367530], [2126125555, 41008148, 2028089441, 2060367530], [2126125555, 41008148, 75824681, 2060367530], [2126125555, 41008148, 2247209708, 2060367530], [2126125555, 41008148, 1597177615, 2060367530], [2126125555, 41008148, 2134274113, 2060367530], [2126125555, 41008148, 2120346766, 2060367530], [2126125555, 41008148, 1501213224, 2060367530], [2126125555, 83665646, 2103810867, 2060367530], [2126125555, 41008148, 2103810867, 2060367530], [2126125555, 41008148, 2154143767, 2060367530], [2126125555, 41008148, 2132774183, 2060367530], [2126125555, 41008148, 1965537020, 2060367530], [2126125555, 41008148, 1968264118, 2060367530], [2126125555, 41008148, 2155380465, 2060367530], [2126125555, 41008148, 2035687979, 2060367530], [2126125555, 41008148, 2066039544, 2060367530], [2126125555, 41008148, 2164718964, 2060367530], [2126125555, 41008148, 2165727326, 2060367530], [2126125555, 41008148, 2022210287, 2060367530], [2126125555, 41008148, 1765205881, 2060367530], [2126125555, 41008148, 104113561, 2060367530], [2126125555, 41008148, 1991967321, 2060367530], [2126125555, 41008148, 2124555689, 2060367530], [2126125555, 41008148, 2141355352, 2060367530], [2126125555, 41008148, 2029228762, 2060367530], [2126125555, 41008148, 2120227279, 2060367530], [2126125555, 41008148, 1998730337, 2060367530], [2126125555, 41008148, 1524712381, 2060367530], [2126125555, 41008148, 2168456184, 2060367530], [2126125555, 41008148, 1995935348, 2060367530], [2126125555, 41008148, 2161560262, 2060367530], [2126125555, 41008148, 2111954936, 2060367530], [2126125555, 41008148, 2137303265, 2060367530], [2126125555, 41008148, 274926194, 2060367530], [2126125555, 41008148, 55909173, 2060367530], [2126125555, 41008148, 2147708969, 2060367530], [2126125555, 41008148, 1968300426, 2060367530], [2126125555, 41008148, 2159684331, 2060367530], [2126125555, 41008148, 2116512366, 2060367530], [2126125555, 41008148, 2154689719, 2060367530], [2126125555, 41008148, 2163108862, 2060367530], [2126125555, 41008148, 2042057954, 2060367530], [2126125555, 83665646, 1941172447, 2060367530], [2126125555, 41008148, 1941172447, 2060367530], [2126125555, 41008148, 2161236582, 2060367530], [2126125555, 41008148, 2123782535, 2060367530], [2126125555, 136389625, 2169078082, 2060367530], [2126125555, 41008148, 2169078082, 2060367530], [2126125555, 41008148, 2080572968, 2060367530], [2126125555, 41008148, 2088786192, 2060367530], [2126125555, 41008148, 2108572109, 2060367530], [2126125555, 41008148, 2145167670, 2060367530], [2126125555, 41008148, 2102631802, 2060367530], [2126125555, 41008148, 1977981883, 2060367530], [2126125555, 41008148, 2105885845, 2060367530], [2126125555, 41008148, 2013029345, 2060367530], [2126125555, 41008148, 2124567055, 2060367530], [2126125555, 41008148, 1567570670, 2060367530], [2126125555, 41008148, 2106371419, 2060367530], [2126125555, 41008148, 2187384899, 2060367530], [2126125555, 41008148, 2085559592, 2060367530], [2126125555, 41008148, 2077856614, 2060367530], [2126125555, 41008148, 2144488378, 2060367530], [2126125555, 136389625, 1544066197, 2060367530], [2126125555, 41008148, 1544066197, 2060367530], [2126125555, 41008148, 2119950654, 2060367530], [2126125555, 41008148, 2164255530, 2060367530], [2126125555, 41008148, 1558785121, 2060367530], [2126125555, 41008148, 1555839555, 2060367530], [2126125555, 41008148, 2045329095, 2060367530], [2126125555, 41008148, 1970098060, 2060367530], [2126125555, 41008148, 1660672390, 2060367530], [2126125555, 41008148, 2095212881, 2060367530], [2126125555, 41008148, 1780048796, 2060367530], [2126125555, 83665646, 2122007323, 2060367530], [2126125555, 41008148, 2122007323, 2060367530], [2126125555, 41008148, 425911588, 2060367530], [2126125555, 41008148, 1555116500, 2060367530], [2126125555, 41008148, 2109687894, 2060367530], [2126125555, 41008148, 2145620056, 2060367530], [2126125555, 41008148, 1505297101, 2060367530], [2126125555, 41008148, 1969796692, 2060367530], [2126125555, 41008148, 1968795164, 2060367530], [2126125555, 41008148, 2065541868, 2060367530], [2126125555, 41008148, 2113608932, 2060367530], [2126125555, 41008148, 1506464817, 2060367530], [2126125555, 41008148, 2162704961, 2060367530], [2126125555, 41008148, 1196101026, 2060367530], [2126125555, 41008148, 2129538346, 2060367530], [2126125555, 41008148, 2104564814, 2060367530], [2126125555, 136389625, 2062990026, 2060367530], [2126125555, 41008148, 2062990026, 2060367530], [2126125555, 83665646, 2170401208, 2060367530], [2126125555, 41008148, 2170401208, 2060367530], [2126125555, 41008148, 2101331317, 2060367530], [2126125555, 41008148, 107354807, 2060367530], [2126125555, 41008148, 1602819944, 2060367530], [2126125555, 41008148, 2029409452, 2060367530], [2126125555, 41008148, 1883304999, 2060367530], [2126125555, 41008148, 2154219014, 2060367530], [2126125555, 41008148, 2091151456, 2060367530], [2126125555, 41008148, 96910193, 2060367530], [2126125555, 41008148, 2159746827, 2060367530], [2126125555, 136389625, 2150685612, 2060367530], [2126125555, 41008148, 2150685612, 2060367530], [2126125555, 136389625, 2140624103, 2060367530], [2126125555, 41008148, 2140624103, 2060367530], [2126125555, 41008148, 2308475654, 2060367530], [2126125555, 41008148, 1970374581, 2060367530], [2126125555, 41008148, 1536234298, 2060367530], [2126125555, 41008148, 2028098600, 2060367530], [2126125555, 41008148, 1680516739, 2060367530], [2126125555, 41008148, 1972758460, 2060367530], [2126125555, 41008148, 2151287439, 2060367530], [2126125555, 41008148, 2170466086, 2060367530], [2126125555, 41008148, 2123341364, 2060367530], [2126125555, 41008148, 2097461747, 2060367530], [2126125555, 41008148, 1991576099, 2060367530], [2126125555, 41008148, 2019868234, 2060367530], [2126125555, 41008148, 1986156347, 2060367530], [2126125555, 41008148, 1504078530, 2060367530], [2126125555, 41008148, 411215278, 2060367530], [2126125555, 41008148, 2134277302, 2060367530], [2126125555, 41008148, 2008467321, 2060367530], [2126125555, 83665646, 2100484816, 2060367530], [2126125555, 41008148, 2100484816, 2060367530], [2126125555, 41008148, 2075930064, 2060367530], [2126125555, 41008148, 2083909361, 2060367530], [2126125555, 41008148, 1854769338, 2060367530], [2126125555, 83665646, 1769699551, 2060367530], [2126125555, 136389625, 1769699551, 2060367530], [2126125555, 41008148, 1769699551, 2060367530], [2126125555, 41008148, 1968073414, 2060367530], [2126125555, 83665646, 1541724404, 2060367530], [2126125555, 41008148, 1541724404, 2060367530], [2126125555, 41008148, 2149462209, 2060367530], [2126125555, 41008148, 2098111204, 2060367530], [2126125555, 41008148, 2154390427, 2060367530], [2126125555, 41008148, 2118222703, 2060367530], [2126125555, 41008148, 2027814467, 2060367530], [2126125555, 41008148, 2009611145, 2060367530], [2126125555, 41008148, 2123167923, 2060367530], [2126125555, 41008148, 2143643141, 2060367530], [2126125555, 83665646, 1495743626, 2060367530], [2126125555, 41008148, 1495743626, 2060367530], [2126125555, 41008148, 2132944024, 2060367530], [2126125555, 41008148, 2108140194, 2060367530], [2126125555, 41008148, 2100196422, 2060367530], [2126125555, 41008148, 1980150873, 2060367530], [2126125555, 41008148, 1575941852, 2060367530], [2126125555, 41008148, 2148649041, 2060367530], [2126125555, 41008148, 1615852913, 2060367530], [2126125555, 41008148, 2085097105, 2060367530], [2126125555, 41008148, 2073751735, 2060367530], [2126125555, 41008148, 1965343826, 2060367530], [2126125555, 41008148, 1851859510, 2060367530], [2126125555, 41008148, 2119799994, 2060367530], [2126125555, 41008148, 2167424169, 2060367530], [2126125555, 41008148, 2142051819, 2060367530], [2126125555, 41008148, 2136526350, 2060367530], [2126125555, 41008148, 1888504832, 2060367530], [2126125555, 41008148, 2105175163, 2060367530], [2126125555, 41008148, 2045908813, 2060367530], [2126125555, 41008148, 2075447277, 2060367530], [2126125555, 41008148, 1500036749, 2060367530], [2126125555, 41008148, 2025164222, 2060367530], [2126125555, 41008148, 2026871688, 2060367530], [2126125555, 41008148, 2103882754, 2060367530], [2126125555, 41008148, 2141310263, 2060367530], [2126125555, 41008148, 2128686067, 2060367530], [2126125555, 41008148, 2149757685, 2060367530], [2126125555, 41008148, 2231191718, 2060367530], [2126125555, 41008148, 2005386510, 2060367530], [2126125555, 41008148, 1963551311, 2060367530], [2126125555, 41008148, 2137530430, 2060367530], [2126125555, 41008148, 1971707011, 2060367530], [2126125555, 41008148, 2130089372, 2060367530], [2126125555, 41008148, 2016973091, 2060367530], [2126125555, 41008148, 2085085514, 2060367530], [2126125555, 41008148, 2032010107, 2060367530], [2126125555, 41008148, 2099263410, 2060367530], [2126125555, 41008148, 2160266486, 2060367530], [2126125555, 41008148, 2136348242, 2060367530], [2126125555, 41008148, 1607057945, 2060367530], [2126125555, 41008148, 1979415269, 2060367530], [2126125555, 41008148, 2151294986, 2060367530], [2126125555, 41008148, 2041922787, 2060367530], [2126125555, 41008148, 1541935275, 2060367530], [2126125555, 41008148, 2029267792, 2060367530], [2126125555, 41008148, 1992867634, 2060367530], [2126125555, 83665646, 1529507376, 2060367530], [2126125555, 41008148, 1529507376, 2060367530], [2126125555, 41008148, 1976757804, 2060367530], [2126125555, 41008148, 1990985473, 2060367530], [2126125555, 41008148, 1999641871, 2060367530], [2126125555, 83665646, 2024022568, 2060367530], [2126125555, 41008148, 2024022568, 2060367530], [2126125555, 41008148, 1857295696, 2060367530], [2126125555, 41008148, 1580929847, 2060367530], [2126125555, 41008148, 2085871054, 2060367530], [2126125555, 41008148, 2150012252, 2060367530], [2126125555, 41008148, 2079125934, 2060367530], [2126125555, 41008148, 1978641383, 2060367530], [2126125555, 41008148, 2054793012, 2060367530], [2126125555, 41008148, 2050047352, 2060367530], [2126125555, 41008148, 1875759270, 2060367530], [2126125555, 41008148, 1973352466, 2060367530], [2126125555, 41008148, 1978792808, 2060367530], [2126125555, 41008148, 1498959768, 2060367530], [2126125555, 41008148, 2160423449, 2060367530], [2126125555, 41008148, 2136176063, 2060367530], [2126125555, 41008148, 2011328881, 2060367530], [2126125555, 41008148, 2114189039, 2060367530], [2126125555, 41008148, 2111810199, 2060367530], [2126125555, 41008148, 1966245389, 2060367530], [2126125555, 41008148, 2055074140, 2060367530], [2126125555, 41008148, 2109589711, 2060367530], [2126125555, 136389625, 2149652368, 2060367530], [2126125555, 41008148, 2149652368, 2060367530], [2126125555, 41008148, 2097915043, 2060367530], [2126125555, 41008148, 2075640775, 2060367530], [2126125555, 41008148, 1963698617, 2060367530], [2126125555, 41008148, 2061553978, 2060367530], [2126125555, 41008148, 1493696174, 2060367530], [2126125555, 41008148, 2096290418, 2060367530], [2126125555, 41008148, 2160111912, 2060367530], [2126125555, 41008148, 2146525380, 2060367530], [2126125555, 41008148, 87363711, 2060367530], [2126125555, 41008148, 2101169494, 2060367530], [2126125555, 41008148, 2098581949, 2060367530], [2126125555, 41008148, 2000875215, 2060367530], [2126125555, 41008148, 2058525929, 2060367530], [2126125555, 41008148, 2125370140, 2060367530], [2126125555, 41008148, 2035928539, 2060367530], [2126125555, 41008148, 2165860969, 2060367530], [2126125555, 41008148, 2111073575, 2060367530], [2126125555, 41008148, 2108745717, 2060367530], [2126125555, 83665646, 1536789330, 2060367530], [2126125555, 41008148, 1536789330, 2060367530], [2126125555, 41008148, 1549133494, 2060367530], [2126125555, 41008148, 1526368216, 2060367530], [2126125555, 41008148, 2146151428, 2060367530], [2126125555, 41008148, 2094075296, 2060367530], [2126125555, 41008148, 2132034617, 2060367530], [2126125555, 41008148, 2059255142, 2060367530], [2126125555, 41008148, 2149461695, 2060367530], [2126125555, 41008148, 2162041599, 2060367530], [2126125555, 41008148, 2015861485, 2060367530], [2126125555, 41008148, 2150397584, 2060367530], [2126125555, 41008148, 2016800122, 2060367530], [2126125555, 41008148, 2129327131, 2060367530], [2126125555, 41008148, 2048244076, 2060367530], [2126125555, 41008148, 1606767567, 2060367530], [2126125555, 41008148, 2064910514, 2060367530], [2126125555, 41008148, 1512669428, 2060367530], [2126125555, 41008148, 1988927036, 2060367530], [2126125555, 41008148, 2109763787, 2060367530], [2126125555, 41008148, 2120523227, 2060367530], [2126125555, 41008148, 2178203736, 2060367530], [2126125555, 83665646, 2068689695, 2060367530], [2126125555, 41008148, 2068689695, 2060367530], [2126125555, 41008148, 2157817892, 2060367530], [2126125555, 41008148, 2119493560, 2060367530], [2126125555, 41008148, 2126989503, 2060367530], [2126125555, 41008148, 2127954717, 2060367530], [2126125555, 41008148, 1899730799, 2060367530], [2126125555, 41008148, 901507695, 2060367530], [2126125555, 41008148, 1566994267, 2060367530], [2126125555, 41008148, 2228065868, 2060367530], [2126125555, 41008148, 2136225274, 2060367530], [2126125555, 41008148, 2159496989, 2060367530], [2126125555, 41008148, 2015447206, 2060367530], [2126125555, 41008148, 2148588713, 2060367530], [2126125555, 41008148, 2136256398, 2060367530], [2126125555, 41008148, 2124440096, 2060367530], [2126125555, 41008148, 2077640211, 2060367530], [2126125555, 41008148, 2017847819, 2060367530], [2126125555, 41008148, 2026732289, 2060367530], [2126125555, 41008148, 2103310557, 2060367530], [2126125555, 41008148, 2089923551, 2060367530], [2126125555, 41008148, 1577473172, 2060367530], [2126125555, 41008148, 2036697845, 2060367530], [2126125555, 41008148, 1576544763, 2060367530], [2126125555, 41008148, 2217795475, 2060367530], [2126125555, 41008148, 2149268841, 2060367530], [2126125555, 41008148, 2033132936, 2060367530], [2126125555, 41008148, 2112813276, 2060367530], [2126125555, 41008148, 2202170526, 2060367530], [2126125555, 41008148, 2164654044, 2060367530], [2126125555, 41008148, 2081338131, 2060367530], [2126125555, 41008148, 1501367908, 2060367530], [2126125555, 41008148, 1999210392, 2060367530], [2126125555, 41008148, 1632996103, 2060367530], [2126125555, 41008148, 2162637608, 2060367530], [2126125555, 41008148, 2107296782, 2060367530], [2126125555, 41008148, 2115413155, 2060367530], [2126125555, 83665646, 1521881633, 2060367530], [2126125555, 41008148, 1521881633, 2060367530], [2126125555, 41008148, 1562729131, 2060367530], [2126125555, 41008148, 2080440460, 2060367530], [2126125555, 41008148, 2164824451, 2060367530], [2126125555, 41008148, 2146954683, 2060367530], [2126125555, 41008148, 2152721143, 2060367530], [2126125555, 41008148, 1596343363, 2060367530], [2126125555, 41008148, 2169190855, 2060367530], [2126125555, 41008148, 2024615827, 2060367530], [2126125555, 41008148, 1607904910, 2060367530], [2126125555, 41008148, 2109280910, 2060367530], [2126125555, 41008148, 2123867417, 2060367530], [2126125555, 41008148, 2022020988, 2060367530], [2126125555, 41008148, 2002264765, 2060367530], [2126125555, 83665646, 2121342269, 2060367530], [2126125555, 41008148, 2121342269, 2060367530], [2126125555, 136389625, 2156421615, 2060367530], [2126125555, 41008148, 2156421615, 2060367530], [2126125555, 41008148, 1580708851, 2060367530], [2126125555, 41008148, 2132048776, 2060367530], [2126125555, 41008148, 2165824859, 2060367530], [2126125555, 41008148, 2125516649, 2060367530], [2126125555, 41008148, 2150291692, 2060367530], [2126125555, 41008148, 2042494420, 2060367530], [2126125555, 41008148, 2089822378, 2060367530], [2126125555, 41008148, 2064642190, 2060367530], [2126125555, 41008148, 2110300018, 2060367530], [2126125555, 41008148, 2057156516, 2060367530], [2126125555, 41008148, 1999259052, 2060367530], [2126125555, 41008148, 2136083744, 2060367530], [2126125555, 41008148, 2079589314, 2060367530], [2126125555, 41008148, 2122856505, 2060367530], [2126125555, 41008148, 245588886, 2060367530], [2126125555, 41008148, 2096567050, 2060367530], [2126125555, 41008148, 2134257329, 2060367530], [2126125555, 41008148, 1986218335, 2060367530], [2126125555, 41008148, 2026354995, 2060367530], [2126125555, 41008148, 2141513335, 2060367530], [2126125555, 41008148, 2012321340, 2060367530], [2126125555, 41008148, 2054753687, 2060367530], [2126125555, 41008148, 2062660911, 2060367530], [2126125555, 41008148, 1492482036, 2060367530], [2126125555, 41008148, 2131278994, 2060367530], [2126125555, 41008148, 1496566919, 2060367530], [2126125555, 41008148, 1985900816, 2060367530], [2126125555, 41008148, 2148642044, 2060367530], [2126125555, 41008148, 2043600844, 2060367530], [2126125555, 41008148, 2170523420, 2060367530], [2126125555, 83665646, 1967223302, 2060367530], [2126125555, 41008148, 1967223302, 2060367530], [2126125555, 136389625, 2136388380, 2060367530], [2126125555, 41008148, 2136388380, 2060367530], [2126125555, 41008148, 574929646, 2060367530], [2126125555, 41008148, 2115412106, 2060367530], [2126125555, 41008148, 2021930309, 2060367530], [2126125555, 41008148, 2080881245, 2060367530], [2126125555, 41008148, 2165347516, 2060367530], [2126125555, 41008148, 2144715693, 2060367530], [2126125555, 41008148, 2090624707, 2060367530], [2126125555, 41008148, 2099060893, 2060367530], [2126125555, 41008148, 2033340842, 2060367530], [2126125555, 41008148, 1972737398, 2060367530], [2126125555, 83665646, 2021428768, 2060367530], [2126125555, 41008148, 2021428768, 2060367530], [2126125555, 41008148, 2122203516, 2060367530], [2126125555, 41008148, 2166954087, 2060367530], [2126125555, 41008148, 1988406745, 2060367530], [2126125555, 41008148, 2001069243, 2060367530], [2126125555, 41008148, 2004117585, 2060367530], [2126125555, 41008148, 2120572820, 2060367530], [2126125555, 83665646, 2117250158, 2060367530], [2126125555, 41008148, 2117250158, 2060367530], [2126125555, 41008148, 1906763645, 2060367530], [2126125555, 41008148, 1982986362, 2060367530], [2126125555, 41008148, 2300921526, 2060367530], [2126125555, 41008148, 2074205728, 2060367530], [2126125555, 41008148, 2121428343, 2060367530], [2126125555, 41008148, 2110141351, 2060367530], [2126125555, 41008148, 2024631965, 2060367530], [2126125555, 41008148, 2047839875, 2060367530], [2126125555, 41008148, 2124913745, 2060367530], [2126125555, 41008148, 2038643039, 2060367530], [2126125555, 41008148, 1995341420, 2060367530], [2126125555, 41008148, 2148816020, 2060367530], [2126125555, 41008148, 2270160110, 2060367530], [2126125555, 41008148, 2058771313, 2060367530], [2126125555, 41008148, 2101537277, 2060367530], [2126125555, 41008148, 2149681371, 2060367530], [2126125555, 41008148, 2015165863, 2060367530], [2126125555, 41008148, 1482515287, 2060367530], [2126125555, 41008148, 2131168872, 2060367530], [2126125555, 41008148, 2164338942, 2060367530], [2126125555, 41008148, 1989889367, 2060367530], [2126125555, 41008148, 2042231795, 2060367530], [2126125555, 41008148, 2124247866, 2060367530], [2126125555, 41008148, 2046091579, 2060367530], [2126125555, 41008148, 1486784581, 2060367530], [2126125555, 41008148, 1529794084, 2060367530], [2126125555, 41008148, 2118698166, 2060367530], [2126125555, 41008148, 2083923271, 2060367530], [2126125555, 41008148, 2012579961, 2060367530], [2126125555, 41008148, 1987531039, 2060367530], [2126125555, 41008148, 2147722939, 2060367530], [2126125555, 41008148, 133451905, 2060367530], [2126125555, 41008148, 1577604239, 2060367530], [2126125555, 41008148, 2141964538, 2060367530], [2126125555, 41008148, 2155238511, 2060367530], [2126125555, 2109031554, 20958270, 2060367530], [2126125555, 41008148, 2111534422, 2060367530], [2126125555, 41008148, 1606348152, 2060367530], [2126125555, 41008148, 2098752082, 2060367530], [2126125555, 41008148, 2101302327, 2060367530], [2126125555, 41008148, 2100342044, 2060367530], [2126125555, 41008148, 1582935230, 2060367530], [2126125555, 41008148, 2152158930, 2060367530], [2126125555, 41008148, 1592878262, 2060367530], [2126125555, 41008148, 2001926312, 2060367530], [2126125555, 41008148, 1557924126, 2060367530], [2126125555, 41008148, 56954961, 2060367530], [2126125555, 41008148, 1585221131, 2060367530], [2126125555, 41008148, 2146140664, 2060367530], [2126125555, 41008148, 2030459594, 2060367530], [2126125555, 41008148, 191808681, 2060367530], [2126125555, 41008148, 2148228815, 2060367530], [2126125555, 41008148, 2161239367, 2060367530], [2126125555, 41008148, 2116657582, 2060367530], [2126125555, 41008148, 2139762959, 2060367530], [2126125555, 41008148, 2167839456, 2060367530], [2126125555, 41008148, 1817764486, 2060367530], [2126125555, 41008148, 2119421810, 2060367530], [2126125555, 41008148, 2140676672, 2060367530], [2126125555, 41008148, 2019267424, 2060367530], [2126125555, 41008148, 2009683162, 2060367530], [2126125555, 41008148, 2169616675, 2060367530], [2126125555, 41008148, 2100164065, 2060367530], [2126125555, 41008148, 1979038921, 2060367530], [2126125555, 41008148, 2101028490, 2060367530], [2126125555, 41008148, 2171510338, 2060367530], [2126125555, 41008148, 1570476371, 2060367530], [2126125555, 41008148, 2123233300, 2060367530], [2126125555, 41008148, 2076503247, 2060367530], [2126125555, 41008148, 1957380691, 2060367530], [2126125555, 41008148, 1975749078, 2060367530], [2126125555, 41008148, 2110522959, 2060367530], [2126125555, 41008148, 2113527975, 2060367530], [2126125555, 41008148, 2127170042, 2060367530], [2126125555, 41008148, 2144965243, 2060367530], [2126125555, 41008148, 2120962586, 2060367530], [2126125555, 41008148, 2022686787, 2060367530], [2126125555, 41008148, 2125048244, 2060367530], [2126125555, 136389625, 2044053476, 2060367530], [2126125555, 41008148, 2044053476, 2060367530], [2126125555, 41008148, 2100716492, 2060367530], [2126125555, 41008148, 2081674865, 2060367530], [2126125555, 41008148, 2144207687, 2060367530], [2126125555, 41008148, 2134847989, 2060367530], [2126125555, 136389625, 1975713387, 2060367530], [2126125555, 41008148, 1975713387, 2060367530], [2126125555, 41008148, 1966550988, 2060367530], [2126125555, 41008148, 1939429412, 2060367530], [2126125555, 41008148, 2131431895, 2060367530], [2126125555, 41008148, 2006830304, 2060367530], [2126125555, 41008148, 1532734293, 2060367530], [2126125555, 41008148, 2097856279, 2060367530], [2126125555, 41008148, 2039870018, 2060367530], [2126125555, 41008148, 2101358581, 2060367530], [2126125555, 41008148, 41531201, 2060367530], [2126125555, 41008148, 1989638930, 2060367530], [2126125555, 41008148, 2165052478, 2060367530], [2126125555, 41008148, 2144534103, 2060367530], [2126125555, 41008148, 2091768486, 2060367530], [2126125555, 136389625, 1524845558, 2060367530], [2126125555, 41008148, 1524845558, 2060367530], [2126125555, 41008148, 2020334773, 2060367530], [2126125555, 41008148, 115577841, 2060367530], [2126125555, 41008148, 2021168894, 2060367530], [2126125555, 41008148, 2088845369, 2060367530], [2126125555, 41008148, 203618332, 2060367530], [2126125555, 41008148, 2023157741, 2060367530], [2126125555, 41008148, 1543362597, 2060367530], [2126125555, 41008148, 1979542165, 2060367530], [2126125555, 41008148, 2019500872, 2060367530], [2126125555, 136389625, 1997099399, 2060367530], [2126125555, 41008148, 1997099399, 2060367530], [2126125555, 136389625, 2125894992, 2060367530], [2126125555, 41008148, 2125894992, 2060367530], [2126125555, 41008148, 2136374379, 2060367530], [2126125555, 41008148, 2025967919, 2060367530], [2126125555, 41008148, 1578447803, 2060367530], [2126125555, 41008148, 2049577847, 2060367530], [2126125555, 41008148, 1539383895, 2060367530], [2126125555, 41008148, 1992671255, 2060367530], [2126125555, 41008148, 2004224263, 2060367530], [2126125555, 41008148, 2171435981, 2060367530], [2126125555, 41008148, 1569358989, 2060367530], [2126125555, 41008148, 2113601776, 2060367530], [2126125555, 83665646, 2109357635, 2060367530], [2126125555, 41008148, 2100750437, 2060367530], [2126125555, 83665646, 1557702606, 2060367530], [2126125555, 41008148, 1557702606, 2060367530], [2126125555, 41008148, 2112747532, 2060367530], [2126125555, 41008148, 1526840438, 2060367530], [2126125555, 41008148, 139278562, 2060367530], [2126125555, 41008148, 2010688755, 2060367530], [2126125555, 41008148, 2119081374, 2060367530], [2126125555, 41008148, 1607907376, 2060367530], [2126125555, 41008148, 1545950467, 2060367530], [2126125555, 41008148, 2157857781, 2060367530], [2126125555, 41008148, 2101739970, 2060367530], [2126125555, 41008148, 1969736545, 2060367530], [2126125555, 41008148, 2121418003, 2060367530], [2126125555, 41008148, 1536880394, 2060367530], [2126125555, 41008148, 2143957355, 2060367530], [2126125555, 41008148, 2139028941, 2060367530], [2126125555, 41008148, 2168310553, 2060367530], [2126125555, 150899416, 1989374645, 2060367530], [2126125555, 41008148, 1989374645, 2060367530], [2126125555, 41008148, 1605740062, 2060367530], [2126125555, 41008148, 1505153419, 2060367530], [2126125555, 41008148, 2160491848, 2060367530], [2126125555, 41008148, 2089022734, 2060367530], [2126125555, 83665646, 1497588966, 2060367530], [2126125555, 41008148, 1497588966, 2060367530], [2126125555, 41008148, 137872035, 2060367530], [2126125555, 41008148, 2052717560, 2060367530], [2126125555, 41008148, 2124526644, 2060367530], [2126125555, 41008148, 2017318051, 2060367530], [2126125555, 41008148, 2156544303, 2060367530], [2126125555, 41008148, 2113407213, 2060367530], [2126125555, 41008148, 2141843520, 2060367530], [2126125555, 41008148, 2126043877, 2060367530], [2126125555, 83665646, 2065559832, 2060367530], [2126125555, 41008148, 2065559832, 2060367530], [2126125555, 41008148, 2121857360, 2060367530], [2126125555, 41008148, 2086734330, 2060367530], [2126125555, 41008148, 2144012404, 2060367530], [2126125555, 41008148, 2164662393, 2060367530], [2126125555, 41008148, 1533414157, 2060367530], [2126125555, 41008148, 1589811675, 2060367530], [2126125555, 41008148, 2133174044, 2060367530], [2126125555, 136389625, 1971497999, 2060367530], [2126125555, 41008148, 1971497999, 2060367530], [2126125555, 41008148, 1985451711, 2060367530], [2126125555, 41008148, 2102837462, 2060367530], [2126125555, 41008148, 1995068038, 2060367530], [2126125555, 41008148, 2170148092, 2060367530], [2126125555, 41008148, 1657468312, 2060367530], [2126125555, 41008148, 1737354829, 2060367530], [2126125555, 41008148, 12057658, 2060367530], [2126125555, 41008148, 2138999937, 2060367530], [2126125555, 83665646, 1589494148, 2060367530], [2126125555, 41008148, 1589494148, 2060367530], [2126125555, 41008148, 1504286072, 2060367530], [2126125555, 41008148, 2118072670, 2060367530], [2126125555, 41008148, 2094871756, 2060367530], [2126125555, 41008148, 2147850221, 2060367530], [2126125555, 41008148, 2145107089, 2060367530], [2126125555, 41008148, 2118843489, 2060367530], [2126125555, 136389625, 1939397747, 2060367530], [2126125555, 41008148, 1939397747, 2060367530], [2126125555, 41008148, 1526632783, 2060367530], [2126125555, 41008148, 61915276, 2060367530], [2126125555, 41008148, 2113098151, 2060367530], [2126125555, 44249647, 1964729461, 2060367530], [2126125555, 41008148, 1996732080, 2060367530], [2126125555, 41008148, 2129888445, 2060367530], [2126125555, 41008148, 2018908206, 2060367530], [2126125555, 41008148, 2103322349, 2060367530], [2126125555, 41008148, 2131309805, 2060367530], [2126125555, 41008148, 2029170377, 2060367530], [2126125555, 136389625, 2149033549, 2060367530], [2126125555, 41008148, 2149033549, 2060367530], [2126125555, 41008148, 1897037031, 2060367530], [2126125555, 41008148, 1963728911, 2060367530], [2126125555, 41008148, 1759994076, 2060367530], [2126125555, 41008148, 2155020862, 2060367530], [2126125555, 41008148, 2149487265, 2060367530], [2126125555, 41008148, 2137707990, 2060367530], [2126125555, 41008148, 1566447673, 2060367530], [2126125555, 41008148, 2131156346, 2060367530], [2126125555, 41008148, 2193704462, 2060367530], [2126125555, 41008148, 1965776900, 2060367530], [2126125555, 41008148, 2108282916, 2060367530], [2126125555, 41008148, 2167414099, 2060367530], [2126125555, 41008148, 2031690114, 2060367530], [2126125555, 41008148, 2153328647, 2060367530], [2126125555, 41008148, 2087704943, 2060367530], [2126125555, 83665646, 1505468032, 2060367530], [2126125555, 41008148, 1505468032, 2060367530], [2126125555, 41008148, 2149504965, 2060367530], [2126125555, 41008148, 2002511953, 2060367530], [2126125555, 41008148, 2144730211, 2060367530], [2126125555, 41008148, 2143654090, 2060367530], [2126125555, 41008148, 1975792960, 2060367530], [2126125555, 41008148, 2129873023, 2060367530], [2126125555, 41008148, 2102420524, 2060367530], [2126125555, 41008148, 2129518077, 2060367530], [2126125555, 136389625, 2085735514, 2060367530], [2126125555, 41008148, 2085735514, 2060367530], [2126125555, 41008148, 2010106115, 2060367530], [2126125555, 41008148, 1964647807, 2060367530], [2126125555, 41008148, 2133621001, 2060367530], [2126125555, 41008148, 2162025846, 2060367530], [2126125555, 41008148, 1543215536, 2060367530], [2126125555, 41008148, 2150263902, 2060367530], [2126125555, 41008148, 1975218614, 2060367530], [2126125555, 136389625, 2148613597, 2060367530], [2126125555, 41008148, 2148613597, 2060367530], [2126125555, 41008148, 2039438086, 2060367530], [2126125555, 41008148, 2143688392, 2060367530], [2126125555, 41008148, 2015747318, 2060367530], [2126125555, 41008148, 2081170324, 2060367530], [2126125555, 41008148, 2053245348, 2060367530], [2126125555, 41008148, 2062870733, 2060367530], [2126125555, 41008148, 1743989995, 2060367530], [2126125555, 41008148, 627449696, 2060367530], [2126125555, 41008148, 2063124186, 2060367530], [2126125555, 41008148, 2147926899, 2060367530], [2126125555, 41008148, 2126900819, 2060367530], [2126125555, 41008148, 1543095273, 2060367530], [2126125555, 41008148, 2132737107, 2060367530], [2126125555, 83665646, 1595527672, 2060367530], [2126125555, 41008148, 1595527672, 2060367530], [2126125555, 83665646, 1508795856, 2060367530], [2126125555, 41008148, 1508795856, 2060367530], [2126125555, 41008148, 2150429539, 2060367530], [2126125555, 41008148, 2131332843, 2060367530], [2126125555, 41008148, 1988339281, 2060367530], [2126125555, 41008148, 2095953004, 2060367530], [2126125555, 41008148, 2113670963, 2060367530], [2126125555, 41008148, 2104154894, 2060367530], [2126125555, 41008148, 2122176428, 2060367530], [2126125555, 83665646, 1489912246, 2060367530], [2126125555, 41008148, 1489912246, 2060367530], [2126125555, 41008148, 1982159761, 2060367530], [2126125555, 83665646, 2098395318, 2060367530], [2126125555, 41008148, 2098395318, 2060367530], [2126125555, 41008148, 2167609528, 2060367530], [2126125555, 41008148, 2157423876, 2060367530], [2126125555, 41008148, 2141502140, 2060367530], [2126125555, 136389625, 2126270451, 2060367530], [2126125555, 41008148, 2126270451, 2060367530], [2126125555, 41008148, 2168464035, 2060367530], [2126125555, 41008148, 620177138, 2060367530], [2126125555, 41008148, 2029523330, 2060367530], [2126125555, 41008148, 2126529487, 2060367530], [2126125555, 83665646, 7382899, 2060367530], [2126125555, 41008148, 7382899, 2060367530], [2126125555, 41008148, 2160517512, 2060367530], [2126125555, 41008148, 2115986376, 2060367530], [2126125555, 41008148, 2123735579, 2060367530], [2126125555, 41008148, 2137294996, 2060367530], [2126125555, 41008148, 2132606706, 2060367530], [2126125555, 41008148, 1491709519, 2060367530], [2126125555, 41008148, 1527119177, 2060367530], [2126125555, 41008148, 2167362086, 2060367530], [2126125555, 41008148, 2126002550, 2060367530], [2126125555, 41008148, 2023608070, 2060367530], [2126125555, 41008148, 2110695235, 2060367530], [2126125555, 41008148, 1852884090, 2060367530], [2126125555, 41008148, 2100398949, 2060367530], [2126125555, 41008148, 2008869473, 2060367530], [2126125555, 41008148, 2163653108, 2060367530], [2126125555, 41008148, 2063081919, 2060367530], [2126125555, 41008148, 2065462966, 2060367530], [2126125555, 41008148, 2136295606, 2060367530], [2126125555, 41008148, 2005265680, 2060367530], [2126125555, 41008148, 2001505285, 2060367530], [2126125555, 41008148, 2131826354, 2060367530], [2126125555, 41008148, 2126330065, 2060367530], [2126125555, 41008148, 2157596687, 2060367530], [2126125555, 41008148, 2058347045, 2060367530], [2126125555, 41008148, 1521102704, 2060367530], [2126125555, 41008148, 2158666606, 2060367530], [2126125555, 41008148, 1965870945, 2060367530], [2126125555, 41008148, 2028104000, 2060367530], [2126125555, 41008148, 2120876529, 2060367530], [2126125555, 41008148, 2153852227, 2060367530], [2126125555, 41008148, 2145145741, 2060367530], [2126125555, 41008148, 190446686, 2060367530], [2126125555, 41008148, 2140716320, 2060367530], [2126125555, 41008148, 2025823698, 2060367530], [2126125555, 83665646, 1982690442, 2060367530], [2126125555, 41008148, 1761400383, 2060367530], [2126125555, 41008148, 1968986632, 2060367530], [2126125555, 41008148, 2096266263, 2060367530], [2126125555, 41008148, 2299156643, 2060367530], [2126125555, 41008148, 2131852339, 2060367530], [2126125555, 41008148, 2128745915, 2060367530], [2126125555, 41008148, 2126636897, 2060367530], [2126125555, 41008148, 2057564648, 2060367530], [2126125555, 41008148, 2010074750, 2060367530], [2126125555, 83665646, 1484831990, 2060367530], [2126125555, 41008148, 1484831990, 2060367530], [2126125555, 41008148, 1556772791, 2060367530], [2126125555, 41008148, 2119769320, 2060367530], [2126125555, 41008148, 1577675337, 2060367530], [2126125555, 41008148, 2172026219, 2060367530], [2126125555, 41008148, 2089664207, 2060367530], [2126125555, 41008148, 2122095985, 2060367530], [2126125555, 41008148, 2141711441, 2060367530], [2126125555, 41008148, 2108638497, 2060367530], [2126125555, 41008148, 2152869556, 2060367530], [2126125555, 41008148, 2064517523, 2060367530], [2126125555, 41008148, 1583404447, 2060367530], [2126125555, 41008148, 2100146731, 2060367530], [2126125555, 41008148, 2044787557, 2060367530], [2126125555, 41008148, 1996956286, 2060367530], [2126125555, 41008148, 2030028572, 2060367530], [2126125555, 41008148, 2114776231, 2060367530], [2126125555, 41008148, 2077484223, 2060367530], [2126125555, 41008148, 2155097406, 2060367530], [2126125555, 41008148, 1976938767, 2060367530], [2126125555, 41008148, 2124096908, 2060367530], [2126125555, 83665646, 1578563085, 2060367530], [2126125555, 41008148, 1578563085, 2060367530], [2126125555, 41008148, 2151524854, 2060367530], [2126125555, 41008148, 2152592897, 2060367530], [2126125555, 41008148, 1588948804, 2060367530], [2126125555, 41008148, 2046269793, 2060367530], [2126125555, 41008148, 2121052776, 2060367530], [2126125555, 83665646, 2135123290, 2060367530], [2126125555, 41008148, 2135123290, 2060367530], [2126125555, 41008148, 2067614423, 2060367530], [2126125555, 41008148, 2104858037, 2060367530], [2126125555, 41008148, 812183607, 2060367530], [2126125555, 41008148, 2139155312, 2060367530], [2126125555, 41008148, 2044188602, 2060367530], [2126125555, 41008148, 2058821399, 2060367530], [2126125555, 41008148, 2094128702, 2060367530], [2126125555, 41008148, 2096863794, 2060367530], [2126125555, 41008148, 2149926662, 2060367530], [2126125555, 41008148, 2084288830, 2060367530], [2126125555, 41008148, 1541115582, 2060367530], [2126125555, 41008148, 2112217602, 2060367530], [2126125555, 41008148, 2108205461, 2060367530], [2126125555, 41008148, 2101161897, 2060367530], [2126125555, 41008148, 2111270167, 2060367530], [2126125555, 41008148, 1839567155, 2060367530], [2126125555, 41008148, 2021399367, 2060367530], [2126125555, 41008148, 1503870053, 2060367530], [2126125555, 41008148, 2106179477, 2060367530], [2126125555, 41008148, 1579917587, 2060367530], [2126125555, 41008148, 2156893798, 2060367530], [2126125555, 41008148, 2021533732, 2060367530], [2126125555, 41008148, 2013856278, 2060367530], [2126125555, 41008148, 2063971729, 2060367530], [2126125555, 41008148, 2083047225, 2060367530], [2126125555, 41008148, 2149778912, 2060367530], [2126125555, 41008148, 2189713350, 2060367530], [2126125555, 41008148, 1963853984, 2060367530], [2126125555, 41008148, 2156020269, 2060367530], [2126125555, 41008148, 1964739745, 2060367530], [2126125555, 41008148, 2139398520, 2060367530], [2126125555, 41008148, 1524465448, 2060367530], [2126125555, 41008148, 2104065668, 2060367530], [2126125555, 41008148, 2143782105, 2060367530], [2126125555, 2109031554, 2143782105, 2060367530], [2126125555, 41008148, 1995358810, 2060367530], [2126125555, 41008148, 2147331470, 2060367530], [2126125555, 41008148, 2069050152, 2060367530], [2126125555, 41008148, 192700991, 2060367530], [2126125555, 41008148, 2134122776, 2060367530], [2126125555, 41008148, 1823497629, 2060367530], [2126125555, 41008148, 2123295749, 2060367530], [2126125555, 41008148, 2008912587, 2060367530], [2126125555, 41008148, 1987625740, 2060367530], [2126125555, 41008148, 2108447849, 2060367530], [2126125555, 41008148, 1982207153, 2060367530], [2126125555, 41008148, 2121811280, 2060367530], [2126125555, 41008148, 1603803230, 2060367530], [2126125555, 41008148, 2052655256, 2060367530], [2126125555, 41008148, 2076173808, 2060367530], [2126125555, 41008148, 2019188820, 2060367530], [2126125555, 41008148, 2084250217, 2060367530], [2126125555, 41008148, 101072827, 2060367530], [2126125555, 41008148, 2110067331, 2060367530], [2126125555, 41008148, 2154564714, 2060367530], [2126125555, 41008148, 2153734348, 2060367530], [2126125555, 136389625, 2099944666, 2060367530], [2126125555, 41008148, 2099944666, 2060367530], [2126125555, 41008148, 2096135758, 2060367530], [2126125555, 41008148, 2118622003, 2060367530], [2126125555, 41008148, 1499045143, 2060367530], [2126125555, 41008148, 2006266337, 2060367530], [2126125555, 41008148, 2127749074, 2060367530], [2126125555, 41008148, 2145739355, 2060367530], [2126125555, 41008148, 1967373529, 2060367530], [2126125555, 41008148, 2169075190, 2060367530], [2126125555, 41008148, 2167225221, 2060367530], [2126125555, 41008148, 2074506978, 2060367530], [2126125555, 41008148, 2151244813, 2060367530], [2126125555, 41008148, 2081706348, 2060367530], [2126125555, 41008148, 2157116414, 2060367530], [2126125555, 41008148, 2147341050, 2060367530], [2126125555, 41008148, 2098687129, 2060367530], [2126125555, 41008148, 302966890, 2060367530], [2126125555, 41008148, 2036694619, 2060367530], [2126125555, 41008148, 1558656720, 2060367530], [2126125555, 41008148, 1972195444, 2060367530], [2126125555, 41008148, 1409902959, 2060367530], [2126125555, 41008148, 2133479933, 2060367530], [2126125555, 41008148, 2037398514, 2060367530], [2126125555, 41008148, 2113881575, 2060367530], [2126125555, 41008148, 2158504699, 2060367530], [2126125555, 41008148, 2145047956, 2060367530], [2126125555, 41008148, 1518006519, 2060367530], [2126125555, 41008148, 2166950607, 2060367530], [2126125555, 41008148, 44419754, 2060367530], [2126125555, 41008148, 2096896574, 2060367530], [2126125555, 41008148, 2079769580, 2060367530], [2126125555, 41008148, 1534569320, 2060367530], [2126125555, 41008148, 2008960136, 2060367530], [2126125555, 41008148, 2161284528, 2060367530], [2126125555, 41008148, 1529313332, 2060367530], [2126125555, 41008148, 2070292944, 2060367530], [2126125555, 41008148, 1987805244, 2060367530], [2126125555, 41008148, 1431277985, 2060367530], [2126125555, 41008148, 2131920429, 2060367530], [2126125555, 41008148, 1999877583, 2060367530], [2126125555, 41008148, 2164170211, 2060367530], [2126125555, 41008148, 1978784529, 2060367530], [2126125555, 41008148, 1509074267, 2060367530], [2126125555, 41008148, 2080169089, 2060367530], [2126125555, 41008148, 2149250115, 2060367530], [2126125555, 136389625, 2112505212, 2060367530], [2126125555, 41008148, 2112505212, 2060367530], [2126125555, 41008148, 2128847195, 2060367530], [2126125555, 41008148, 1997281466, 2060367530], [2126125555, 41008148, 2110546723, 2060367530], [2126125555, 41008148, 2091471182, 2060367530], [2126125555, 41008148, 2009557879, 2060367530], [2126125555, 83665646, 1599743437, 2060367530], [2126125555, 41008148, 1599743437, 2060367530], [2126125555, 41008148, 2122454338, 2060367530], [2126125555, 83665646, 2114230781, 2060367530], [2126125555, 41008148, 1983127160, 2060367530], [2126125555, 41008148, 2148116110, 2060367530], [2126125555, 41008148, 2129663707, 2060367530], [2126125555, 41008148, 1582394962, 2060367530], [2126125555, 41008148, 2054957239, 2060367530], [2126125555, 41008148, 2130844769, 2060367530], [2126125555, 83665646, 2167265457, 2060367530], [2126125555, 41008148, 2167265457, 2060367530], [2126125555, 41008148, 2038632282, 2060367530], [2126125555, 41008148, 2100078453, 2060367530], [2126125555, 41008148, 1977227981, 2060367530], [2126125555, 136389625, 1993875256, 2060367530], [2126125555, 41008148, 1993875256, 2060367530], [2126125555, 41008148, 2091250511, 2060367530], [2126125555, 41008148, 2056594684, 2060367530], [2126125555, 41008148, 2135468290, 2060367530], [2126125555, 41008148, 1680519327, 2060367530], [2126125555, 41008148, 1997100251, 2060367530], [2126125555, 41008148, 2165801121, 2060367530], [2126125555, 41008148, 2121621822, 2060367530], [2126125555, 41008148, 2171388673, 2060367530], [2126125555, 41008148, 62865002, 2060367530], [2126125555, 41008148, 2026685617, 2060367530], [2126125555, 41008148, 2127956247, 2060367530], [2126125555, 41008148, 2136467743, 2060367530], [2126125555, 41008148, 1519309948, 2060367530], [2126125555, 41008148, 2076836671, 2060367530], [2126125555, 41008148, 44503246, 2060367530], [2126125555, 41008148, 1504081325, 2060367530], [2126125555, 41008148, 2042184427, 2060367530], [2126125555, 41008148, 2112825622, 2060367530], [2126125555, 41008148, 2100616303, 2060367530], [2126125555, 41008148, 2157728737, 2060367530], [2126125555, 83665646, 2093949429, 2060367530], [2126125555, 41008148, 2093949429, 2060367530], [2126125555, 41008148, 2067163429, 2060367530], [2126125555, 41008148, 2018665577, 2060367530], [2126125555, 41008148, 2018118595, 2060367530], [2126125555, 41008148, 2108793063, 2060367530], [2126125555, 41008148, 770464002, 2060367530], [2126125555, 41008148, 1594240460, 2060367530], [2126125555, 41008148, 2103392121, 2060367530], [2126125555, 41008148, 2047383331, 2060367530], [2126125555, 41008148, 2012812108, 2060367530], [2126125555, 41008148, 1997864840, 2060367530], [2126125555, 41008148, 2065411020, 2060367530], [2126125555, 41008148, 2052435003, 2060367530], [2126125555, 41008148, 1484706762, 2060367530], [2126125555, 41008148, 2097396391, 2060367530], [2126125555, 41008148, 2032957142, 2060367530], [2126125555, 41008148, 2106499236, 2060367530], [2126125555, 136389625, 1994696419, 2060367530], [2126125555, 41008148, 1994696419, 2060367530], [2126125555, 41008148, 1601661283, 2060367530], [2126125555, 41008148, 1520286580, 2060367530], [2126125555, 41008148, 1503810164, 2060367530], [2126125555, 41008148, 2111961538, 2060367530], [2126125555, 41008148, 2030418191, 2060367530], [2126125555, 41008148, 2079951893, 2060367530], [2126125555, 41008148, 2131734509, 2060367530], [2126125555, 83665646, 2146089072, 2060367530], [2126125555, 41008148, 2146089072, 2060367530], [2126125555, 41008148, 2165275116, 2060367530], [2126125555, 41008148, 2140554171, 2060367530], [2126125555, 41008148, 2021607192, 2060367530], [2126125555, 41008148, 2090700372, 2060367530], [2126125555, 41008148, 1556579993, 2060367530], [2126125555, 41008148, 2168849400, 2060367530], [2126125555, 41008148, 2118286473, 2060367530], [2126125555, 41008148, 2135430911, 2060367530], [2126125555, 41008148, 2130373440, 2060367530], [2126125555, 41008148, 2031445411, 2060367530], [2126125555, 41008148, 2102328532, 2060367530], [2126125555, 41008148, 1586804209, 2060367530], [2126125555, 41008148, 2258713440, 2060367530], [2126125555, 41008148, 2143693569, 2060367530], [2126125555, 41008148, 2133358562, 2060367530], [2126125555, 41008148, 2001808571, 2060367530], [2126125555, 41008148, 2133444545, 2060367530], [2126125555, 41008148, 2021829585, 2060367530], [2126125555, 41008148, 2108353934, 2060367530], [2126125555, 41008148, 2135613895, 2060367530], [2126125555, 41008148, 2138810050, 2060367530], [2126125555, 41008148, 2125062296, 2060367530], [2126125555, 41008148, 2029472200, 2060367530], [2126125555, 41008148, 1518995750, 2060367530], [2126125555, 41008148, 2028544784, 2060367530], [2126125555, 41008148, 1964317611, 2060367530], [2126125555, 41008148, 1555138071, 2060367530], [2126125555, 41008148, 2111020268, 2060367530], [2126125555, 41008148, 2163747807, 2060367530], [2126125555, 41008148, 262212851, 2060367530], [2126125555, 41008148, 2116045975, 2060367530], [2126125555, 41008148, 2132980678, 2060367530], [2126125555, 41008148, 2129843476, 2060367530], [2126125555, 41008148, 2146002910, 2060367530], [2126125555, 41008148, 2136645439, 2060367530], [2126125555, 41008148, 2144289820, 2060367530], [2126125555, 41008148, 1556895245, 2060367530], [2126125555, 41008148, 1967603968, 2060367530], [2126125555, 41008148, 1978183412, 2060367530], [2126125555, 41008148, 2129244986, 2060367530], [2126125555, 41008148, 2082749002, 2060367530], [2126125555, 41008148, 2060409956, 2060367530], [2126125555, 41008148, 2158695774, 2060367530], [2126125555, 41008148, 2048374094, 2060367530], [2126125555, 41008148, 1539625403, 2060367530], [2126125555, 41008148, 1860287682, 2060367530], [2126125555, 41008148, 2035443251, 2060367530], [2126125555, 41008148, 1247733458, 2060367530], [2126125555, 41008148, 2119367522, 2060367530], [2126125555, 41008148, 2155806931, 2060367530], [2126125555, 41008148, 1896716008, 2060367530], [2126125555, 41008148, 2155617236, 2060367530], [2126125555, 41008148, 2104327360, 2060367530], [2126125555, 41008148, 34666803, 2060367530], [2126125555, 41008148, 2101145897, 2060367530], [2126125555, 41008148, 2150276960, 2060367530], [2126125555, 41008148, 1982654805, 2060367530], [2126125555, 41008148, 1492195476, 2060367530], [2126125555, 41008148, 1793905095, 2060367530], [2126125555, 41008148, 2115093353, 2060367530], [2126125555, 41008148, 2123060381, 2060367530], [2126125555, 136389625, 2154332623, 2060367530], [2126125555, 41008148, 2154332623, 2060367530], [2126125555, 41008148, 2135361059, 2060367530], [2126125555, 41008148, 1581731967, 2060367530], [2126125555, 41008148, 1989972911, 2060367530], [2126125555, 41008148, 11152069, 2060367530], [2126125555, 41008148, 1555349023, 2060367530], [2126125555, 41008148, 2153410947, 2060367530], [2126125555, 41008148, 2056730597, 2060367530], [2126125555, 41008148, 1544008493, 2060367530], [2126125555, 41008148, 2184181378, 2060367530], [2126125555, 41008148, 2055840713, 2060367530], [2126125555, 41008148, 2262559846, 2060367530], [2126125555, 41008148, 2009778121, 2060367530], [2126125555, 41008148, 2168590252, 2060367530], [2126125555, 41008148, 2064488177, 2060367530], [2126125555, 41008148, 1591152350, 2060367530], [2126125555, 41008148, 1979354936, 2060367530], [2126125555, 41008148, 2097211539, 2060367530], [2126125555, 41008148, 2137616998, 2060367530], [2126125555, 41008148, 2160639198, 2060367530], [2126125555, 83665646, 1579341000, 2060367530], [2126125555, 41008148, 1579341000, 2060367530], [2126125555, 41008148, 1963840932, 2060367530], [2126125555, 41008148, 2221402103, 2060367530], [2126125555, 41008148, 2153171657, 2060367530], [2126125555, 41008148, 1636118186, 2060367530], [2126125555, 41008148, 2011047397, 2060367530], [2126125555, 41008148, 2169272251, 2060367530], [2126125555, 41008148, 1545589783, 2060367530], [2126125555, 41008148, 2155121056, 2060367530], [2126125555, 41008148, 2165247347, 2060367530], [2126125555, 41008148, 1511473871, 2060367530], [2126125555, 41008148, 2165662082, 2060367530], [2126125555, 41008148, 2004530108, 2060367530], [2126125555, 41008148, 1480663908, 2060367530], [2126125555, 41008148, 2126126954, 2060367530], [2126125555, 41008148, 2080197219, 2060367530], [2126125555, 41008148, 2030413220, 2060367530], [2126125555, 41008148, 1485343935, 2060367530], [2126125555, 41008148, 2138055742, 2060367530], [2126125555, 41008148, 2004929467, 2060367530], [2126125555, 136389625, 2168628534, 2060367530], [2126125555, 41008148, 2168628534, 2060367530], [2126125555, 41008148, 2169691698, 2060367530], [2126125555, 41008148, 2113427041, 2060367530], [2126125555, 41008148, 2152940237, 2060367530], [2126125555, 41008148, 2083835372, 2060367530], [2126125555, 41008148, 2163134941, 2060367530], [2126125555, 41008148, 2154220409, 2060367530], [2126125555, 41008148, 1559956553, 2060367530], [2126125555, 41008148, 2099718450, 2060367530], [2126125555, 41008148, 1986455520, 2060367530], [2126125555, 136389625, 2139500847, 2060367530], [2126125555, 41008148, 2139500847, 2060367530], [2126125555, 41008148, 2097959561, 2060367530], [2126125555, 41008148, 1858216737, 2060367530], [2126125555, 41008148, 2117478549, 2060367530], [2126125555, 41008148, 1496341806, 2060367530], [2126125555, 41008148, 2146888403, 2060367530], [2126125555, 41008148, 1974529597, 2060367530], [2126125555, 41008148, 2085531991, 2060367530], [2126125555, 41008148, 2142855795, 2060367530], [2126125555, 41008148, 1877297125, 2060367530], [2126125555, 41008148, 2160102609, 2060367530], [2126125555, 41008148, 52214570, 2060367530], [2126125555, 41008148, 2141292854, 2060367530], [2126125555, 41008148, 45728646, 2060367530], [2126125555, 41008148, 1485793298, 2060367530], [2126125555, 41008148, 2136921057, 2060367530], [2126125555, 41008148, 1986231484, 2060367530], [2126125555, 41008148, 2117330767, 2060367530], [2126125555, 41008148, 2076767068, 2060367530], [2126125555, 41008148, 2109458369, 2060367530], [2126125555, 41008148, 1985469366, 2060367530], [2126125555, 41008148, 2101602664, 2060367530], [2126125555, 41008148, 2133695478, 2060367530], [2126125555, 41008148, 2003853684, 2060367530], [2126125555, 41008148, 2132832231, 2060367530], [2126125555, 41008148, 2116848850, 2060367530], [2126125555, 41008148, 1883755417, 2060367530], [2126125555, 41008148, 2143061477, 2060367530], [2126125555, 41008148, 2104181768, 2060367530], [2126125555, 41008148, 1582181195, 2060367530], [2126125555, 41008148, 2159458155, 2060367530], [2126125555, 41008148, 2019653123, 2060367530], [2126125555, 41008148, 2145521102, 2060367530], [2126125555, 41008148, 2049812970, 2060367530], [2126125555, 41008148, 2151199181, 2060367530], [2126125555, 41008148, 2131673861, 2060367530], [2126125555, 41008148, 2117293384, 2060367530], [2126125555, 41008148, 1695571652, 2060367530], [2126125555, 41008148, 1485497976, 2060367530], [2126125555, 83665646, 2167357329, 2060367530], [2126125555, 41008148, 2167357329, 2060367530], [2126125555, 41008148, 1889845189, 2060367530], [2126125555, 41008148, 2139793708, 2060367530], [2126125555, 41008148, 2148271331, 2060367530], [2126125555, 41008148, 2118877237, 2060367530], [2126125555, 41008148, 2105984824, 2060367530], [2126125555, 136389625, 2103755313, 2060367530], [2126125555, 41008148, 2103755313, 2060367530], [2126125555, 41008148, 2140121784, 2060367530], [2126125555, 41008148, 2077791120, 2060367530], [2126125555, 41008148, 2042253313, 2060367530], [2126125555, 41008148, 1979025763, 2060367530], [2126125555, 41008148, 2125014105, 2060367530], [2126125555, 41008148, 2013576352, 2060367530], [2126125555, 136389625, 1512476410, 2060367530], [2126125555, 41008148, 1512476410, 2060367530], [2126125555, 41008148, 2153254660, 2060367530], [2126125555, 41008148, 2148828119, 2060367530], [2126125555, 41008148, 1961037478, 2060367530], [2126125555, 41008148, 2153404875, 2060367530], [2126125555, 41008148, 1548874321, 2060367530], [2126125555, 41008148, 1596237903, 2060367530], [2126125555, 150899416, 2054573701, 2060367530], [2126125555, 41008148, 2054573701, 2060367530], [2126125555, 41008148, 2054326990, 2060367530], [2126125555, 41008148, 2026639895, 2060367530], [2126125555, 41008148, 2062331854, 2060367530], [2126125555, 41008148, 2040838894, 2060367530], [2126125555, 41008148, 2103771794, 2060367530], [2126125555, 136389625, 2114589208, 2060367530], [2126125555, 41008148, 2114589208, 2060367530], [2126125555, 136389625, 2169105061, 2060367530], [2126125555, 41008148, 2169105061, 2060367530], [2126125555, 41008148, 1930612733, 2060367530], [2126125555, 83665646, 1518104418, 2060367530], [2126125555, 41008148, 1518104418, 2060367530], [2126125555, 41008148, 2151929811, 2060367530], [2126125555, 41008148, 2108947007, 2060367530], [2126125555, 41008148, 2124639707, 2060367530], [2126125555, 41008148, 2098667124, 2060367530], [2126125555, 41008148, 2184222852, 2060367530], [2126125555, 41008148, 2212753854, 2060367530], [2126125555, 41008148, 2118565008, 2060367530], [2126125555, 41008148, 2149382268, 2060367530], [2126125555, 41008148, 2165396593, 2060367530], [2126125555, 41008148, 2095399084, 2060367530], [2126125555, 41008148, 2141014766, 2060367530], [2126125555, 41008148, 2068502733, 2060367530], [2126125555, 41008148, 1908819910, 2060367530], [2126125555, 41008148, 2036370884, 2060367530], [2126125555, 41008148, 2145425914, 2060367530], [2126125555, 41008148, 2005529404, 2060367530], [2126125555, 41008148, 1985040229, 2060367530], [2126125555, 41008148, 56814268, 2060367530], [2126125555, 41008148, 2133772669, 2060367530], [2126125555, 41008148, 1986250503, 2060367530], [2126125555, 41008148, 2111253458, 2060367530], [2126125555, 41008148, 2070416588, 2060367530], [2126125555, 41008148, 86126838, 2060367530], [2126125555, 41008148, 2086016993, 2060367530], [2126125555, 41008148, 1999996424, 2060367530], [2126125555, 41008148, 2123720722, 2060367530], [2126125555, 41008148, 2140089606, 2060367530], [2126125555, 41008148, 2105694966, 2060367530], [2126125555, 121687571, 2039686496, 2060367530], [2126125555, 41008148, 2039686496, 2060367530], [2126125555, 41008148, 2129488600, 2060367530], [2126125555, 41008148, 2109850386, 2060367530], [2126125555, 41008148, 2135727870, 2060367530], [2126125555, 41008148, 1529029855, 2060367530], [2126125555, 41008148, 1982422476, 2060367530], [2126125555, 41008148, 2138468393, 2060367530], [2126125555, 136389625, 1539088772, 2060367530], [2126125555, 41008148, 1539088772, 2060367530], [2126125555, 83665646, 1514233600, 2060367530], [2126125555, 41008148, 1514233600, 2060367530], [2126125555, 41008148, 2090708902, 2060367530], [2126125555, 41008148, 1523507475, 2060367530], [2126125555, 41008148, 2098382771, 2060367530], [2126125555, 41008148, 1483825771, 2060367530], [2126125555, 83665646, 1564211446, 2060367530], [2126125555, 41008148, 1564211446, 2060367530], [2126125555, 41008148, 2015609218, 2060367530], [2126125555, 41008148, 2128733372, 2060367530], [2126125555, 41008148, 2143355494, 2060367530], [2126125555, 41008148, 1786189783, 2060367530], [2126125555, 41008148, 2117392946, 2060367530], [2126125555, 41008148, 2171893709, 2060367530], [2126125555, 41008148, 2179766089, 2060367530], [2126125555, 41008148, 2136291205, 2060367530], [2126125555, 41008148, 2026570421, 2060367530], [2126125555, 41008148, 2130605008, 2060367530], [2126125555, 41008148, 2043513971, 2060367530], [2126125555, 41008148, 1807018853, 2060367530], [2126125555, 41008148, 2056385803, 2060367530], [2126125555, 41008148, 2145555616, 2060367530], [2126125555, 41008148, 38577652, 2060367530], [2126125555, 136389625, 1973729051, 2060367530], [2126125555, 41008148, 1982088376, 2060367530], [2126125555, 41008148, 2142154582, 2060367530], [2126125555, 83665646, 1518522961, 2060367530], [2126125555, 41008148, 1518522961, 2060367530], [2126125555, 41008148, 1550271607, 2060367530], [2126125555, 41008148, 1968103139, 2060367530], [2126125555, 41008148, 2148501502, 2060367530], [2126125555, 41008148, 90170513, 2060367530], [2126125555, 41008148, 2047889412, 2060367530], [2126125555, 41008148, 1649208874, 2060367530], [2126125555, 41008148, 2128242115, 2060367530], [2126125555, 41008148, 2039995119, 2060367530], [2126125555, 41008148, 2020844394, 2060367530], [2126125555, 41008148, 2151569055, 2060367530], [2126125555, 41008148, 1968304545, 2060367530], [2126125555, 41008148, 1558035149, 2060367530], [2126125555, 41008148, 1493166241, 2060367530], [2126125555, 41008148, 1977299974, 2060367530], [2126125555, 2109031554, 2187345428, 2060367530], [2126125555, 41008148, 2163395670, 2060367530], [2126125555, 41008148, 2037454399, 2060367530], [2126125555, 41008148, 2109275007, 2060367530], [2126125555, 41008148, 2153431369, 2060367530], [2126125555, 41008148, 1628757747, 2060367530], [2126125555, 41008148, 2095673523, 2060367530], [2126125555, 41008148, 1507920647, 2060367530], [2126125555, 41008148, 2167555596, 2060367530], [2126125555, 41008148, 2149559055, 2060367530], [2126125555, 41008148, 1516904588, 2060367530], [2126125555, 136389625, 2154020216, 2060367530], [2126125555, 41008148, 2154020216, 2060367530], [2126125555, 83665646, 1537880798, 2060367530], [2126125555, 41008148, 1537880798, 2060367530], [2126125555, 41008148, 1543060769, 2060367530], [2126125555, 41008148, 1573697334, 2060367530], [2126125555, 41008148, 1744068312, 2060367530], [2126125555, 41008148, 2151594000, 2060367530], [2126125555, 41008148, 2120881610, 2060367530], [2126125555, 41008148, 1589262686, 2060367530], [2126125555, 41008148, 2022902696, 2060367530], [2126125555, 41008148, 2170510810, 2060367530], [2126125555, 41008148, 1441847231, 2060367530], [2126125555, 41008148, 2049095871, 2060367530], [2126125555, 41008148, 2101266302, 2060367530], [2126125555, 41008148, 2104539076, 2060367530], [2126125555, 41008148, 2168306954, 2060367530], [2126125555, 41008148, 2126355319, 2060367530], [2126125555, 41008148, 2175861166, 2060367530], [2126125555, 41008148, 2148719237, 2060367530], [2126125555, 41008148, 2112712896, 2060367530], [2126125555, 41008148, 2149441550, 2060367530], [2126125555, 83665646, 2131842293, 2060367530], [2126125555, 41008148, 2131842293, 2060367530], [2126125555, 41008148, 2164164653, 2060367530], [2126125555, 41008148, 1578186144, 2060367530], [2126125555, 41008148, 2054361604, 2060367530], [2126125555, 41008148, 2139216149, 2060367530], [2126125555, 41008148, 2295853480, 2060367530], [2126125555, 41008148, 1558022489, 2060367530], [2126125555, 41008148, 2018925561, 2060367530], [2126125555, 41008148, 1965449527, 2060367530], [2126125555, 41008148, 344268215, 2060367530], [2126125555, 41008148, 2132822597, 2060367530], [2126125555, 41008148, 2081825805, 2060367530], [2126125555, 41008148, 1558654880, 2060367530], [2126125555, 41008148, 1560373986, 2060367530], [2126125555, 41008148, 2140985867, 2060367530], [2126125555, 41008148, 2133442380, 2060367530], [2126125555, 41008148, 1591935658, 2060367530], [2126125555, 41008148, 2010556735, 2060367530], [2126125555, 41008148, 41819586, 2060367530], [2126125555, 83665646, 1633569240, 2060367530], [2126125555, 41008148, 1633569240, 2060367530], [2126125555, 41008148, 1588969482, 2060367530], [2126125555, 41008148, 1996032422, 2060367530], [2126125555, 41008148, 1605346800, 2060367530], [2126125555, 41008148, 2126674906, 2060367530], [2126125555, 41008148, 2041512177, 2060367530], [2126125555, 41008148, 310095054, 2060367530], [2126125555, 41008148, 2076422557, 2060367530], [2126125555, 41008148, 2069302182, 2060367530], [2126125555, 83665646, 1886685702, 2060367530], [2126125555, 41008148, 1886685702, 2060367530], [2126125555, 41008148, 2058414204, 2060367530], [2126125555, 41008148, 2126903356, 2060367530], [2126125555, 41008148, 2161249804, 2060367530], [2126125555, 41008148, 2080838549, 2060367530], [2126125555, 41008148, 2137434741, 2060367530], [2126125555, 41008148, 2065435756, 2060367530], [2126125555, 41008148, 2096302783, 2060367530], [2126125555, 41008148, 1558584575, 2060367530], [2126125555, 41008148, 1499634344, 2060367530], [2126125555, 41008148, 1541640359, 2060367530], [2126125555, 41008148, 2109155849, 2060367530], [2126125555, 41008148, 2110246711, 2060367530], [2126125555, 41008148, 1593021438, 2060367530], [2126125555, 41008148, 2121677163, 2060367530], [2126125555, 41008148, 2166748483, 2060367530], [2126125555, 41008148, 2153290008, 2060367530], [2126125555, 41008148, 2057273749, 2060367530], [2126125555, 41008148, 2249988812, 2060367530], [2126125555, 41008148, 2107448857, 2060367530], [2126125555, 83665646, 2156402152, 2060367530], [2126125555, 41008148, 2156402152, 2060367530], [2126125555, 41008148, 2086947877, 2060367530], [2126125555, 41008148, 2024264062, 2060367530], [2126125555, 41008148, 2114935599, 2060367530], [2126125555, 41008148, 2014988084, 2060367530], [2126125555, 136389625, 2152658175, 2060367530], [2126125555, 41008148, 2152658175, 2060367530], [2126125555, 41008148, 2104511964, 2060367530], [2126125555, 41008148, 2017682100, 2060367530], [2126125555, 41008148, 1571679273, 2060367530], [2126125555, 83665646, 2082670949, 2060367530], [2126125555, 41008148, 2082670949, 2060367530], [2126125555, 41008148, 54925999, 2060367530], [2126125555, 41008148, 2113160235, 2060367530], [2126125555, 41008148, 2031201293, 2060367530], [2126125555, 41008148, 2077103371, 2060367530], [2126125555, 41008148, 2106470443, 2060367530], [2126125555, 41008148, 2172421484, 2060367530], [2126125555, 41008148, 1590948417, 2060367530], [2126125555, 41008148, 1982781284, 2060367530], [2126125555, 41008148, 2114470078, 2060367530], [2126125555, 41008148, 1540089054, 2060367530], [2126125555, 41008148, 2158086021, 2060367530], [2126125555, 41008148, 1541281948, 2060367530], [2126125555, 41008148, 1539596289, 2060367530], [2126125555, 41008148, 2159542900, 2060367530], [2126125555, 41008148, 1992783049, 2060367530], [2126125555, 41008148, 2040392523, 2060367530], [2126125555, 41008148, 1909859209, 2060367530], [2126125555, 41008148, 2107231931, 2060367530], [2126125555, 41008148, 2169913511, 2060367530], [2126125555, 41008148, 2117831113, 2060367530], [2126125555, 41008148, 1978005516, 2060367530], [2126125555, 41008148, 2061264559, 2060367530], [2126125555, 41008148, 2127817094, 2060367530], [2126125555, 41008148, 2068449649, 2060367530], [2126125555, 41008148, 2008282268, 2060367530], [2126125555, 41008148, 2022209554, 2060367530], [2126125555, 41008148, 2056781111, 2060367530], [2126125555, 41008148, 2121511611, 2060367530], [2126125555, 41008148, 2106482493, 2060367530], [2126125555, 41008148, 2090096548, 2060367530], [2126125555, 41008148, 1493961832, 2060367530], [2126125555, 41008148, 2107778970, 2060367530], [2126125555, 41008148, 1528832593, 2060367530], [2126125555, 41008148, 1581432599, 2060367530], [2126125555, 41008148, 2002592398, 2060367530], [2126125555, 41008148, 1486829921, 2060367530], [2126125555, 41008148, 2078536437, 2060367530], [2126125555, 41008148, 2033917357, 2060367530], [2126125555, 136389625, 2073042726, 2060367530], [2126125555, 41008148, 2073042726, 2060367530], [2126125555, 41008148, 1544049983, 2060367530], [2126125555, 41008148, 2100665058, 2060367530], [2126125555, 41008148, 2171036567, 2060367530], [2126125555, 41008148, 27741130, 2060367530], [2126125555, 41008148, 2126584902, 2060367530], [2126125555, 41008148, 2265145536, 2060367530], [2126125555, 41008148, 2088839295, 2060367530], [2126125555, 41008148, 2159970035, 2060367530], [2126125555, 136389625, 2003234522, 2060367530], [2126125555, 41008148, 2115708871, 2060367530], [2126125555, 41008148, 2133744813, 2060367530], [2126125555, 41008148, 2135515398, 2060367530], [2126125555, 41008148, 2180884892, 2060367530], [2126125555, 41008148, 2128725002, 2060367530], [2126125555, 41008148, 1530886219, 2060367530], [2126125555, 41008148, 2026063882, 2060367530], [2126125555, 41008148, 2108896333, 2060367530], [2126125555, 41008148, 2125761606, 2060367530], [2126125555, 83665646, 1512898292, 2060367530], [2126125555, 41008148, 1512898292, 2060367530], [2126125555, 41008148, 1541988250, 2060367530], [2126125555, 41008148, 2163972900, 2060367530], [2126125555, 41008148, 230245784, 2060367530], [2126125555, 41008148, 993334636, 2060367530], [2126125555, 41008148, 1967151733, 2060367530], [2126125555, 41008148, 2152303794, 2060367530], [2126125555, 41008148, 2143026958, 2060367530], [2126125555, 83665646, 1512521134, 2060367530], [2126125555, 41008148, 1512521134, 2060367530], [2126125555, 41008148, 49254815, 2060367530], [2126125555, 41008148, 2127054749, 2060367530], [2126125555, 41008148, 1758944695, 2060367530], [2126125555, 41008148, 2096994429, 2060367530], [2126125555, 41008148, 1568667736, 2060367530], [2126125555, 41008148, 2106911925, 2060367530], [2126125555, 41008148, 2111051344, 2060367530], [2126125555, 41008148, 2139580559, 2060367530], [2126125555, 41008148, 1536737962, 2060367530], [2126125555, 41008148, 2167816345, 2060367530], [2126125555, 41008148, 1541887934, 2060367530], [2126125555, 41008148, 2136209539, 2060367530], [2126125555, 41008148, 2127259817, 2060367530], [2126125555, 41008148, 1488613712, 2060367530], [2126125555, 41008148, 1508740138, 2060367530], [2126125555, 41008148, 1513067536, 2060367530], [2126125555, 41008148, 1966840252, 2060367530], [2126125555, 41008148, 812069187, 2060367530], [2126125555, 41008148, 1633195346, 2060367530], [2126125555, 41008148, 1575876418, 2060367530], [2126125555, 41008148, 2102558650, 2060367530], [2126125555, 41008148, 2030738386, 2060367530], [2126125555, 136389625, 1123101191, 2060367530], [2126125555, 41008148, 1123101191, 2060367530], [2126125555, 41008148, 1525493714, 2060367530], [2126125555, 41008148, 2111436395, 2060367530], [2126125555, 41008148, 2169337325, 2060367530], [2126125555, 41008148, 193916344, 2060367530], [2126125555, 41008148, 2073543173, 2060367530], [2126125555, 41008148, 2098631455, 2060367530], [2126125555, 41008148, 2007534217, 2060367530], [2126125555, 41008148, 2052299563, 2060367530], [2126125555, 41008148, 2164147367, 2060367530], [2126125555, 41008148, 1557975349, 2060367530], [2126125555, 41008148, 2133418986, 2060367530], [2126125555, 41008148, 1585994215, 2060367530], [2126125555, 41008148, 2170307693, 2060367530], [2126125555, 41008148, 1983321919, 2060367530], [2126125555, 41008148, 1545120983, 2060367530], [2126125555, 41008148, 2084742184, 2060367530], [2126125555, 41008148, 1483106830, 2060367530], [2126125555, 41008148, 1499397836, 2060367530], [2126125555, 41008148, 2131599501, 2060367530], [2126125555, 41008148, 2140933742, 2060367530], [2126125555, 41008148, 2087022334, 2060367530], [2126125555, 41008148, 2148708152, 2060367530], [2126125555, 41008148, 2121309375, 2060367530], [2126125555, 41008148, 2167718082, 2060367530], [2126125555, 41008148, 2195063230, 2060367530], [2126125555, 44249647, 2113067870, 2060367530], [2126125555, 41008148, 2113067870, 2060367530], [2126125555, 41008148, 2165134544, 2060367530], [2126125555, 41008148, 2167375590, 2060367530], [2126125555, 41008148, 95107172, 2060367530], [2126125555, 41008148, 2029086750, 2060367530], [2126125555, 41008148, 2018047205, 2060367530], [2126125555, 41008148, 1531140549, 2060367530], [2126125555, 41008148, 2124477868, 2060367530], [2126125555, 136389625, 2102389213, 2060367530], [2126125555, 41008148, 2102389213, 2060367530], [2126125555, 41008148, 2104720947, 2060367530], [2126125555, 41008148, 1494698707, 2060367530], [2126125555, 41008148, 147625292, 2060367530], [2126125555, 41008148, 2171218768, 2060367530], [2126125555, 41008148, 1601107692, 2060367530], [2126125555, 41008148, 2140020189, 2060367530], [2126125555, 41008148, 1585127518, 2060367530], [2126125555, 41008148, 1987010876, 2060367530], [2126125555, 41008148, 2113664336, 2060367530], [2126125555, 41008148, 2103565651, 2060367530], [2126125555, 41008148, 2087385620, 2060367530], [2126125555, 41008148, 1966021193, 2060367530], [2126125555, 41008148, 197470869, 2060367530], [2126125555, 41008148, 2110544382, 2060367530], [2126125555, 41008148, 2129300691, 2060367530], [2126125555, 41008148, 1499652328, 2060367530], [2126125555, 41008148, 2142673191, 2060367530], [2126125555, 41008148, 2152698226, 2060367530], [2126125555, 41008148, 1529191005, 2060367530], [2126125555, 41008148, 1541889157, 2060367530], [2126125555, 41008148, 1822407166, 2060367530], [2126125555, 41008148, 1989544085, 2060367530], [2126125555, 41008148, 2099549484, 2060367530], [2126125555, 41008148, 1570129518, 2060367530], [2126125555, 41008148, 1996917801, 2060367530], [2126125555, 41008148, 2142774106, 2060367530], [2126125555, 41008148, 1860056107, 2060367530], [2126125555, 41008148, 1525200277, 2060367530], [2126125555, 41008148, 2134359571, 2060367530], [2126125555, 41008148, 1604752344, 2060367530], [2126125555, 83665646, 1539456142, 2060367530], [2126125555, 41008148, 1539456142, 2060367530], [2126125555, 41008148, 2160076617, 2060367530], [2126125555, 41008148, 1600809252, 2060367530], [2126125555, 41008148, 2137087502, 2060367530], [2126125555, 41008148, 2170392962, 2060367530], [2126125555, 41008148, 2120755866, 2060367530], [2126125555, 41008148, 1877063580, 2060367530], [2126125555, 41008148, 1995998716, 2060367530], [2126125555, 41008148, 2128198910, 2060367530], [2126125555, 41008148, 1992913703, 2060367530], [2126125555, 41008148, 2099984737, 2060367530], [2126125555, 41008148, 2119363862, 2060367530], [2126125555, 41008148, 2014432218, 2060367530], [2126125555, 136389625, 2055096276, 2060367530], [2126125555, 41008148, 2055096276, 2060367530], [2126125555, 41008148, 1483798274, 2060367530], [2126125555, 41008148, 1576434464, 2060367530], [2126125555, 41008148, 1545423770, 2060367530], [2126125555, 83665646, 2156939766, 2060367530], [2126125555, 41008148, 2156939766, 2060367530], [2126125555, 41008148, 2291418311, 2060367530], [2126125555, 136389625, 1168153627, 2060367530], [2126125555, 41008148, 1168153627, 2060367530], [2126125555, 41008148, 2160026253, 2060367530], [2126125555, 41008148, 2201389209, 2060367530], [2126125555, 41008148, 2134351533, 2060367530], [2126125555, 41008148, 2096503875, 2060367530], [2126125555, 41008148, 2159286824, 2060367530], [2126125555, 41008148, 1531583547, 2060367530], [2126125555, 83665646, 2128306392, 2060367530], [2126125555, 41008148, 2128306392, 2060367530], [2126125555, 41008148, 2154149152, 2060367530], [2126125555, 41008148, 2111595535, 2060367530], [2126125555, 83665646, 2030315688, 2060367530], [2126125555, 41008148, 2030315688, 2060367530], [2126125555, 41008148, 2132429962, 2060367530], [2126125555, 41008148, 2170596588, 2060367530], [2126125555, 41008148, 2123745440, 2060367530], [2126125555, 41008148, 114581555, 2060367530], [2126125555, 41008148, 1554313724, 2060367530], [2126125555, 41008148, 2128049718, 2060367530], [2126125555, 41008148, 1552512809, 2060367530], [2126125555, 41008148, 1597907761, 2060367530], [2126125555, 41008148, 1966695997, 2060367530], [2126125555, 41008148, 2096945866, 2060367530], [2126125555, 41008148, 2151564026, 2060367530], [2126125555, 41008148, 1594106839, 2060367530], [2126125555, 41008148, 2145557213, 2060367530], [2126125555, 41008148, 1559327290, 2060367530], [2126125555, 41008148, 2033638990, 2060367530], [2126125555, 41008148, 2153207316, 2060367530], [2126125555, 41008148, 2125274161, 2060367530], [2126125555, 41008148, 2168748138, 2060367530], [2126125555, 41008148, 1516159659, 2060367530], [2126125555, 41008148, 2115151784, 2060367530], [2126125555, 41008148, 2169354154, 2060367530], [2126125555, 41008148, 2062386844, 2060367530], [2126125555, 41008148, 2049556619, 2060367530], [2126125555, 41008148, 2045224527, 2060367530], [2126125555, 41008148, 1804297794, 2060367530], [2126125555, 41008148, 1512340077, 2060367530], [2126125555, 41008148, 2121251601, 2060367530], [2126125555, 41008148, 1508954867, 2060367530], [2126125555, 41008148, 2142022780, 2060367530], [2126125555, 41008148, 2134960256, 2060367530], [2126125555, 41008148, 1501858372, 2060367530], [2126125555, 41008148, 2121371800, 2060367530], [2126125555, 41008148, 2140672399, 2060367530], [2126125555, 41008148, 2137061031, 2060367530], [2126125555, 41008148, 1683541704, 2060367530], [2126125555, 41008148, 1957520309, 2060367530], [2126125555, 41008148, 1736875276, 2060367530], [2126125555, 41008148, 1970994634, 2060367530], [2126125555, 41008148, 2123008826, 2060367530], [2126125555, 41008148, 2159682944, 2060367530], [2126125555, 41008148, 2115341702, 2060367530], [2126125555, 41008148, 2222739975, 2060367530], [2126125555, 83665646, 2142863760, 2060367530], [2126125555, 41008148, 2142863760, 2060367530], [2126125555, 41008148, 1992643063, 2060367530], [2126125555, 41008148, 2172010809, 2060367530], [2126125555, 41008148, 2158401453, 2060367530], [2126125555, 41008148, 1977471213, 2060367530], [2126125555, 41008148, 2041737216, 2060367530], [2126125555, 41008148, 147318779, 2060367530], [2126125555, 41008148, 2059191851, 2060367530], [2126125555, 41008148, 2073719898, 2060367530], [2126125555, 41008148, 2100553176, 2060367530], [2126125555, 41008148, 2211365057, 2060367530], [2126125555, 41008148, 1522771809, 2060367530], [2126125555, 41008148, 1467891129, 2060367530], [2126125555, 136389625, 1989647250, 2060367530], [2126125555, 41008148, 1572482085, 2060367530], [2126125555, 41008148, 1554461984, 2060367530], [2126125555, 41008148, 2113470619, 2060367530], [2126125555, 41008148, 2013704002, 2060367530], [2126125555, 41008148, 1830040136, 2060367530], [2126125555, 41008148, 1834407027, 2060367530], [2126125555, 41008148, 2158921525, 2060367530], [2126125555, 41008148, 1497808028, 2060367530], [2126125555, 41008148, 2133456661, 2060367530], [2126125555, 41008148, 2031448664, 2060367530], [2126125555, 41008148, 2109332719, 2060367530], [2126125555, 41008148, 2124421254, 2060367530], [2126125555, 41008148, 1492808099, 2060367530], [2126125555, 41008148, 2140651883, 2060367530], [2126125555, 41008148, 2113619551, 2060367530], [2126125555, 41008148, 2159179847, 2060367530], [2126125555, 41008148, 1578629239, 2060367530], [2126125555, 41008148, 2144594888, 2060367530], [2126125555, 41008148, 2099563370, 2060367530], [2126125555, 41008148, 1852577517, 2060367530], [2126125555, 41008148, 2154036308, 2060367530], [2126125555, 41008148, 2126576544, 2060367530], [2126125555, 41008148, 1976749921, 2060367530], [2126125555, 41008148, 2119397044, 2060367530], [2126125555, 41008148, 2061108249, 2060367530], [2126125555, 121687571, 1971455245, 2060367530], [2126125555, 41008148, 1971455245, 2060367530], [2126125555, 41008148, 2139142305, 2060367530], [2126125555, 41008148, 2124115708, 2060367530], [2126125555, 41008148, 1591852649, 2060367530], [2126125555, 41008148, 1996014987, 2060367530], [2126125555, 41008148, 1542623430, 2060367530], [2126125555, 41008148, 1593344161, 2060367530], [2126125555, 41008148, 2125948702, 2060367530], [2126125555, 41008148, 2024544796, 2060367530], [2126125555, 41008148, 2097758185, 2060367530], [2126125555, 41008148, 1551496717, 2060367530], [2126125555, 41008148, 1559563626, 2060367530], [2126125555, 83665646, 2140400804, 2060367530], [2126125555, 41008148, 2140400804, 2060367530], [2126125555, 41008148, 48422327, 2060367530], [2126125555, 41008148, 109652693, 2060367530], [2126125555, 41008148, 2264003125, 2060367530], [2126125555, 41008148, 2100616157, 2060367530], [2126125555, 41008148, 2156826214, 2060367530], [2126125555, 41008148, 2097795154, 2060367530], [2126125555, 41008148, 1892406159, 2060367530], [2126125555, 83665646, 1606558579, 2060367530], [2126125555, 41008148, 1606558579, 2060367530], [2126125555, 41008148, 2117133545, 2060367530], [2126125555, 83665646, 1506780151, 2060367530], [2126125555, 41008148, 1506780151, 2060367530], [2126125555, 41008148, 1972898976, 2060367530], [2126125555, 41008148, 1536136168, 2060367530], [2126125555, 41008148, 2129166430, 2060367530], [2126125555, 41008148, 1545187869, 2060367530], [2126125555, 41008148, 2165576085, 2060367530], [2126125555, 41008148, 2010901510, 2060367530], [2126125555, 41008148, 2077402638, 2060367530], [2126125555, 140982614, 2077402638, 2060367530], [2126125555, 41008148, 2165613484, 2060367530], [2126125555, 41008148, 2017585041, 2060367530], [2126125555, 41008148, 1900709501, 2060367530], [2126125555, 41008148, 2153852729, 2060367530], [2126125555, 41008148, 2121265410, 2060367530], [2126125555, 41008148, 2116221908, 2060367530], [2126125555, 41008148, 2147513277, 2060367530], [2126125555, 41008148, 2286510745, 2060367530], [2126125555, 41008148, 2129539541, 2060367530], [2126125555, 41008148, 1524355896, 2060367530], [2126125555, 41008148, 2130741920, 2060367530], [2126125555, 41008148, 2218492358, 2060367530], [2126125555, 41008148, 2121451816, 2060367530], [2126125555, 41008148, 2011318758, 2060367530], [2126125555, 41008148, 766045766, 2060367530], [2126125555, 41008148, 2132090895, 2060367530], [2126125555, 41008148, 2126346469, 2060367530], [2126125555, 41008148, 1483010428, 2060367530], [2126125555, 41008148, 2023729401, 2060367530], [2126125555, 41008148, 2099308514, 2060367530], [2126125555, 136389625, 2006297698, 2060367530], [2126125555, 41008148, 2006297698, 2060367530], [2126125555, 41008148, 2106440350, 2060367530], [2126125555, 41008148, 2123069220, 2060367530], [2126125555, 41008148, 2116508716, 2060367530], [2126125555, 41008148, 1516740958, 2060367530], [2126125555, 41008148, 2144314126, 2060367530], [2126125555, 41008148, 2112749762, 2060367530], [2126125555, 41008148, 2104261917, 2060367530], [2126125555, 41008148, 2140720984, 2060367530], [2126125555, 41008148, 2129822354, 2060367530], [2126125555, 41008148, 2070761033, 2060367530], [2126125555, 41008148, 2092450708, 2060367530], [2126125555, 83665646, 1510880681, 2060367530], [2126125555, 41008148, 1510880681, 2060367530], [2126125555, 41008148, 1510683014, 2060367530], [2126125555, 41008148, 2114182745, 2060367530], [2126125555, 41008148, 1555425694, 2060367530], [2126125555, 41008148, 2016237063, 2060367530], [2126125555, 83665646, 2129501138, 2060367530], [2126125555, 41008148, 2129501138, 2060367530], [2126125555, 41008148, 2104813931, 2060367530], [2126125555, 41008148, 1973937504, 2060367530], [2126125555, 41008148, 2120648130, 2060367530], [2126125555, 41008148, 1965400701, 2060367530], [2126125555, 41008148, 1545278414, 2060367530], [2126125555, 41008148, 1601194630, 2060367530], [2126125555, 41008148, 2178487000, 2060367530], [2126125555, 41008148, 2143658489, 2060367530], [2126125555, 41008148, 2126144929, 2060367530], [2126125555, 41008148, 1519108118, 2060367530], [2126125555, 83665646, 1508739343, 2060367530], [2126125555, 41008148, 1508739343, 2060367530], [2126125555, 41008148, 1647037282, 2060367530], [2126125555, 41008148, 2145279040, 2060367530], [2126125555, 83665646, 1969126811, 2060367530], [2126125555, 41008148, 1969126811, 2060367530], [2126125555, 41008148, 2143646155, 2060367530], [2126125555, 41008148, 1983221878, 2060367530], [2126125555, 41008148, 2097066445, 2060367530], [2126125555, 41008148, 2204500957, 2060367530], [2126125555, 41008148, 1561485521, 2060367530], [2126125555, 41008148, 1522632242, 2060367530], [2126125555, 41008148, 2131613765, 2060367530], [2126125555, 41008148, 2098477416, 2060367530], [2126125555, 41008148, 2103828687, 2060367530], [2126125555, 41008148, 2055485095, 2060367530], [2126125555, 136389625, 1482676931, 2060367530], [2126125555, 41008148, 1482676931, 2060367530], [2126125555, 41008148, 2127026672, 2060367530], [2126125555, 41008148, 2162402351, 2060367530], [2126125555, 41008148, 2135213501, 2060367530], [2126125555, 41008148, 2052265072, 2060367530], [2126125555, 83665646, 2166994457, 2060367530], [2126125555, 41008148, 2166994457, 2060367530], [2126125555, 41008148, 2110785511, 2060367530], [2126125555, 41008148, 1589325444, 2060367530], [2126125555, 41008148, 2035619164, 2060367530], [2126125555, 41008148, 2106969242, 2060367530], [2126125555, 41008148, 2018121698, 2060367530], [2126125555, 41008148, 1494089849, 2060367530], [2126125555, 41008148, 1533256494, 2060367530], [2126125555, 41008148, 2017673421, 2060367530], [2126125555, 41008148, 2014372423, 2060367530], [2126125555, 41008148, 2124035653, 2060367530], [2126125555, 41008148, 2115000432, 2060367530], [2126125555, 41008148, 2108856605, 2060367530], [2126125555, 41008148, 2143327507, 2060367530], [2126125555, 41008148, 2143240689, 2060367530], [2126125555, 41008148, 2085178294, 2060367530], [2126125555, 41008148, 1569164328, 2060367530], [2126125555, 41008148, 2130400556, 2060367530], [2126125555, 41008148, 2113270742, 2060367530], [2126125555, 41008148, 2143187839, 2060367530], [2126125555, 41008148, 2100814036, 2060367530], [2126125555, 41008148, 1596778332, 2060367530], [2126125555, 41008148, 1581027611, 2060367530], [2126125555, 41008148, 2102810012, 2060367530], [2126125555, 41008148, 2127585709, 2060367530], [2126125555, 41008148, 1514127784, 2060367530], [2126125555, 41008148, 1809065030, 2060367530], [2126125555, 41008148, 1488652197, 2060367530], [2126125555, 41008148, 2102685848, 2060367530], [2126125555, 41008148, 1561938064, 2060367530], [2126125555, 41008148, 1483460610, 2060367530], [2126125555, 41008148, 2157292144, 2060367530], [2126125555, 41008148, 2099901190, 2060367530], [2126125555, 41008148, 2056010829, 2060367530], [2126125555, 41008148, 2132114316, 2060367530], [2126125555, 41008148, 2150296738, 2060367530], [2126125555, 41008148, 2155774786, 2060367530], [2126125555, 41008148, 2129861107, 2060367530], [2126125555, 41008148, 1595738428, 2060367530], [2126125555, 41008148, 1523750415, 2060367530], [2126125555, 41008148, 1601393362, 2060367530], [2126125555, 41008148, 1600714464, 2060367530], [2126125555, 41008148, 2117100064, 2060367530], [2126125555, 41008148, 2164432237, 2060367530], [2126125555, 41008148, 2012262020, 2060367530], [2126125555, 41008148, 2105670880, 2060367530], [2126125555, 41008148, 1709892446, 2060367530], [2126125555, 41008148, 1578876278, 2060367530], [2126125555, 41008148, 2146786731, 2060367530], [2126125555, 41008148, 2029400613, 2060367530], [2126125555, 41008148, 2129286837, 2060367530], [2126125555, 41008148, 1961942782, 2060367530], [2126125555, 41008148, 2079964400, 2060367530], [2126125555, 41008148, 2097053735, 2060367530], [2126125555, 41008148, 2007638871, 2060367530], [2126125555, 41008148, 2071996035, 2060367530], [2126125555, 41008148, 2144059113, 2060367530], [2126125555, 41008148, 2170453348, 2060367530], [2126125555, 41008148, 2142431713, 2060367530], [2126125555, 41008148, 1499112059, 2060367530], [2126125555, 41008148, 2144731788, 2060367530], [2126125555, 41008148, 778991281, 2060367530], [2126125555, 41008148, 2096507591, 2060367530], [2126125555, 41008148, 2031333550, 2060367530], [2126125555, 41008148, 1502496649, 2060367530], [2126125555, 41008148, 2119062512, 2060367530], [2126125555, 41008148, 2156658001, 2060367530], [2126125555, 41008148, 1999100541, 2060367530], [2126125555, 41008148, 1558326464, 2060367530], [2126125555, 41008148, 1905542964, 2060367530], [2126125555, 41008148, 1570186685, 2060367530], [2126125555, 41008148, 1918619331, 2060367530], [2126125555, 41008148, 2166328173, 2060367530], [2126125555, 41008148, 2075417325, 2060367530], [2126125555, 41008148, 1589498187, 2060367530], [2126125555, 83665646, 2022321664, 2060367530], [2126125555, 41008148, 2022321664, 2060367530], [2126125555, 41008148, 2141934850, 2060367530], [2126125555, 41008148, 2132977767, 2060367530], [2126125555, 41008148, 1593615140, 2060367530], [2126125555, 41008148, 2095050885, 2060367530], [2126125555, 41008148, 2153896877, 2060367530], [2126125555, 41008148, 2109097973, 2060367530], [2126125555, 41008148, 1623642712, 2060367530], [2126125555, 41008148, 2072864195, 2060367530], [2126125555, 41008148, 1981368101, 2060367530], [2126125555, 41008148, 1488255930, 2060367530], [2126125555, 136389625, 2082096076, 2060367530], [2126125555, 41008148, 2082096076, 2060367530], [2126125555, 41008148, 1607060702, 2060367530], [2126125555, 41008148, 2118003234, 2060367530], [2126125555, 41008148, 2159028516, 2060367530], [2126125555, 41008148, 2049160443, 2060367530], [2126125555, 41008148, 2081434226, 2060367530], [2126125555, 41008148, 2146039397, 2060367530], [2126125555, 41008148, 2154443703, 2060367530], [2126125555, 83665646, 2260708740, 2060367530], [2126125555, 41008148, 2260708740, 2060367530], [2126125555, 41008148, 1753166931, 2060367530], [2126125555, 41008148, 2119457903, 2060367530], [2126125555, 41008148, 2259771398, 2060367530], [2126125555, 41008148, 1503591146, 2060367530], [2126125555, 41008148, 2104745981, 2060367530], [2126125555, 41008148, 2108584376, 2060367530], [2126125555, 41008148, 1570581034, 2060367530], [2126125555, 41008148, 2144126867, 2060367530], [2126125555, 41008148, 2116505788, 2060367530], [2126125555, 41008148, 2171434312, 2060367530], [2126125555, 41008148, 629079207, 2060367530], [2126125555, 41008148, 2041284224, 2060367530], [2126125555, 41008148, 2105094912, 2060367530], [2126125555, 41008148, 2122241412, 2060367530], [2126125555, 41008148, 2090001453, 2060367530], [2126125555, 41008148, 2139178514, 2060367530], [2126125555, 41008148, 2105736064, 2060367530], [2126125555, 41008148, 2016718671, 2060367530], [2126125555, 41008148, 1989790201, 2060367530], [2126125555, 41008148, 1537331311, 2060367530], [2126125555, 41008148, 1506442240, 2060367530], [2126125555, 41008148, 1497434652, 2060367530], [2126125555, 41008148, 2161820152, 2060367530], [2126125555, 41008148, 1584117404, 2060367530], [2126125555, 41008148, 2109764329, 2060367530], [2126125555, 41008148, 2115764225, 2060367530], [2126125555, 41008148, 2132779144, 2060367530], [2126125555, 41008148, 2112881935, 2060367530], [2126125555, 41008148, 1508693126, 2060367530], [2126125555, 41008148, 1502653702, 2060367530], [2126125555, 41008148, 2126869607, 2060367530], [2126125555, 41008148, 2075654122, 2060367530], [2126125555, 41008148, 2158527870, 2060367530], [2126125555, 41008148, 4544609, 2060367530], [2126125555, 41008148, 2142857855, 2060367530], [2126125555, 41008148, 1591503159, 2060367530], [2126125555, 41008148, 2116286825, 2060367530], [2126125555, 41008148, 2118166013, 2060367530], [2126125555, 41008148, 1751831467, 2060367530], [2126125555, 41008148, 2127725212, 2060367530], [2126125555, 41008148, 2162165330, 2060367530], [2126125555, 41008148, 1552237820, 2060367530], [2126125555, 44249647, 1517999710, 2060367530], [2126125555, 41008148, 1517999710, 2060367530], [2126125555, 41008148, 2161807765, 2060367530], [2126125555, 41008148, 2102078023, 2060367530], [2126125555, 41008148, 2102804195, 2060367530], [2126125555, 41008148, 1999089209, 2060367530], [2126125555, 41008148, 2072691016, 2060367530], [2126125555, 41008148, 2115666983, 2060367530], [2126125555, 41008148, 2161989005, 2060367530], [2126125555, 41008148, 1513620114, 2060367530], [2126125555, 41008148, 2142951280, 2060367530], [2126125555, 41008148, 2013293739, 2060367530], [2126125555, 41008148, 1521473449, 2060367530], [2126125555, 41008148, 2109804957, 2060367530], [2126125555, 41008148, 1737644837, 2060367530], [2126125555, 41008148, 2145865634, 2060367530], [2126125555, 41008148, 2098263436, 2060367530], [2126125555, 41008148, 1555730402, 2060367530], [2126125555, 41008148, 2021004711, 2060367530], [2126125555, 41008148, 2145611924, 2060367530], [2126125555, 41008148, 2098133142, 2060367530], [2126125555, 41008148, 2089391592, 2060367530], [2126125555, 41008148, 354014681, 2060367530], [2126125555, 41008148, 2130136332, 2060367530], [2126125555, 41008148, 2388674, 2060367530], [2126125555, 41008148, 2026153709, 2060367530], [2126125555, 41008148, 1562133688, 2060367530], [2126125555, 41008148, 1006511299, 2060367530], [2126125555, 41008148, 1486537471, 2060367530], [2126125555, 41008148, 2141156412, 2060367530], [2126125555, 41008148, 2170786518, 2060367530], [2126125555, 41008148, 2154192633, 2060367530], [2126125555, 41008148, 2085305274, 2060367530], [2126125555, 41008148, 2094772000, 2060367530], [2126125555, 41008148, 2295596238, 2060367530], [2126125555, 41008148, 1185231175, 2060367530], [2126125555, 41008148, 2119857862, 2060367530], [2126125555, 41008148, 2101132369, 2060367530], [2126125555, 41008148, 2129763971, 2060367530], [2126125555, 41008148, 2155659065, 2060367530], [2126125555, 41008148, 2121976245, 2060367530], [2126125555, 41008148, 1581642199, 2060367530], [2126125555, 41008148, 2001208534, 2060367530], [2126125555, 41008148, 2169155015, 2060367530], [2126125555, 41008148, 2098342830, 2060367530], [2126125555, 41008148, 1529400680, 2060367530], [2126125555, 41008148, 2145830962, 2060367530], [2126125555, 41008148, 159358400, 2060367530], [2126125555, 41008148, 2150894912, 2060367530], [2126125555, 41008148, 17572312, 2060367530], [2126125555, 41008148, 1490096784, 2060367530], [2126125555, 41008148, 2110182757, 2060367530], [2126125555, 41008148, 1541259191, 2060367530], [2126125555, 41008148, 1519059815, 2060367530], [2126125555, 41008148, 1554862052, 2060367530], [2126125555, 41008148, 1489858659, 2060367530], [2126125555, 41008148, 2169602509, 2060367530], [2126125555, 41008148, 2113953665, 2060367530], [2126125555, 41008148, 2105181173, 2060367530], [2126125555, 41008148, 2134947183, 2060367530], [2126125555, 41008148, 2062205157, 2060367530], [2126125555, 41008148, 1921526413, 2060367530], [2126125555, 41008148, 1487920318, 2060367530], [2126125555, 41008148, 1862187356, 2060367530], [2126125555, 41008148, 1551390410, 2060367530], [2126125555, 41008148, 2030109570, 2060367530], [2126125555, 41008148, 2168422970, 2060367530], [2126125555, 41008148, 1576884330, 2060367530], [2126125555, 41008148, 2123489635, 2060367530], [2126125555, 41008148, 2044103801, 2060367530], [2126125555, 41008148, 2162293978, 2060367530], [2126125555, 41008148, 2159517500, 2060367530], [2126125555, 41008148, 2146359639, 2060367530], [2126125555, 41008148, 2288062769, 2060367530], [2126125555, 41008148, 2122669644, 2060367530], [2126125555, 41008148, 2108153076, 2060367530], [2126125555, 41008148, 1537974648, 2060367530], [2126125555, 41008148, 1595922010, 2060367530], [2126125555, 41008148, 2150908424, 2060367530], [2126125555, 41008148, 2126459355, 2060367530], [2126125555, 41008148, 2097463530, 2060367530], [2126125555, 41008148, 1589867077, 2060367530], [2126125555, 41008148, 2134577949, 2060367530], [2126125555, 41008148, 1993626219, 2060367530], [2126125555, 41008148, 2116806808, 2060367530], [2126125555, 41008148, 2156509695, 2060367530], [2126125555, 41008148, 2056302059, 2060367530], [2126125555, 41008148, 2164699980, 2060367530], [2126125555, 41008148, 143141230, 2060367530], [2126125555, 41008148, 2153456166, 2060367530], [2126125555, 41008148, 2095683673, 2060367530], [2126125555, 41008148, 1545763046, 2060367530], [2126125555, 41008148, 207065743, 2060367530], [2126125555, 83665646, 1518674921, 2060367530], [2126125555, 41008148, 1518674921, 2060367530], [2126125555, 41008148, 2134144105, 2060367530], [2126125555, 41008148, 1512779684, 2060367530], [2126125555, 41008148, 1548630016, 2060367530], [2126125555, 136389625, 2130203430, 2060367530], [2126125555, 41008148, 2130203430, 2060367530], [2126125555, 41008148, 1491241688, 2060367530], [2126125555, 41008148, 1602619052, 2060367530], [2126125555, 41008148, 2151900198, 2060367530], [2126125555, 41008148, 1534754016, 2060367530], [2126125555, 41008148, 2151022383, 2060367530], [2126125555, 41008148, 2115795813, 2060367530], [2126125555, 41008148, 93004918, 2060367530], [2126125555, 83665646, 1577418480, 2060367530], [2126125555, 41008148, 1577418480, 2060367530], [2126125555, 83665646, 1498382249, 2060367530], [2126125555, 41008148, 1498382249, 2060367530], [2126125555, 41008148, 2087510184, 2060367530], [2126125555, 41008148, 2094573161, 2060367530], [2126125555, 41008148, 2112066488, 2060367530], [2126125555, 41008148, 1902846942, 2060367530], [2126125555, 41008148, 2162080806, 2060367530], [2126125555, 41008148, 2096507722, 2060367530], [2126125555, 41008148, 1608748785, 2060367530], [2126125555, 41008148, 2153502033, 2060367530], [2126125555, 41008148, 2172012119, 2060367530], [2126125555, 41008148, 2099017153, 2060367530], [2126125555, 41008148, 2189918755, 2060367530], [2126125555, 41008148, 2037038028, 2060367530], [2126125555, 41008148, 2148675031, 2060367530], [2126125555, 41008148, 2109457286, 2060367530], [2126125555, 41008148, 1575612299, 2060367530], [2126125555, 136389625, 1528397638, 2060367530], [2126125555, 41008148, 1528397638, 2060367530], [2126125555, 41008148, 28039451, 2060367530], [2126125555, 83665646, 1572928463, 2060367530], [2126125555, 41008148, 1572928463, 2060367530], [2126125555, 41008148, 2154581809, 2060367530], [2126125555, 41008148, 1521505804, 2060367530], [2126125555, 41008148, 2044002342, 2060367530], [2126125555, 41008148, 2145797795, 2060367530], [2126125555, 41008148, 141226124, 2060367530], [2126125555, 41008148, 2117106774, 2060367530], [2126125555, 41008148, 1514728424, 2060367530], [2126125555, 41008148, 2107902471, 2060367530], [2126125555, 41008148, 1486464991, 2060367530], [2126125555, 83665646, 2147610575, 2060367530], [2126125555, 41008148, 2147610575, 2060367530], [2126125555, 41008148, 2152499573, 2060367530], [2126125555, 197046077, 2024503914, 2060367530], [2126125555, 41008148, 2024503914, 2060367530], [2126125555, 41008148, 2127554007, 2060367530], [2126125555, 41008148, 2125251729, 2060367530], [2126125555, 41008148, 1536616998, 2060367530], [2126125555, 41008148, 2170546397, 2060367530], [2126125555, 41008148, 1480939268, 2060367530], [2126125555, 41008148, 2128054009, 2060367530], [2126125555, 41008148, 1130968044, 2060367530], [2126125555, 41008148, 1522494268, 2060367530], [2126125555, 41008148, 2108398168, 2060367530], [2126125555, 41008148, 2095214481, 2060367530], [2126125555, 41008148, 1581520584, 2060367530], [2126125555, 136389625, 1515350409, 2060367530], [2126125555, 41008148, 1515350409, 2060367530], [2126125555, 41008148, 2105623116, 2060367530], [2126125555, 41008148, 2119796927, 2060367530], [2126125555, 41008148, 2024896467, 2060367530], [2126125555, 41008148, 2119917299, 2060367530], [2126125555, 41008148, 2189478985, 2060367530], [2126125555, 41008148, 2127384823, 2060367530], [2126125555, 41008148, 2118071835, 2060367530], [2126125555, 41008148, 1560465254, 2060367530], [2126125555, 41008148, 1485852632, 2060367530], [2126125555, 41008148, 1509775741, 2060367530], [2126125555, 41008148, 2017612368, 2060367530], [2126125555, 41008148, 2108968928, 2060367530], [2126125555, 41008148, 2134148622, 2060367530], [2126125555, 41008148, 1542762779, 2060367530], [2126125555, 41008148, 1982407002, 2060367530], [2126125555, 41008148, 2131807627, 2060367530], [2126125555, 41008148, 1573928672, 2060367530], [2126125555, 41008148, 2140490191, 2060367530], [2126125555, 41008148, 1599899499, 2060367530], [2126125555, 41008148, 2108681813, 2060367530], [2126125555, 41008148, 2140942169, 2060367530], [2126125555, 41008148, 130521340, 2060367530], [2126125555, 41008148, 2130006271, 2060367530], [2126125555, 41008148, 2130559732, 2060367530], [2126125555, 41008148, 2023591438, 2060367530], [2126125555, 136389625, 98552495, 2060367530], [2126125555, 41008148, 98552495, 2060367530], [2126125555, 41008148, 2090072103, 2060367530], [2126125555, 41008148, 2073597736, 2060367530], [2126125555, 41008148, 2152545568, 2060367530], [2126125555, 41008148, 2170439597, 2060367530], [2126125555, 41008148, 2154627042, 2060367530], [2126125555, 41008148, 1595867346, 2060367530], [2126125555, 41008148, 2123374346, 2060367530], [2126125555, 41008148, 2151837342, 2060367530], [2126125555, 41008148, 1972722395, 2060367530], [2126125555, 41008148, 2078576651, 2060367530], [2126125555, 41008148, 2085565809, 2060367530], [2126125555, 41008148, 1494871646, 2060367530], [2126125555, 41008148, 2165311258, 2060367530], [2126125555, 41008148, 2158364587, 2060367530], [2126125555, 41008148, 1932187967, 2060367530], [2126125555, 83665646, 2118715158, 2060367530], [2126125555, 41008148, 2118715158, 2060367530], [2126125555, 41008148, 2169461209, 2060367530], [2126125555, 41008148, 1538249054, 2060367530], [2126125555, 41008148, 2158522899, 2060367530], [2126125555, 41008148, 1566285224, 2060367530], [2126125555, 41008148, 2150091052, 2060367530], [2126125555, 41008148, 2145290395, 2060367530], [2126125555, 41008148, 1506122141, 2060367530], [2126125555, 41008148, 1551608554, 2060367530], [2126125555, 41008148, 2146113121, 2060367530], [2126125555, 41008148, 1553394277, 2060367530], [2126125555, 41008148, 2166403030, 2060367530], [2126125555, 41008148, 1559866522, 2060367530], [2126125555, 41008148, 1526420437, 2060367530], [2126125555, 41008148, 2123570054, 2060367530], [2126125555, 41008148, 2151337015, 2060367530], [2126125555, 41008148, 1576264236, 2060367530], [2126125555, 41008148, 132227893, 2060367530], [2126125555, 41008148, 2156870875, 2060367530], [2126125555, 41008148, 120087648, 2060367530], [2126125555, 41008148, 2133866498, 2060367530], [2126125555, 41008148, 2169476730, 2060367530], [2126125555, 83665646, 1955912360, 2060367530], [2126125555, 41008148, 1955912360, 2060367530], [2126125555, 41008148, 2153409933, 2060367530], [2126125555, 136389625, 2154495024, 2060367530], [2126125555, 41008148, 2154495024, 2060367530], [2126125555, 41008148, 1557604605, 2060367530], [2126125555, 41008148, 2027220788, 2060367530], [2126125555, 41008148, 2126132319, 2060367530], [2126125555, 41008148, 1999022704, 2060367530], [2126125555, 41008148, 1574104658, 2060367530], [2126125555, 41008148, 1563993211, 2060367530], [2126125555, 41008148, 2012484116, 2060367530], [2126125555, 41008148, 1514177737, 2060367530], [2126125555, 41008148, 2022978093, 2060367530], [2126125555, 41008148, 2169661790, 2060367530], [2126125555, 41008148, 2123428651, 2060367530], [2126125555, 41008148, 1496527481, 2060367530], [2126125555, 41008148, 1565012875, 2060367530], [2126125555, 41008148, 2113237115, 2060367530], [2126125555, 41008148, 2078967828, 2060367530], [2126125555, 41008148, 2101207893, 2060367530], [2126125555, 41008148, 2100100060, 2060367530], [2126125555, 83665646, 2067277981, 2060367530], [2126125555, 41008148, 2067277981, 2060367530], [2126125555, 41008148, 2145353547, 2060367530], [2126125555, 41008148, 2132995846, 2060367530], [2126125555, 41008148, 2140444007, 2060367530], [2126125555, 41008148, 1505408058, 2060367530], [2126125555, 41008148, 2049931689, 2060367530], [2126125555, 41008148, 2134443757, 2060367530], [2126125555, 41008148, 2038533909, 2060367530], [2126125555, 41008148, 1593413603, 2060367530], [2126125555, 41008148, 2155081822, 2060367530], [2126125555, 41008148, 2031209991, 2060367530], [2126125555, 41008148, 2166015992, 2060367530], [2126125555, 41008148, 1527177728, 2060367530], [2126125555, 41008148, 2116922044, 2060367530], [2126125555, 41008148, 1534005294, 2060367530], [2126125555, 41008148, 2137116078, 2060367530], [2126125555, 41008148, 2170233995, 2060367530], [2126125555, 41008148, 1482421870, 2060367530], [2126125555, 41008148, 55574408, 2060367530], [2126125555, 41008148, 1862458474, 2060367530], [2126125555, 41008148, 2102810973, 2060367530], [2126125555, 41008148, 2135325000, 2060367530], [2126125555, 41008148, 1999389732, 2060367530], [2126125555, 41008148, 2023698669, 2060367530], [2126125555, 41008148, 1548599989, 2060367530], [2126125555, 83665646, 2127426112, 2060367530], [2126125555, 41008148, 2127426112, 2060367530], [2126125555, 83665646, 1561277747, 2060367530], [2126125555, 41008148, 1561277747, 2060367530], [2126125555, 41008148, 1823054119, 2060367530], [2126125555, 41008148, 1587873131, 2060367530], [2126125555, 41008148, 2157336244, 2060367530], [2126125555, 41008148, 2102069373, 2060367530], [2126125555, 41008148, 2112153603, 2060367530], [2126125555, 41008148, 2123633848, 2060367530], [2126125555, 41008148, 2087774711, 2060367530], [2126125555, 41008148, 1594419467, 2060367530], [2126125555, 41008148, 2058365384, 2060367530], [2126125555, 41008148, 2111670387, 2060367530], [2126125555, 41008148, 1968285616, 2060367530], [2126125555, 41008148, 2162085703, 2060367530], [2126125555, 41008148, 2117118263, 2060367530], [2126125555, 41008148, 2102246694, 2060367530], [2126125555, 41008148, 1497780918, 2060367530], [2126125555, 41008148, 2157394211, 2060367530], [2126125555, 41008148, 1527469025, 2060367530], [2126125555, 41008148, 2273307376, 2060367530], [2126125555, 41008148, 1533678783, 2060367530], [2126125555, 41008148, 1622775886, 2060367530], [2126125555, 41008148, 2160028772, 2060367530], [2126125555, 41008148, 2133207139, 2060367530], [2126125555, 41008148, 1488561887, 2060367530], [2126125555, 41008148, 803876881, 2060367530], [2126125555, 41008148, 2151191314, 2060367530], [2126125555, 41008148, 1501163793, 2060367530], [2126125555, 41008148, 1484947827, 2060367530], [2126125555, 41008148, 2117974289, 2060367530], [2126125555, 41008148, 1603271854, 2060367530], [2126125555, 41008148, 2151177863, 2060367530], [2126125555, 41008148, 2091791263, 2060367530], [2126125555, 41008148, 1552796624, 2060367530], [2126125555, 41008148, 2020434719, 2060367530], [2126125555, 41008148, 2097842685, 2060367530], [2126125555, 41008148, 1583295543, 2060367530], [2126125555, 41008148, 1558281250, 2060367530], [2126125555, 41008148, 2078180885, 2060367530], [2126125555, 41008148, 1574244537, 2060367530], [2126125555, 41008148, 2005346889, 2060367530], [2126125555, 41008148, 1493172201, 2060367530], [2126125555, 41008148, 2142384871, 2060367530], [2126125555, 41008148, 2110466853, 2060367530], [2126125555, 41008148, 2069480408, 2060367530], [2126125555, 41008148, 1554327591, 2060367530], [2126125555, 83665646, 1781339986, 2060367530], [2126125555, 41008148, 1781339986, 2060367530], [2126125555, 41008148, 200055632, 2060367530], [2126125555, 41008148, 2156196395, 2060367530], [2126125555, 41008148, 1593357288, 2060367530], [2126125555, 41008148, 1590215833, 2060367530], [2126125555, 41008148, 2131869623, 2060367530], [2126125555, 41008148, 2135638048, 2060367530], [2126125555, 41008148, 2150601689, 2060367530], [2126125555, 41008148, 2101768733, 2060367530], [2126125555, 41008148, 2124277471, 2060367530], [2126125555, 41008148, 2060274158, 2060367530], [2126125555, 41008148, 2134070650, 2060367530], [2126125555, 41008148, 2019707760, 2060367530], [2126125555, 41008148, 1584959763, 2060367530], [2126125555, 41008148, 54817077, 2060367530], [2126125555, 41008148, 2125531217, 2060367530], [2126125555, 41008148, 2099191050, 2060367530], [2126125555, 41008148, 1569922622, 2060367530], [2126125555, 41008148, 1958129221, 2060367530], [2126125555, 41008148, 2082193029, 2060367530], [2126125555, 41008148, 2132325395, 2060367530], [2126125555, 41008148, 2140773453, 2060367530], [2126125555, 41008148, 1804802066, 2060367530], [2126125555, 41008148, 1557034022, 2060367530], [2126125555, 41008148, 2151169839, 2060367530], [2126125555, 41008148, 2134014367, 2060367530], [2126125555, 41008148, 2132137099, 2060367530], [2126125555, 41008148, 2140891369, 2060367530], [2126125555, 41008148, 2100799569, 2060367530], [2126125555, 44249647, 1978091474, 2060367530], [2126125555, 83665646, 1507608211, 2060367530], [2126125555, 41008148, 1507608211, 2060367530], [2126125555, 41008148, 1531272880, 2060367530], [2126125555, 41008148, 2061343449, 2060367530], [2126125555, 136389625, 105560321, 2060367530], [2126125555, 41008148, 105560321, 2060367530], [2126125555, 41008148, 1519143746, 2060367530], [2126125555, 41008148, 1565589049, 2060367530], [2126125555, 41008148, 9124666, 2060367530], [2126125555, 41008148, 2037646952, 2060367530], [2126125555, 83665646, 146091500, 2060367530], [2126125555, 41008148, 146091500, 2060367530], [2126125555, 150899416, 2135712093, 2060367530], [2126125555, 41008148, 2135712093, 2060367530], [2126125555, 41008148, 2089666406, 2060367530], [2126125555, 41008148, 2030055634, 2060367530], [2126125555, 41008148, 1598265196, 2060367530], [2126125555, 41008148, 2155505106, 2060367530], [2126125555, 41008148, 1487656206, 2060367530], [2126125555, 41008148, 1936687928, 2060367530], [2126125555, 41008148, 2134509989, 2060367530], [2126125555, 41008148, 2107528096, 2060367530], [2126125555, 41008148, 1257160799, 2060367530], [2126125555, 41008148, 1775936963, 2060367530], [2126125555, 41008148, 1488853846, 2060367530], [2126125555, 41008148, 2098385475, 2060367530], [2126125555, 41008148, 2140466430, 2060367530], [2126125555, 41008148, 1481840705, 2060367530], [2126125555, 41008148, 2135907020, 2060367530], [2126125555, 41008148, 2108163009, 2060367530], [2126125555, 41008148, 1579756127, 2060367530], [2126125555, 41008148, 2114957931, 2060367530], [2126125555, 41008148, 1549268640, 2060367530], [2126125555, 41008148, 1883100025, 2060367530], [2126125555, 136389625, 2122126513, 2060367530], [2126125555, 41008148, 2122126513, 2060367530], [2126125555, 41008148, 1551702026, 2060367530], [2126125555, 41008148, 1604448624, 2060367530], [2126125555, 41008148, 1887235105, 2060367530], [2126125555, 41008148, 2018331968, 2060367530], [2126125555, 41008148, 1565598615, 2060367530], [2126125555, 41008148, 1565813884, 2060367530], [2126125555, 41008148, 1531867961, 2060367530], [2126125555, 41008148, 2119650224, 2060367530], [2126125555, 41008148, 1164941284, 2060367530], [2126125555, 41008148, 2204097530, 2060367530], [2126125555, 41008148, 2116229431, 2060367530], [2126125555, 41008148, 1536604144, 2060367530], [2126125555, 41008148, 2168934530, 2060367530], [2126125555, 41008148, 2169584427, 2060367530], [2126125555, 41008148, 2121734798, 2060367530], [2126125555, 41008148, 2126179605, 2060367530], [2126125555, 41008148, 2163843636, 2060367530], [2126125555, 41008148, 1495807372, 2060367530], [2126125555, 41008148, 2113003506, 2060367530], [2126125555, 41008148, 1569686669, 2060367530], [2126125555, 41008148, 2048216627, 2060367530], [2126125555, 41008148, 2166119362, 2060367530], [2126125555, 41008148, 2134532593, 2060367530], [2126125555, 41008148, 2126017807, 2060367530], [2126125555, 41008148, 2119019481, 2060367530], [2126125555, 41008148, 2143536180, 2060367530], [2126125555, 41008148, 2168208401, 2060367530], [2126125555, 41008148, 2102006712, 2060367530], [2126125555, 41008148, 2164141900, 2060367530], [2126125555, 41008148, 2158456912, 2060367530], [2126125555, 41008148, 1553207953, 2060367530], [2126125555, 41008148, 2059114993, 2060367530], [2126125555, 41008148, 4116297, 2060367530], [2126125555, 2153635508, 2060367530], [2126125555, 2165698076, 2060367530], [2126125555, 2143104527, 2060367530], [2126125555, 2103851188, 33923547, 2060367530], [2126125555, 2129418188, 33923547, 2060367530]] \ No newline at end of file diff --git a/3 b/3 new file mode 100755 index 0000000..33da6fe --- /dev/null +++ b/3 @@ -0,0 +1,21 @@ +{u'expr': u'Composite(AA.AuId = 2273736245 )', u'entities': [{u'AA': [{u'AuId': 2273736245, u'AfId': 165450437}, {u'AuId': 2311122994, u'AfId': 165450437}], u'F': [{u'FId': 124657808}, {u'FId': 121332964}], u'J': {u'JId': 3880285}, u'RId': [2123605247, 1561900454, 2052566608, 2038237598, 2037354580, 2074943171, 2044543075, 2075206831, 1626513324, 2021179200, 2031305523, 2069275401, 2006842594, 1506720323, 2076857869, 2010070400, 2141017103, 2009981131, 1988551400, 2137985849, 2148092984, 2046612692, 2039366639, 2039109187], u'logprob': -15.369, u'Id': 2094437628}, {u'AA': [{u'AuId': 2294872656}, {u'AuId': 2311421804}, {u'AuId': 2313096749}, {u'AuId': 2273736245}], u'F': [{u'FId': 124657808}, {u'FId': 171250308}, {u'FId': 62520636}, {u'FId': 185592680}, {u'FId': 121332964}], u'J': {u'JId': 66104727}, u'RId': [], u'logprob': -19.957, u'Id': 2088397685}, {u'AA': [{u'AuId': 2051556036}, {u'AuId': 2145665620}, {u'AuId': 2319892360}, {u'AuId': 2273736245}], u'F': [{u'FId': 124657808}, {u'FId': 185592680}], u'J': {u'JId': 191963794}, u'RId': [], u'logprob': -20.47, u'Id': 2054283902}, {u'AA': [{u'AuId': 2331045479}, {u'AuId': 2273736245}, {u'AuId': 2311122994}], u'F': [{u'FId': 185592680}], u'J': {u'JId': 191963794}, u'RId': [], u'logprob': -20.494, u'Id': 2021067283}, {u'AA': [{u'AuId': 2311122994}, {u'AuId': 2273736245}, {u'AuId': 2309493936}], u'RId': [2123605247, 2062485439, 2094437628, 1561900454, 2158848123, 2049106847, 2037479635, 2074943171, 2044543075, 2038980827, 2039501915, 2168172378, 2021179200, 2031305523, 2033239757, 2034732966, 2076857869, 2010070400, 2009981131, 1988551400, 2094071061, 1964539248, 2039366639, 2043388894, 2032427157, 1978024845, 2007826279, 2005300555, 2069445401, 2121890284], u'logprob': -20.595, u'Id': 2136111777}, {u'AA': [{u'AuId': 1996663186, u'AfId': 205783295}, {u'AuId': 2083396177, u'AfId': 205783295}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 2216097749}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 2310388661}], u'F': [{u'FId': 150493377}, {u'FId': 200687136}, {u'FId': 188954035}, {u'FId': 148869448}, {u'FId': 26771246}, {u'FId': 158711907}, {u'FId': 512185932}, {u'FId': 148898269}, {u'FId': 32909587}, {u'FId': 120665830}, {u'FId': 62520636}, {u'FId': 121332964}], u'J': {u'JId': 183492911}, u'RId': [], u'logprob': -21.02, u'Id': 2067111928}, {u'AA': [{u'AuId': 2123468370, u'AfId': 185261750}, {u'AuId': 184851161, u'AfId': 185261750}, {u'AuId': 198866347, u'AfId': 185261750}, {u'AuId': 2146168387, u'AfId': 185261750}, {u'AuId': 2216097749, u'AfId': 185261750}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 2310388661}], u'RId': [], u'logprob': -21.19, u'Id': 2086923594}, {u'AA': [{u'AuId': 2191017270, u'AfId': 185261750}, {u'AuId': 1992750699, u'AfId': 185261750}, {u'AuId': 275313776, u'AfId': 185261750}, {u'AuId': 2123468370, u'AfId': 185261750}, {u'AuId': 2328496300}, {u'AuId': 2153472038, u'AfId': 167576493}, {u'AuId': 184851161, u'AfId': 185261750}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 2216097749}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 2310388661}], u'F': [{u'FId': 67649825}, {u'FId': 169274487}, {u'FId': 148869448}, {u'FId': 30713254}, {u'FId': 151406439}, {u'FId': 147080431}, {u'FId': 28435686}, {u'FId': 120665830}, {u'FId': 121332964}], u'J': {u'JId': 183492911}, u'RId': [], u'logprob': -21.196, u'Id': 2033935581}, {u'AA': [{u'AuId': 2104629002, u'AfId': 185261750}, {u'AuId': 216232469, u'AfId': 133738476}, {u'AuId': 2192501102, u'AfId': 133738476}, {u'AuId': 1841647939, u'AfId': 1324220072}, {u'AuId': 2302787204, u'AfId': 1324220072}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 2216097749}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 1920167608}], u'RId': [], u'logprob': -21.344, u'Id': 2053077389}, {u'AA': [{u'AuId': 2073672159, u'AfId': 185261750}, {u'AuId': 184851161, u'AfId': 185261750}, {u'AuId': 2081816858, u'AfId': 185261750}, {u'AuId': 2172575203, u'AfId': 185261750}, {u'AuId': 2123468370, u'AfId': 185261750}, {u'AuId': 2146168387, u'AfId': 185261750}, {u'AuId': 2144744202, u'AfId': 185261750}, {u'AuId': 2216097749, u'AfId': 185261750}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 1920167608}], u'RId': [], u'logprob': -21.559, u'Id': 2003918905}, {u'AA': [{u'AuId': 2084194091, u'AfId': 185261750}, {u'AuId': 2066510198, u'AfId': 185261750}, {u'AuId': 2318515108, u'AfId': 80345338}, {u'AuId': 2009253165, u'AfId': 185261750}, {u'AuId': 426079431, u'AfId': 185261750}, {u'AuId': 2212967212, u'AfId': 185261750}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 2216097749}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 1920167608}], u'RId': [], u'logprob': -21.589, u'Id': 2048481564}, {u'AA': [{u'AuId': 2160031270, u'AfId': 37461747}, {u'AuId': 2108171435, u'AfId': 47720641}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 2216097749}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 1920167608}], u'RId': [], u'logprob': -21.975, u'Id': 2017318430}, {u'AA': [{u'AuId': 2015905265}, {u'AuId': 2291831693}, {u'AuId': 2088130700}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 2216097749}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 1920167608}], u'F': [{u'FId': 186187911}, {u'FId': 56318395}, {u'FId': 553089730}, {u'FId': 14053116}, {u'FId': 148869448}, {u'FId': 120665830}, {u'FId': 121332964}], u'J': {u'JId': 183492911}, u'RId': [], u'logprob': -22.004, u'Id': 2067477861}, {u'AA': [{u'AuId': 2331045479, u'AfId': 592451}, {u'AuId': 2273736245, u'AfId': 592451}, {u'AuId': 2311122994, u'AfId': 592451}, {u'AuId': 2197551322}, {u'AuId': 2260427693}], u'F': [{u'FId': 90842384}, {u'FId': 32909587}, {u'FId': 62520636}, {u'FId': 121332964}], u'J': {u'JId': 183492911}, u'RId': [], u'logprob': -22.116, u'Id': 2046860686}, {u'AA': [{u'AuId': 2273736245, u'AfId': 592451}, {u'AuId': 2253378402, u'AfId': 592451}, {u'AuId': 2256138033, u'AfId': 592451}, {u'AuId': 2311122994, u'AfId': 592451}], u'RId': [], u'logprob': -22.185, u'Id': 1996704434}, {u'AA': [{u'AuId': 2273736245, u'AfId': 592451}, {u'AuId': 2311122994, u'AfId': 592451}], u'RId': [], u'logprob': -22.455, u'Id': 1991518848}, {u'AA': [{u'AuId': 2311122994}, {u'AuId': 2273736245}, {u'AuId': 2200796425}], u'RId': [], u'logprob': -22.938, u'Id': 2272756406}, {u'AA': [{u'AuId': 2311122994}, {u'AuId': 2273736245}, {u'AuId': 2200796425}], u'RId': [], u'logprob': -22.938, u'Id': 1928727717}]} +{u'expr': u'Id = 2094437628', u'entities': [{u'RId': [2123605247, 1561900454, 2052566608, 2038237598, 2037354580, 2074943171, 2044543075, 2075206831, 1626513324, 2021179200, 2031305523, 2069275401, 2006842594, 1506720323, 2076857869, 2010070400, 2141017103, 2009981131, 1988551400, 2137985849, 2148092984, 2046612692, 2039366639, 2039109187], u'logprob': -15.369}]} +{u'expr': u'Id = 2088397685', u'entities': [{u'RId': [], u'logprob': -19.957}]} +{u'expr': u'Id = 2054283902', u'entities': [{u'RId': [], u'logprob': -20.47}]} +{u'expr': u'Id = 2021067283', u'entities': [{u'RId': [], u'logprob': -20.494}]} +{u'expr': u'Id = 2136111777', u'entities': [{u'RId': [2123605247, 2062485439, 2094437628, 1561900454, 2158848123, 2049106847, 2037479635, 2074943171, 2044543075, 2038980827, 2039501915, 2168172378, 2021179200, 2031305523, 2033239757, 2034732966, 2076857869, 2010070400, 2009981131, 1988551400, 2094071061, 1964539248, 2039366639, 2043388894, 2032427157, 1978024845, 2007826279, 2005300555, 2069445401, 2121890284], u'logprob': -20.595}]} +{u'expr': u'Id = 2067111928', u'entities': [{u'RId': [], u'logprob': -21.02}]} +{u'expr': u'Id = 2086923594', u'entities': [{u'RId': [], u'logprob': -21.19}]} +{u'expr': u'Id = 2033935581', u'entities': [{u'RId': [], u'logprob': -21.196}]} +{u'expr': u'Id = 2053077389', u'entities': [{u'RId': [], u'logprob': -21.344}]} +{u'expr': u'Id = 2003918905', u'entities': [{u'RId': [], u'logprob': -21.559}]} +{u'expr': u'Id = 2048481564', u'entities': [{u'RId': [], u'logprob': -21.589}]} +{u'expr': u'Id = 2017318430', u'entities': [{u'RId': [], u'logprob': -21.975}]} +{u'expr': u'Id = 2067477861', u'entities': [{u'RId': [], u'logprob': -22.004}]} +{u'expr': u'Id = 2046860686', u'entities': [{u'RId': [], u'logprob': -22.116}]} +{u'expr': u'Id = 1996704434', u'entities': [{u'RId': [], u'logprob': -22.185}]} +{u'expr': u'Id = 1991518848', u'entities': [{u'RId': [], u'logprob': -22.455}]} +{u'expr': u'Id = 2272756406', u'entities': [{u'RId': [], u'logprob': -22.938}]} +{u'expr': u'Id = 1928727717', u'entities': [{u'RId': [], u'logprob': -22.938}]} +[[2273736245, 2094437628], [2273736245, 2094437628, 124657808, 2094437628], [2273736245, 2094437628, 121332964, 2094437628], [2273736245, 2094437628, 2273736245, 2094437628], [2273736245, 2094437628, 2311122994, 2094437628], [2273736245, 2094437628, 3880285, 2094437628], [2273736245, 2088397685, 124657808, 2094437628], [2273736245, 2088397685, 121332964, 2094437628], [2273736245, 2088397685, 2273736245, 2094437628], [2273736245, 2054283902, 124657808, 2094437628], [2273736245, 2054283902, 2273736245, 2094437628], [2273736245, 2021067283, 2273736245, 2094437628], [2273736245, 2021067283, 2311122994, 2094437628], [2273736245, 2067111928, 121332964, 2094437628], [2273736245, 2067111928, 2273736245, 2094437628], [2273736245, 2033935581, 121332964, 2094437628], [2273736245, 2033935581, 2273736245, 2094437628], [2273736245, 2067477861, 121332964, 2094437628], [2273736245, 2067477861, 2273736245, 2094437628], [2273736245, 2046860686, 121332964, 2094437628], [2273736245, 2046860686, 2273736245, 2094437628], [2273736245, 2046860686, 2311122994, 2094437628], [2273736245, 165450437, 2273736245, 2094437628], [2273736245, 165450437, 2311122994, 2094437628], [2273736245, 2136111777, 2094437628]] +1200 diff --git a/4 b/4 new file mode 100755 index 0000000..fae7559 --- /dev/null +++ b/4 @@ -0,0 +1,3 @@ +[1995672522, 2091164805] +[[2034917438, 205783295, 2014602748], [2034917438, 1995672522, 2014602748], [2034917438, 1995672522, 2017562024, 2014602748], [2034917438, 1995672522, 2034190349, 2014602748], [2034917438, 1995672522, 2093894241, 2014602748]] +225 diff --git a/Pool.pyc b/Pool.pyc new file mode 100755 index 0000000..69fd2c5 Binary files /dev/null and b/Pool.pyc differ diff --git a/a.json b/a.json new file mode 100755 index 0000000..33da6fe --- /dev/null +++ b/a.json @@ -0,0 +1,21 @@ +{u'expr': u'Composite(AA.AuId = 2273736245 )', u'entities': [{u'AA': [{u'AuId': 2273736245, u'AfId': 165450437}, {u'AuId': 2311122994, u'AfId': 165450437}], u'F': [{u'FId': 124657808}, {u'FId': 121332964}], u'J': {u'JId': 3880285}, u'RId': [2123605247, 1561900454, 2052566608, 2038237598, 2037354580, 2074943171, 2044543075, 2075206831, 1626513324, 2021179200, 2031305523, 2069275401, 2006842594, 1506720323, 2076857869, 2010070400, 2141017103, 2009981131, 1988551400, 2137985849, 2148092984, 2046612692, 2039366639, 2039109187], u'logprob': -15.369, u'Id': 2094437628}, {u'AA': [{u'AuId': 2294872656}, {u'AuId': 2311421804}, {u'AuId': 2313096749}, {u'AuId': 2273736245}], u'F': [{u'FId': 124657808}, {u'FId': 171250308}, {u'FId': 62520636}, {u'FId': 185592680}, {u'FId': 121332964}], u'J': {u'JId': 66104727}, u'RId': [], u'logprob': -19.957, u'Id': 2088397685}, {u'AA': [{u'AuId': 2051556036}, {u'AuId': 2145665620}, {u'AuId': 2319892360}, {u'AuId': 2273736245}], u'F': [{u'FId': 124657808}, {u'FId': 185592680}], u'J': {u'JId': 191963794}, u'RId': [], u'logprob': -20.47, u'Id': 2054283902}, {u'AA': [{u'AuId': 2331045479}, {u'AuId': 2273736245}, {u'AuId': 2311122994}], u'F': [{u'FId': 185592680}], u'J': {u'JId': 191963794}, u'RId': [], u'logprob': -20.494, u'Id': 2021067283}, {u'AA': [{u'AuId': 2311122994}, {u'AuId': 2273736245}, {u'AuId': 2309493936}], u'RId': [2123605247, 2062485439, 2094437628, 1561900454, 2158848123, 2049106847, 2037479635, 2074943171, 2044543075, 2038980827, 2039501915, 2168172378, 2021179200, 2031305523, 2033239757, 2034732966, 2076857869, 2010070400, 2009981131, 1988551400, 2094071061, 1964539248, 2039366639, 2043388894, 2032427157, 1978024845, 2007826279, 2005300555, 2069445401, 2121890284], u'logprob': -20.595, u'Id': 2136111777}, {u'AA': [{u'AuId': 1996663186, u'AfId': 205783295}, {u'AuId': 2083396177, u'AfId': 205783295}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 2216097749}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 2310388661}], u'F': [{u'FId': 150493377}, {u'FId': 200687136}, {u'FId': 188954035}, {u'FId': 148869448}, {u'FId': 26771246}, {u'FId': 158711907}, {u'FId': 512185932}, {u'FId': 148898269}, {u'FId': 32909587}, {u'FId': 120665830}, {u'FId': 62520636}, {u'FId': 121332964}], u'J': {u'JId': 183492911}, u'RId': [], u'logprob': -21.02, u'Id': 2067111928}, {u'AA': [{u'AuId': 2123468370, u'AfId': 185261750}, {u'AuId': 184851161, u'AfId': 185261750}, {u'AuId': 198866347, u'AfId': 185261750}, {u'AuId': 2146168387, u'AfId': 185261750}, {u'AuId': 2216097749, u'AfId': 185261750}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 2310388661}], u'RId': [], u'logprob': -21.19, u'Id': 2086923594}, {u'AA': [{u'AuId': 2191017270, u'AfId': 185261750}, {u'AuId': 1992750699, u'AfId': 185261750}, {u'AuId': 275313776, u'AfId': 185261750}, {u'AuId': 2123468370, u'AfId': 185261750}, {u'AuId': 2328496300}, {u'AuId': 2153472038, u'AfId': 167576493}, {u'AuId': 184851161, u'AfId': 185261750}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 2216097749}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 2310388661}], u'F': [{u'FId': 67649825}, {u'FId': 169274487}, {u'FId': 148869448}, {u'FId': 30713254}, {u'FId': 151406439}, {u'FId': 147080431}, {u'FId': 28435686}, {u'FId': 120665830}, {u'FId': 121332964}], u'J': {u'JId': 183492911}, u'RId': [], u'logprob': -21.196, u'Id': 2033935581}, {u'AA': [{u'AuId': 2104629002, u'AfId': 185261750}, {u'AuId': 216232469, u'AfId': 133738476}, {u'AuId': 2192501102, u'AfId': 133738476}, {u'AuId': 1841647939, u'AfId': 1324220072}, {u'AuId': 2302787204, u'AfId': 1324220072}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 2216097749}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 1920167608}], u'RId': [], u'logprob': -21.344, u'Id': 2053077389}, {u'AA': [{u'AuId': 2073672159, u'AfId': 185261750}, {u'AuId': 184851161, u'AfId': 185261750}, {u'AuId': 2081816858, u'AfId': 185261750}, {u'AuId': 2172575203, u'AfId': 185261750}, {u'AuId': 2123468370, u'AfId': 185261750}, {u'AuId': 2146168387, u'AfId': 185261750}, {u'AuId': 2144744202, u'AfId': 185261750}, {u'AuId': 2216097749, u'AfId': 185261750}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 1920167608}], u'RId': [], u'logprob': -21.559, u'Id': 2003918905}, {u'AA': [{u'AuId': 2084194091, u'AfId': 185261750}, {u'AuId': 2066510198, u'AfId': 185261750}, {u'AuId': 2318515108, u'AfId': 80345338}, {u'AuId': 2009253165, u'AfId': 185261750}, {u'AuId': 426079431, u'AfId': 185261750}, {u'AuId': 2212967212, u'AfId': 185261750}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 2216097749}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 1920167608}], u'RId': [], u'logprob': -21.589, u'Id': 2048481564}, {u'AA': [{u'AuId': 2160031270, u'AfId': 37461747}, {u'AuId': 2108171435, u'AfId': 47720641}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 2216097749}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 1920167608}], u'RId': [], u'logprob': -21.975, u'Id': 2017318430}, {u'AA': [{u'AuId': 2015905265}, {u'AuId': 2291831693}, {u'AuId': 2088130700}, {u'AuId': 2273736245}, {u'AuId': 2164469288}, {u'AuId': 2216097749}, {u'AuId': 1986829164}, {u'AuId': 2145963980}, {u'AuId': 1920167608}], u'F': [{u'FId': 186187911}, {u'FId': 56318395}, {u'FId': 553089730}, {u'FId': 14053116}, {u'FId': 148869448}, {u'FId': 120665830}, {u'FId': 121332964}], u'J': {u'JId': 183492911}, u'RId': [], u'logprob': -22.004, u'Id': 2067477861}, {u'AA': [{u'AuId': 2331045479, u'AfId': 592451}, {u'AuId': 2273736245, u'AfId': 592451}, {u'AuId': 2311122994, u'AfId': 592451}, {u'AuId': 2197551322}, {u'AuId': 2260427693}], u'F': [{u'FId': 90842384}, {u'FId': 32909587}, {u'FId': 62520636}, {u'FId': 121332964}], u'J': {u'JId': 183492911}, u'RId': [], u'logprob': -22.116, u'Id': 2046860686}, {u'AA': [{u'AuId': 2273736245, u'AfId': 592451}, {u'AuId': 2253378402, u'AfId': 592451}, {u'AuId': 2256138033, u'AfId': 592451}, {u'AuId': 2311122994, u'AfId': 592451}], u'RId': [], u'logprob': -22.185, u'Id': 1996704434}, {u'AA': [{u'AuId': 2273736245, u'AfId': 592451}, {u'AuId': 2311122994, u'AfId': 592451}], u'RId': [], u'logprob': -22.455, u'Id': 1991518848}, {u'AA': [{u'AuId': 2311122994}, {u'AuId': 2273736245}, {u'AuId': 2200796425}], u'RId': [], u'logprob': -22.938, u'Id': 2272756406}, {u'AA': [{u'AuId': 2311122994}, {u'AuId': 2273736245}, {u'AuId': 2200796425}], u'RId': [], u'logprob': -22.938, u'Id': 1928727717}]} +{u'expr': u'Id = 2094437628', u'entities': [{u'RId': [2123605247, 1561900454, 2052566608, 2038237598, 2037354580, 2074943171, 2044543075, 2075206831, 1626513324, 2021179200, 2031305523, 2069275401, 2006842594, 1506720323, 2076857869, 2010070400, 2141017103, 2009981131, 1988551400, 2137985849, 2148092984, 2046612692, 2039366639, 2039109187], u'logprob': -15.369}]} +{u'expr': u'Id = 2088397685', u'entities': [{u'RId': [], u'logprob': -19.957}]} +{u'expr': u'Id = 2054283902', u'entities': [{u'RId': [], u'logprob': -20.47}]} +{u'expr': u'Id = 2021067283', u'entities': [{u'RId': [], u'logprob': -20.494}]} +{u'expr': u'Id = 2136111777', u'entities': [{u'RId': [2123605247, 2062485439, 2094437628, 1561900454, 2158848123, 2049106847, 2037479635, 2074943171, 2044543075, 2038980827, 2039501915, 2168172378, 2021179200, 2031305523, 2033239757, 2034732966, 2076857869, 2010070400, 2009981131, 1988551400, 2094071061, 1964539248, 2039366639, 2043388894, 2032427157, 1978024845, 2007826279, 2005300555, 2069445401, 2121890284], u'logprob': -20.595}]} +{u'expr': u'Id = 2067111928', u'entities': [{u'RId': [], u'logprob': -21.02}]} +{u'expr': u'Id = 2086923594', u'entities': [{u'RId': [], u'logprob': -21.19}]} +{u'expr': u'Id = 2033935581', u'entities': [{u'RId': [], u'logprob': -21.196}]} +{u'expr': u'Id = 2053077389', u'entities': [{u'RId': [], u'logprob': -21.344}]} +{u'expr': u'Id = 2003918905', u'entities': [{u'RId': [], u'logprob': -21.559}]} +{u'expr': u'Id = 2048481564', u'entities': [{u'RId': [], u'logprob': -21.589}]} +{u'expr': u'Id = 2017318430', u'entities': [{u'RId': [], u'logprob': -21.975}]} +{u'expr': u'Id = 2067477861', u'entities': [{u'RId': [], u'logprob': -22.004}]} +{u'expr': u'Id = 2046860686', u'entities': [{u'RId': [], u'logprob': -22.116}]} +{u'expr': u'Id = 1996704434', u'entities': [{u'RId': [], u'logprob': -22.185}]} +{u'expr': u'Id = 1991518848', u'entities': [{u'RId': [], u'logprob': -22.455}]} +{u'expr': u'Id = 2272756406', u'entities': [{u'RId': [], u'logprob': -22.938}]} +{u'expr': u'Id = 1928727717', u'entities': [{u'RId': [], u'logprob': -22.938}]} +[[2273736245, 2094437628], [2273736245, 2094437628, 124657808, 2094437628], [2273736245, 2094437628, 121332964, 2094437628], [2273736245, 2094437628, 2273736245, 2094437628], [2273736245, 2094437628, 2311122994, 2094437628], [2273736245, 2094437628, 3880285, 2094437628], [2273736245, 2088397685, 124657808, 2094437628], [2273736245, 2088397685, 121332964, 2094437628], [2273736245, 2088397685, 2273736245, 2094437628], [2273736245, 2054283902, 124657808, 2094437628], [2273736245, 2054283902, 2273736245, 2094437628], [2273736245, 2021067283, 2273736245, 2094437628], [2273736245, 2021067283, 2311122994, 2094437628], [2273736245, 2067111928, 121332964, 2094437628], [2273736245, 2067111928, 2273736245, 2094437628], [2273736245, 2033935581, 121332964, 2094437628], [2273736245, 2033935581, 2273736245, 2094437628], [2273736245, 2067477861, 121332964, 2094437628], [2273736245, 2067477861, 2273736245, 2094437628], [2273736245, 2046860686, 121332964, 2094437628], [2273736245, 2046860686, 2273736245, 2094437628], [2273736245, 2046860686, 2311122994, 2094437628], [2273736245, 165450437, 2273736245, 2094437628], [2273736245, 165450437, 2311122994, 2094437628], [2273736245, 2136111777, 2094437628]] +1200 diff --git a/appdistribute.py b/appdistribute.py new file mode 100755 index 0000000..10b4e70 --- /dev/null +++ b/appdistribute.py @@ -0,0 +1,858 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web,time +import httplib, urllib, base64 +import json + +urls=( + '/bof333?(.+)','get_user', + '/paper?(.+)','get_paper' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + #'count': '100000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + #'count': '100000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + #'count': '100000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError,IndexError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError,IndexError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError,IndexError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + if rid in Id3: + result.append([deinput[0],Reid,rid,deinput[1]]) + + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId2: + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "3th api > 150 s" + return + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError,IndexError): + pass + for x in AfId3: + if x in AfId1: + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '10000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError,IndexError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + if rid4 in Id1: + result.append([deinput[0],rid,rid4,deinput[1]]) + +def auidid4api(Aid,deinput,Id3): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError,IndexError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + if rid in Id3: + result.append([deinput[0],Aid,rid,deinput[1]]) + +def auidid5api(auid2,deinput,AfId1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 135: + print "5th api > 150 s" + return + exp3 = "Composite(AA.AuId = %d )" % auid2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data6 = json.loads(data) + conn.close() + AfId2=[] + for i3 in data6["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == auid2["AuId"]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError,IndexError): + pass + for x in AfId2: + if x in AfId1: + result.append([deinput[0],auid2["AuId"],x,deinput[1]]) + +def auau3api(aaid1,deinput,Id2): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "data1 > 100 s" + return + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError,IndexError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + if x in Id2: + result.append([deinput[0],aaid1,x,deinput[1]]) + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + params = urllib.urlencode({ + 'expr': "Composite(AA.AuN='"+input_data.id1+"')", + 'offset': '0', + 'count': '10', + 'attributes': 'AA.AuId,AA.AuN', + #'attributes': 'Id,AA.AfId,AA.AuId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params) + response = conn.getresponse() + data = response.read() + data6 = json.loads(data) + print(data) + conn.close() + AuId1=data6["entities"][0]["AA"] + for tmp in AuId1: + if tmp["AuN"]==input_data.id1: + input1 = tmp["AuId"]; + break; + + + params = urllib.urlencode({ + 'expr': "Composite(AA.AuN='"+input_data.id2+"')", + 'offset': '0', + 'count': '10', + 'attributes': 'AA.AuId,AA.AuN', + #'attributes': 'Id,AA.AfId,AA.AuId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params) + response = conn.getresponse() + data = response.read() + data7 = json.loads(data) + print(data) + conn.close() + AuId2=data7["entities"][0]["AA"] + for tmp in AuId2: + if tmp["AuN"]==input_data.id2: + input2 = tmp["AuId"]; + break; + + input=[input1,input2] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + global start_time + start_time = time.clock() + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + #print deresult + print "Total Size: %d " % len(result) + return deresult + +class get_paper: + def GET(self,user): + input_data = web.input() + input = (int)(input_data.id) + exp9 = 'Id = %d' % input + params1 = urllib.urlencode({ + 'expr':exp9, + 'model': 'latest', + 'offset': '0', + #'count': '100000', + 'attributes': 'Ti,Id,Y,CC,RId,F.FId,AA.AfId,AA.AuId,J.JId,C.CId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + print data + return data + + +def idid(deinput,data4,data5,data3): + global result + result=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + print "data1" + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError,IndexError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError,IndexError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError,IndexError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + print "data2" + try: + FId2 = data2["entities"][0]["F"] + except (KeyError,IndexError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError,IndexError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + print "data3" + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + Id3 = [] + FId3 = [] + AuId3 = [] + CJId3 = [] + for i in data3["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "data3 > 120 s" + break + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError,IndexError): + pass + # id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError,IndexError): + pass + # id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError,IndexError): + pass + # id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError,IndexError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError,IndexError): + pass + print "operation" + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1: + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + print "data4" + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + + return result + +def idauid(deinput,data4,data2): + global result + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError,IndexError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError,IndexError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError,IndexError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + print ("Data1") + print data1 + + AfId1=[] + Id1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "data1 > 120 s" + break + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([deinput[0],i1["Id"],deinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([deinput[0],x["FId"],i1["Id"],deinput[1]]) + except (KeyError,IndexError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == deinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError,IndexError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except (KeyError,IndexError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except: + CJId1=[] + + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + global result + result=[] + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError,IndexError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError,IndexError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 100: + print "data1 > 100 s" + break + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError,IndexError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError,IndexError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError,IndexError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError,IndexError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] + # AA.AuId -> AA.AfId -> AA.AuId -> Id + threads=[] + for auid2 in AuId2: + threads.append(gevent.spawn(auidid5api,auid2,deinput,AfId1)) + gevent.joinall(threads) + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for Aid in Id1: + threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3)) + gevent.joinall(threads) + return result + +def auau(deinput,data1,data2): + global result + result=[] + print "XXXXXXXXXXauidauidXXXXXXXXXX" + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + Id2=[] + for id2 in data2["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 100: + print "data2 > 100 s" + break + Id2.append(id2["Id"]) + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError,IndexError): + continue + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 130: + print "data1 > 100 s" + break + Id1.append(i1["Id"]) + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError,IndexError): + continue + + # AA.AuId -> AA.AfId(AA.AfN) -> AA.AuId + for x in AfId1: + if x in AfId2: + params = urllib.urlencode({ + # Request parameters + #'expr': "Composite(AA.AuN='kai chen')", + 'expr': "Composite(AA.AfId = %d)" % x, + #'expr': 'Id = 1970381522', + #'model': 'latest', + 'offset': '0', + #'orderby': 'AA.AfId', + 'count': '10', + 'attributes': 'Id,Ti,RId,F.FId,AA.AfId,AA.AfN,AA.AuN', + #'attributes': 'Id,AA.AfId,AA.AuId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params) + response = conn.getresponse() + data = response.read() + data8 = json.loads(data) + print(data) + conn.close() + AuId8=data8["entities"][0]["AA"] + for tmp in AuId8: + if tmp["AfId"]==x: + AuN8 = tmp["AfN"]; + break; + result.append([deinput[0],AuN8,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + if x in Id2: + params = urllib.urlencode({ + # Request parameters + 'expr': 'Id = %d' % x, + 'offset': '0', + 'attributes': 'Id,Ti,RId,F.FId,AA.AfId,AA.AfN,AA.AuN', + #'attributes': 'Id,AA.AfId,AA.AuId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params) + response = conn.getresponse() + data = response.read() + data9 = json.loads(data) + print(data) + conn.close() + result.append([deinput[0],data9["entities"][0]["Ti"],deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for aaid1 in Id1: + threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2)) + gevent.joinall(threads) + return result + +if __name__ == '__main__': + app.run() diff --git a/appdistribute.pyc b/appdistribute.pyc new file mode 100644 index 0000000..a8f7292 Binary files /dev/null and b/appdistribute.pyc differ diff --git a/auau.py b/auau.py new file mode 100755 index 0000000..37cad89 --- /dev/null +++ b/auau.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import httplib, urllib, base64 +import json + +result=[] +input = [2132060629,307743305] +encodeinput = json.dumps(input) +deinput = json.loads(encodeinput) +#''''''''''''''''''''''''''''''''''[AA.AuId, AA.AuId]''''''''''''''''''''''''''''''''' +#'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' +exp1 = "Composite(AA.AuId = %d )" % deinput[0] +params1 = urllib.urlencode({ + 'expr': exp1, + 'model': 'latest', + 'offset': '0', + 'count': '10000', + 'attributes': 'Id,AA.AfId,AA.AuId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', +}) +conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') +conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) +response = conn.getresponse() +data = response.read() +data1 = json.loads(data) +conn.close() +#'''''''''''''''''''''''''2nd API''''''''''''''''''''''''''''''''' +exp2 = "Composite(AA.AuId = %d )" % deinput[1] +params1 = urllib.urlencode({ + 'expr':exp2, + 'count': '1000', + 'model': 'latest', + 'attributes': 'Id,AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', +}) +conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') +conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) +response = conn.getresponse() +data = response.read() +data2 = json.loads(data) +conn.close() + +#'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' +AfId2=[] +for id2 in data2["entities"]: + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + continue +Id2=[] +for id2 in data2["entities"]: + if id2["Id"] not in Id2: + Id2.append(id2["Id"]) + +#'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' +#print data1 +Id1=[] +AfId1=[] +for i1 in data1["entities"]: + Id1.append(i1["Id"]) +print Id1 +for i1 in data1["entities"]: + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + continue + + +# AA.AuId -> AA.AfId -> AA.AuId +for x in AfId1: + for y in AfId2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + +# AA.AuId -> Id -> AA.AuId +for x in Id1: + for y in Id2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + +#'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' +for aaid1 in Id1: + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '10000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + for y in Id2: + if x==y: + result.append([deinput[0],aaid1,x,deinput[1]]) + + +deresult = json.dumps(result) +print deresult +print len(deresult) diff --git a/auidid.py b/auidid.py new file mode 100755 index 0000000..1cced3d --- /dev/null +++ b/auidid.py @@ -0,0 +1,167 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import httplib, urllib, base64 +import json + +result=[] +input = [2251253715, 2180737804] +encodeinput = json.dumps(input) +deinput = json.loads(encodeinput) +exp1 = "Composite(AA.AuId = %d )" % deinput[0] +params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '10000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', +}) +conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') +conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) +response = conn.getresponse() +data = response.read() +data1 = json.loads(data) +conn.close() +#print data + +#'''''''''''''''''''''''''2nd API''''''''''''''''''''''''''''''''' +exp2 = 'Id = %d' % deinput[1] +params1 = urllib.urlencode({ + 'expr':exp2, + 'count': '100000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', +}) +conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') +conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) +response = conn.getresponse() +data = response.read() +data2 = json.loads(data) +conn.close() +#print data2 + +#'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' +exp3 = 'RId = %d' % deinput[1] +params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '10000', + 'attributes': 'Id', + 'model': 'latest', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', +}) +conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') +conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) +response = conn.getresponse() +data = response.read() +data3 = json.loads(data) +conn.close() + +#'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' +try: + FId2 = data2["entities"][0]["F"] +except (KeyError): + FId2 = [] +try: + AuId2= data2["entities"][0]["AA"] +except (KeyError): + AuId2=[] +try: + CJId2= data2["entities"][0]["J"]["JId"] +except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + +#'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' +Id1=[] +AfId1=[] +for i1 in data1["entities"]: + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] +# AA.AuId -> AA.AfId -> AA.AuId -> Id +for x in AuId2: + for y in AfId1: + try: + if y==x["AfId"]: + result.append([deinput[0],y,x["AuId"],deinput[1]]) + except(KeyError): + continue + + +#'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' +Id3 = [] +for i3 in data3["entities"]: + Id3.append(i3["Id"]) + +#************************************************************need gevent +#''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' +for Aid in Id1: + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + for tmp in Id3: + if rid == tmp: + result.append([deinput[0],Aid,rid,deinput[1]]) + +deresult = json.dumps(result) +print deresult +print len(result) diff --git a/auidid.txt b/auidid.txt new file mode 100755 index 0000000..06f9600 --- /dev/null +++ b/auidid.txt @@ -0,0 +1,15 @@ +[[2251253715, 2180737804], [2251253715, 2180737804, 2048498903, 2180737804], [2251253715, 2180737804, 2223920688, 2180737804], [2251253715, 2180737804, 949266530, 2180737804], [2251253715, 2180737804, 1783833040, 2180737804], [2251253715, 2180737804, 2251253715, 2180737804], [2251253715, 2180737804, 2108096461, 2180737804], [2251253715, 2180737804, 35927321, 2180737804], [2251253715, 2299839756, 2048498903, 2180737804], [2251253715, 2299839756, 949266530, 2180737804], [2251253715, 2299839756, 2223920688, 2180737804], [2251253715, 2299839756, 1783833040, 2180737804], [2251253715, 2299839756, 2251253715, 2180737804], [2251253715, 2299839756, 2108096461, 2180737804]] +Total Size: 14 + +2251253715 +2273736245 + + + + + + + + +2180737804 +2094437628 \ No newline at end of file diff --git a/bof.py b/bof.py new file mode 100755 index 0000000..1fa371f --- /dev/null +++ b/bof.py @@ -0,0 +1,226 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import httplib, urllib, base64 +import json + +result=[] +#input = [2157025439,2139398774] +input = [1970381522,2162351023] +encodeinput = json.dumps(input) +deinput = json.loads(encodeinput) +#''''''''''''''''''''''''''''''''''[id0, id1]''''''''''''''''''''''''''''''''' +#'''''''''''''''1st API'''''''''''''''''''''''' +exp1 = 'Id = %d' % deinput[0] +params1 = urllib.urlencode({ + 'expr':exp1, + 'model': 'latest', + 'offset': '0', + 'count': '10000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', +}) +conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') +conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) +response = conn.getresponse() +data = response.read() +data1 = json.loads(data) +conn.close() + +#'''''''''''''''2nd API'''''''''''''''''''''''' +exp2 = 'Id = %d' % deinput[1] +params1 = urllib.urlencode({ + 'expr':exp2, + 'count': '10000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', +}) +conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') +conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) +response = conn.getresponse() +data = response.read() +data2 = json.loads(data) +conn.close() + +#'''''''''''''''3rd API'''''''''''''''''''''''' +exp3 = 'RId = %d' % deinput[1] +params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '10000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', +}) +conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') +conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) +response = conn.getresponse() +data = response.read() +data3 = json.loads(data) +conn.close() + +#''''''''''''''''''data 1''''''''''''''''''''''''''' +try: + ReId1=data1["entities"][0]["RId"] +except (KeyError): + ReId1 = [] +try: + FId1 = data1["entities"][0]["F"] +except (KeyError): + FId1 = [] +try: + AuId1= data1["entities"][0]["AA"] +except (KeyError): + AuId1=[] +try: + CJId1= data1["entities"][0]["J"]["JId"] +except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + +#''''''''''''''''''data 2''''''''''''''''''''''''''' +try: + FId2 = data2["entities"][0]["F"] +except (KeyError): + FId2 = [] +try: + AuId2= data2["entities"][0]["AA"] +except (KeyError): + AuId2=[] +try: + CJId2= data2["entities"][0]["J"]["JId"] +except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + +#''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w +Id3 = [] +FId3 = [] +AuId3 = [] +CJId3 = [] +for i in data3["entities"]: +# id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + continue +# id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + continue +# id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([[deinput[0],CJId3,i["Id"],deinput[1]]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([[deinput[0],CJId3,i["Id"],deinput[1]]]) + except(KeyError): + continue + +#''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' +#id -> id +for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break +#id -> id -> id +'''for Id in Id3: + for Reid in ReId1: + if Reid == Id: + result.append([deinput[0],Reid,deinput[1]])''' +#id -> F.FId -> id +for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) +#id -> AA.AuId -> id +for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) +#id -> C.CId/J.JId -> id +if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + +#''''''''''''''''''''4th API''''''''''''''''''''''''''''' +#id -> id -> XXXXXX -> id ************************************************************need gevent +for Reid in ReId1: + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '10000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + for Id in Id3: + if rid == Id: + result.append([deinput[0],Reid,rid,deinput[1]]) + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +deresult = json.dumps(result) +print deresult +print len(result) diff --git a/calcHistogram.py b/calcHistogram.py new file mode 100755 index 0000000..476028a --- /dev/null +++ b/calcHistogram.py @@ -0,0 +1,22 @@ +import httplib, urllib, base64 + +params = urllib.urlencode({ + # Request parameters + 'expr': "Composite(AA.AuId = 621499171)", + 'model': 'latest', + 'count': '1000000', + 'offset': '0', + 'attributes': 'Ti,Id,Y,CC,RId,F.FId,AA.AfId,AA.AuId,J.JId,C.CId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', +}) + +try: + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/calchistogram?%s" % params) + #conn.request("GET", "/academic/v1.0/evaluate?%s" % params, "{body}") + response = conn.getresponse() + data = response.read() + print(data) + conn.close() +except Exception as e: + print("[Errno {0}] {1}".format(e.errno, e.strerror)) diff --git a/compare.py b/compare.py new file mode 100755 index 0000000..31f5746 --- /dev/null +++ b/compare.py @@ -0,0 +1,136 @@ +import web +import httplib, urllib, base64 +import json + +mydata = [[2088905367, 2033660646], [2088905367, 2159929956, 2033660646], [2088905367, 2069656492, 2159929956, 2033660646], [2088905367, 2033660646, 2159929956, 2033660646], [2088905367, 1274808907, 2159929956, 2033660646], [2088905367, 53811970, 2159929956, 2033660646], [2088905367, 50231774, 2159929956, 2033660646], [2088905367, 529278444, 2159929956, 2033660646], [2088905367, 2131181615, 2033660646], [2088905367, 1274808907, 2131181615, 2033660646], [2088905367, 2033660646, 2131181615, 2033660646], [2088905367, 2069656492, 2131181615, 2033660646], [2088905367, 50231774, 2131181615, 2033660646], [2088905367, 1850231759, 2033660646], [2088905367, 1274808907, 1850231759, 2033660646], [2088905367, 2033660646, 1850231759, 2033660646], [2088905367, 2069656492, 1850231759, 2033660646], [2088905367, 2069656492, 2101328227, 2033660646], [2088905367, 1274808907, 2101328227, 2033660646], [2088905367, 2033660646, 2101328227, 2033660646], [2088905367, 2033660646, 2105947467, 2033660646], [2088905367, 2069656492, 2154282155, 2033660646], [2088905367, 2033660646, 2154282155, 2033660646], [2088905367, 1274808907, 2154282155, 2033660646], [2088905367, 169760540, 2154282155, 2033660646], [2088905367, 2335369236, 2088905367, 2033660646], [2088905367, 2043738800, 2088905367, 2033660646], [2088905367, 2069656492, 2088905367, 2033660646], [2088905367, 2033660646, 2088905367, 2033660646], [2088905367, 1274808907, 2088905367, 2033660646], [2088905367, 53811970, 2088905367, 2033660646], [2088905367, 50231774, 2088905367, 2033660646], [2088905367, 529278444, 2088905367, 2033660646], [2088905367, 105976826, 2088905367, 2033660646], [2088905367, 500300565, 2088905367, 2033660646], [2088905367, 169760540, 2088905367, 2033660646], [2088905367, 86033158, 2088905367, 2033660646], [2088905367, 2033660646, 2122609459, 2033660646], [2088905367, 1274808907, 2122609459, 2033660646], [2088905367, 2069656492, 2122609459, 2033660646], [2088905367, 169760540, 2122609459, 2033660646], [2088905367, 2033660646, 2154600934, 2033660646], [2088905367, 2069656492, 2154600934, 2033660646], [2088905367, 2033660646, 1994140286, 2033660646], [2088905367, 2033660646, 2134737825, 2033660646], [2088905367, 2069656492, 2128929670, 2033660646], [2088905367, 2033660646, 2128929670, 2033660646], [2088905367, 169760540, 2128929670, 2033660646], [2088905367, 2033660646, 2128912989, 2033660646], [2088905367, 2033660646, 2003904948, 2033660646], [2088905367, 2033660646, 1984589372, 2033660646], [2088905367, 2069656492, 1984589372, 2033660646], [2088905367, 2033660646, 2030985472, 2033660646], [2088905367, 529278444, 2030985472, 2033660646], [2088905367, 2069656492, 2137041983, 2033660646], [2088905367, 2033660646, 2137041983, 2033660646], [2088905367, 50231774, 2137041983, 2033660646], [2088905367, 2033660646, 1883022817, 2033660646], [2088905367, 2033660646, 2170961150, 2033660646], [2088905367, 2069656492, 2170961150, 2033660646], [2088905367, 2033660646, 2247633931, 2033660646], [2088905367, 2033660646, 2031787306, 2033660646], [2088905367, 2069656492, 2031787306, 2033660646], [2088905367, 169760540, 2031787306, 2033660646], [2088905367, 2033660646, 2162704817, 2033660646], [2088905367, 2069656492, 2162704817, 2033660646], [2088905367, 2033660646, 1794932940, 2033660646], [2088905367, 2069656492, 1794932940, 2033660646], [2088905367, 2033660646, 1494774730, 2033660646], [2088905367, 2069656492, 1494774730, 2033660646], [2088905367, 2033660646, 192442251, 2033660646], [2088905367, 2069656492, 192442251, 2033660646], [2088905367, 2033660646, 1975363664, 2033660646], [2088905367, 2033660646, 2014570568, 2033660646], [2088905367, 1274808907, 2014570568, 2033660646], [2088905367, 2069656492, 2014570568, 2033660646], [2088905367, 2033660646, 1597272258, 2033660646], [2088905367, 2033660646, 2091443859, 2033660646], [2088905367, 2033660646, 1657756828, 2033660646], [2088905367, 2033660646, 1992812931, 2033660646], [2088905367, 2069656492, 1992812931, 2033660646], [2088905367, 2033660646, 2009967614, 2033660646], [2088905367, 2069656492, 2009967614, 2033660646], [2088905367, 2033660646, 2248364736, 2033660646], [2088905367, 2069656492, 2248364736, 2033660646], [2088905367, 2033660646, 1784346353, 2033660646], [2088905367, 2033660646, 2243488354, 2033660646], [2088905367, 2069656492, 2243488354, 2033660646], [2088905367, 2069656492, 560994262, 2033660646], [2088905367, 2033660646, 560994262, 2033660646], [2088905367, 2033660646, 2176977794, 2033660646], [2088905367, 1274808907, 2176977794, 2033660646], [2088905367, 2069656492, 2176977794, 2033660646], [2088905367, 2033660646, 1523184210, 2033660646], [2088905367, 2069656492, 1523184210, 2033660646], [2088905367, 2033660646, 179882140, 2033660646], [2088905367, 2033660646, 106454395, 2033660646], [2088905367, 2033660646, 1818868717, 2033660646], [2088905367, 1274808907, 1818868717, 2033660646], [2088905367, 2069656492, 1608327386, 2033660646], [2088905367, 2033660646, 1608327386, 2033660646], [2088905367, 2033660646, 1966900795, 2033660646], [2088905367, 2069656492, 1966900795, 2033660646], [2088905367, 2033660646, 2245697195, 2033660646], [2088905367, 2033660646, 2244767582, 2033660646], [2088905367, 2033660646, 2247096175, 2033660646], [2088905367, 2033660646, 1756397654, 2033660646], [2088905367, 2033660646, 1657311722, 2033660646], [2088905367, 2033660646, 2247936397, 2033660646], [2088905367, 2069656492, 97565354, 2033660646], [2088905367, 2069656492, 5124864, 2033660646], [2088905367, 2033660646, 5124864, 2033660646], [2088905367, 2033660646, 142476485, 2033660646], [2088905367, 2033660646, 97565354, 2033660646], [2088905367, 1850231759, 2159929956, 2033660646]] + + +rightdata = [[2088905367,2033660646], +[2088905367,2159929956,2033660646], +[2088905367,2131181615,2033660646], +[2088905367,1850231759,2033660646], +[2088905367,2335369236,2088905367,2033660646], +[2088905367,2054825456,2088905367,2033660646], +[2088905367,2069656492,2088905367,2033660646], +[2088905367,2033660646,2088905367,2033660646], +[2088905367,1274808907,2088905367,2033660646], +[2088905367,86033158,2088905367,2033660646], +[2088905367,53811970,2088905367,2033660646], +[2088905367,50231774,2088905367,2033660646], +[2088905367,529278444,2088905367,2033660646], +[2088905367,105976826,2088905367,2033660646], +[2088905367,500300565,2088905367,2033660646], +[2088905367,169760540,2088905367,2033660646], +[2088905367,2069656492,2159929956,2033660646], +[2088905367,2033660646,2159929956,2033660646], +[2088905367,1274808907,2159929956,2033660646], +[2088905367,1850231759,2159929956,2033660646], +[2088905367,53811970,2159929956,2033660646], +[2088905367,50231774,2159929956,2033660646], +[2088905367,529278444,2159929956,2033660646], +[2088905367,2069656492,2131181615,2033660646], +[2088905367,2033660646,2131181615,2033660646], +[2088905367,1274808907,2131181615,2033660646], +[2088905367,50231774,2131181615,2033660646], +[2088905367,2069656492,1850231759,2033660646], +[2088905367,2033660646,1850231759,2033660646], +[2088905367,1274808907,1850231759,2033660646], +[2088905367,2069656492,5124864,2033660646], +[2088905367,2033660646,5124864,2033660646], +[2088905367,2069656492,2101328227,2033660646], +[2088905367,2033660646,2101328227,2033660646], +[2088905367,1274808907,2101328227,2033660646], +[2088905367,2033660646,2105947467,2033660646], +[2088905367,2033660646,142476485,2033660646], +[2088905367,2069656492,2154282155,2033660646], +[2088905367,2033660646,2154282155,2033660646], +[2088905367,1274808907,2154282155,2033660646], +[2088905367,169760540,2154282155,2033660646], +[2088905367,2069656492,2122609459,2033660646], +[2088905367,2033660646,2122609459,2033660646], +[2088905367,1274808907,2122609459,2033660646], +[2088905367,169760540,2122609459,2033660646], +[2088905367,2069656492,2154600934,2033660646], +[2088905367,2033660646,2154600934,2033660646], +[2088905367,2033660646,1994140286,2033660646], +[2088905367,2033660646,2134737825,2033660646], +[2088905367,2069656492,2128929670,2033660646], +[2088905367,2033660646,2128929670,2033660646], +[2088905367,169760540,2128929670,2033660646], +[2088905367,2033660646,2128912989,2033660646], +[2088905367,2069656492,1984589372,2033660646], +[2088905367,2033660646,1984589372,2033660646], +[2088905367,2033660646,2030985472,2033660646], +[2088905367,529278444,2030985472,2033660646], +[2088905367,2033660646,2003904948,2033660646], +[2088905367,2033660646,1883022817,2033660646], +[2088905367,2069656492,2137041983,2033660646], +[2088905367,2033660646,2137041983,2033660646], +[2088905367,50231774,2137041983,2033660646], +[2088905367,2069656492,2170961150,2033660646], +[2088905367,2033660646,2170961150,2033660646], +[2088905367,2033660646,2247633931,2033660646], +[2088905367,2069656492,2162704817,2033660646], +[2088905367,2033660646,2162704817,2033660646], +[2088905367,2069656492,2031787306,2033660646], +[2088905367,2033660646,2031787306,2033660646], +[2088905367,169760540,2031787306,2033660646], +[2088905367,2069656492,97565354,2033660646], +[2088905367,2033660646,97565354,2033660646], +[2088905367,2069656492,1794932940,2033660646], +[2088905367,2033660646,1794932940,2033660646], +[2088905367,2069656492,1494774730,2033660646], +[2088905367,2033660646,1494774730,2033660646], +[2088905367,2069656492,192442251,2033660646], +[2088905367,2033660646,192442251,2033660646], +[2088905367,2033660646,1975363664,2033660646], +[2088905367,2069656492,2014570568,2033660646], +[2088905367,2033660646,2014570568,2033660646], +[2088905367,1274808907,2014570568,2033660646], +[2088905367,2033660646,2091443859,2033660646], +[2088905367,2033660646,1657756828,2033660646], +[2088905367,2033660646,1597272258,2033660646], +[2088905367,2069656492,1992812931,2033660646], +[2088905367,2033660646,1992812931,2033660646], +[2088905367,2069656492,2009967614,2033660646], +[2088905367,2033660646,2009967614,2033660646], +[2088905367,2069656492,2248364736,2033660646], +[2088905367,2033660646,2248364736,2033660646], +[2088905367,2069656492,2243488354,2033660646], +[2088905367,2033660646,2243488354,2033660646], +[2088905367,2033660646,1784346353,2033660646], +[2088905367,2069656492,560994262,2033660646], +[2088905367,2033660646,560994262,2033660646], +[2088905367,2069656492,1523184210,2033660646], +[2088905367,2033660646,1523184210,2033660646], +[2088905367,2033660646,179882140,2033660646], +[2088905367,2069656492,2176977794,2033660646], +[2088905367,2033660646,2176977794,2033660646], +[2088905367,1274808907,2176977794,2033660646], +[2088905367,2033660646,1818868717,2033660646], +[2088905367,1274808907,1818868717,2033660646], +[2088905367,2033660646,106454395,2033660646], +[2088905367,2033660646,2339875128,2033660646], +[2088905367,2069656492,1966900795,2033660646], +[2088905367,2033660646,1966900795,2033660646], +[2088905367,2033660646,2245697195,2033660646], +[2088905367,2069656492,1608327386,2033660646], +[2088905367,2033660646,1608327386,2033660646], +[2088905367,2033660646,2244767582,2033660646], +[2088905367,2033660646,2247096175,2033660646], +[2088905367,2033660646,1756397654,2033660646], +[2088905367,2033660646,2247936397,2033660646], +[2088905367,2033660646,1657311722,2033660646]] + +print 'My extra data' +for x in mydata: + if x not in rightdata: + print x + +print "other's extra data" +for y in rightdata: + if y not in mydata: + print y + + + \ No newline at end of file diff --git a/evaluate.py b/evaluate.py new file mode 100755 index 0000000..fb72b5f --- /dev/null +++ b/evaluate.py @@ -0,0 +1,23 @@ +import httplib, urllib, base64 +import json +params = urllib.urlencode({ + # Request parameters + #'expr': "Composite(AA.AuN='kai chen')", + 'expr': "Composite(AA.AfId = 63021997)", + #'expr': 'Id = 1970381522', + #'model': 'latest', + 'offset': '0', + #'orderby': 'AA.AfId', + 'count': '10', + 'attributes': 'Id,Ti,RId,F.FId,AA.AfId,AA.AfN,AA.AuN', + #'attributes': 'Id,AA.AfId,AA.AuId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', +}) + +conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') +conn.request("GET", "/academic/v1.0/evaluate?%s" % params) +response = conn.getresponse() +data = response.read() +data1 = json.loads(data) +print(data) +conn.close() diff --git a/final_14_21.py b/final_14_21.py new file mode 100755 index 0000000..0e58b30 --- /dev/null +++ b/final_14_21.py @@ -0,0 +1,750 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web,time +import httplib, urllib, base64 +import json + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + #'count': '100000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + #'count': '100000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 180: + print "4th api > 180 s" + return + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + #'count': '100000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + if rid in Id3: + result.append([deinput[0],Reid,rid,deinput[1]]) + + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId2: + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "3th api > 150 s" + return + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId3: + if x in AfId1: + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '10000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + if rid4 in Id1: + result.append([deinput[0],rid,rid4,deinput[1]]) + +def auidid4api(Aid,deinput,Id3): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + if rid in Id3: + result.append([deinput[0],Aid,rid,deinput[1]]) + +def auidid5api(auid2,deinput,AfId1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 135: + print "5th api > 150 s" + return + exp3 = "Composite(AA.AuId = %d )" % auid2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data6 = json.loads(data) + conn.close() + AfId2=[] + for i3 in data6["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == auid2["AuId"]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId2: + if x in AfId1: + result.append([deinput[0],auid2["AuId"],x,deinput[1]]) + +def auau3api(aaid1,deinput,Id2): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "data1 > 100 s" + return + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + if x in Id2: + result.append([deinput[0],aaid1,x,deinput[1]]) + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + global start_time + start_time = time.clock() + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + #print deresult + print "Total Size: %d " % len(result) + return deresult + +def idid(deinput,data4,data5,data3): + global result + result=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + print "data1" + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + print "data2" + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + print "data3" + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + Id3 = [] + FId3 = [] + AuId3 = [] + CJId3 = [] + for i in data3["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "data3 > 150 s" + break + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError): + pass + # id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + pass + # id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + pass + # id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + pass + print "operation" + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1: + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + print "data4" + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + + return result + +def idauid(deinput,data4,data2): + global result + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + print ("Data1") + print data1 + + AfId1=[] + Id1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "data1 > 150 s" + break + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([deinput[0],i1["Id"],deinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([deinput[0],x["FId"],i1["Id"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == deinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except: + CJId1=[] + + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + global result + result=[] + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 100: + print "data1 > 100 s" + break + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] + # AA.AuId -> AA.AfId -> AA.AuId -> Id + threads=[] + for auid2 in AuId2: + threads.append(gevent.spawn(auidid5api,auid2,deinput,AfId1)) + gevent.joinall(threads) + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for Aid in Id1: + threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3)) + gevent.joinall(threads) + return result + +def auau(deinput,data1,data2): + global result + result=[] + print "XXXXXXXXXXauidauidXXXXXXXXXX" + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + Id2=[] + for id2 in data2["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 100: + print "data2 > 100 s" + break + Id2.append(id2["Id"]) + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + continue + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 130: + print "data1 > 100 s" + break + Id1.append(i1["Id"]) + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + continue + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + if x in AfId2: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + if x in Id2: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for aaid1 in Id1: + threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2)) + gevent.joinall(threads) + return result + +if __name__ == '__main__': + app.run() diff --git a/final_14_22.py b/final_14_22.py new file mode 100755 index 0000000..9602306 --- /dev/null +++ b/final_14_22.py @@ -0,0 +1,750 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web,time +import httplib, urllib, base64 +import json + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + #'count': '100000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + #'count': '100000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + #'count': '100000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + if rid in Id3: + result.append([deinput[0],Reid,rid,deinput[1]]) + + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId2: + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "3th api > 150 s" + return + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId3: + if x in AfId1: + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '10000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + if rid4 in Id1: + result.append([deinput[0],rid,rid4,deinput[1]]) + +def auidid4api(Aid,deinput,Id3): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + if rid in Id3: + result.append([deinput[0],Aid,rid,deinput[1]]) + +def auidid5api(auid2,deinput,AfId1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 135: + print "5th api > 150 s" + return + exp3 = "Composite(AA.AuId = %d )" % auid2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data6 = json.loads(data) + conn.close() + AfId2=[] + for i3 in data6["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == auid2["AuId"]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId2: + if x in AfId1: + result.append([deinput[0],auid2["AuId"],x,deinput[1]]) + +def auau3api(aaid1,deinput,Id2): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "data1 > 100 s" + return + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + if x in Id2: + result.append([deinput[0],aaid1,x,deinput[1]]) + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + global start_time + start_time = time.clock() + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + #print deresult + print "Total Size: %d " % len(result) + return deresult + +def idid(deinput,data4,data5,data3): + global result + result=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + print "data1" + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + print "data2" + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + print "data3" + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + Id3 = [] + FId3 = [] + AuId3 = [] + CJId3 = [] + for i in data3["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "data3 > 120 s" + break + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError): + pass + # id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + pass + # id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + pass + # id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + pass + print "operation" + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1: + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + print "data4" + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + + return result + +def idauid(deinput,data4,data2): + global result + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + print ("Data1") + print data1 + + AfId1=[] + Id1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "data1 > 120 s" + break + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([deinput[0],i1["Id"],deinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([deinput[0],x["FId"],i1["Id"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == deinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except: + CJId1=[] + + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + global result + result=[] + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 100: + print "data1 > 100 s" + break + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] + # AA.AuId -> AA.AfId -> AA.AuId -> Id + threads=[] + for auid2 in AuId2: + threads.append(gevent.spawn(auidid5api,auid2,deinput,AfId1)) + gevent.joinall(threads) + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for Aid in Id1: + threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3)) + gevent.joinall(threads) + return result + +def auau(deinput,data1,data2): + global result + result=[] + print "XXXXXXXXXXauidauidXXXXXXXXXX" + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + Id2=[] + for id2 in data2["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 100: + print "data2 > 100 s" + break + Id2.append(id2["Id"]) + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + continue + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 130: + print "data1 > 100 s" + break + Id1.append(i1["Id"]) + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + continue + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + if x in AfId2: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + if x in Id2: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for aaid1 in Id1: + threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2)) + gevent.joinall(threads) + return result + +if __name__ == '__main__': + app.run() diff --git a/final_14_22.pyc b/final_14_22.pyc new file mode 100644 index 0000000..0c11874 Binary files /dev/null and b/final_14_22.pyc differ diff --git a/final_15_13.py b/final_15_13.py new file mode 100755 index 0000000..933409d --- /dev/null +++ b/final_15_13.py @@ -0,0 +1,750 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web,time +import httplib, urllib, base64 +import json + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + #'count': '100000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + #'count': '100000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + #'count': '100000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError,IndexError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError,IndexError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError,IndexError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + if rid in Id3: + result.append([deinput[0],Reid,rid,deinput[1]]) + + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId2: + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "3th api > 150 s" + return + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError,IndexError): + pass + for x in AfId3: + if x in AfId1: + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '10000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError,IndexError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + if rid4 in Id1: + result.append([deinput[0],rid,rid4,deinput[1]]) + +def auidid4api(Aid,deinput,Id3): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError,IndexError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + if rid in Id3: + result.append([deinput[0],Aid,rid,deinput[1]]) + +def auidid5api(auid2,deinput,AfId1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 135: + print "5th api > 150 s" + return + exp3 = "Composite(AA.AuId = %d )" % auid2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data6 = json.loads(data) + conn.close() + AfId2=[] + for i3 in data6["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == auid2["AuId"]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError,IndexError): + pass + for x in AfId2: + if x in AfId1: + result.append([deinput[0],auid2["AuId"],x,deinput[1]]) + +def auau3api(aaid1,deinput,Id2): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "data1 > 100 s" + return + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError,IndexError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + if x in Id2: + result.append([deinput[0],aaid1,x,deinput[1]]) + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + global start_time + start_time = time.clock() + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + #print deresult + print "Total Size: %d " % len(result) + return deresult + +def idid(deinput,data4,data5,data3): + global result + result=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + print "data1" + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError,IndexError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError,IndexError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError,IndexError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + print "data2" + try: + FId2 = data2["entities"][0]["F"] + except (KeyError,IndexError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError,IndexError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + print "data3" + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + Id3 = [] + FId3 = [] + AuId3 = [] + CJId3 = [] + for i in data3["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "data3 > 120 s" + break + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError,IndexError): + pass + # id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError,IndexError): + pass + # id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError,IndexError): + pass + # id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError,IndexError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError,IndexError): + pass + print "operation" + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1: + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + print "data4" + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + + return result + +def idauid(deinput,data4,data2): + global result + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError,IndexError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError,IndexError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError,IndexError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + print ("Data1") + print data1 + + AfId1=[] + Id1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "data1 > 120 s" + break + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([deinput[0],i1["Id"],deinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([deinput[0],x["FId"],i1["Id"],deinput[1]]) + except (KeyError,IndexError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == deinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError,IndexError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except (KeyError,IndexError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except: + CJId1=[] + + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + global result + result=[] + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError,IndexError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError,IndexError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 100: + print "data1 > 100 s" + break + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError,IndexError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError,IndexError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError,IndexError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError,IndexError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] + # AA.AuId -> AA.AfId -> AA.AuId -> Id + threads=[] + for auid2 in AuId2: + threads.append(gevent.spawn(auidid5api,auid2,deinput,AfId1)) + gevent.joinall(threads) + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for Aid in Id1: + threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3)) + gevent.joinall(threads) + return result + +def auau(deinput,data1,data2): + global result + result=[] + print "XXXXXXXXXXauidauidXXXXXXXXXX" + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + Id2=[] + for id2 in data2["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 100: + print "data2 > 100 s" + break + Id2.append(id2["Id"]) + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError,IndexError): + continue + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 130: + print "data1 > 100 s" + break + Id1.append(i1["Id"]) + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError,IndexError): + continue + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + if x in AfId2: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + if x in Id2: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for aaid1 in Id1: + threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2)) + gevent.joinall(threads) + return result + +if __name__ == '__main__': + app.run() diff --git a/final_15_13.pyc b/final_15_13.pyc new file mode 100644 index 0000000..6616d1d Binary files /dev/null and b/final_15_13.pyc differ diff --git a/id-auid.py b/id-auid.py new file mode 100755 index 0000000..bde5d60 --- /dev/null +++ b/id-auid.py @@ -0,0 +1,151 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import httplib, urllib, base64 +import json + +result=[] +input = [2094437628, 2273736245] +encodeinput = json.dumps(input) +deinput = json.loads(encodeinput) +#''''''''''''''''''''''''''''''''''[Id, AA.AuId]''''''''''''''''''''''''''''''''' +#'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' +exp1 = "Composite(AA.AuId = %d )" % deinput[1] +params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '10000', + 'attributes': 'Id,AA.AuId,AA.AfId,F.FId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', +}) +conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') +conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) +response = conn.getresponse() +data = response.read() +data1 = json.loads(data) +conn.close() + +#'''''''''''''''''''''''''2nd API''''''''''''''''''''''''''''''''' +exp2 = 'Id = %d' % deinput[0] +params1 = urllib.urlencode({ + 'expr':exp2, + 'model': 'latest', + 'count': '10000', + 'attributes': 'RId,AA.AuId,AA.AfId,F.FId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', +}) +conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') +conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) +response = conn.getresponse() +data = response.read() +data2 = json.loads(data) +conn.close() + +#'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' +print ("Data 2") +print data2 + +try: + ReId2 = data2["entities"][0]["RId"] +except (KeyError): + ReId2 = [] +try: + FId2 = data2["entities"][0]["F"] +except (KeyError): + FId2 = [] +try: + AuId2 = data2["entities"][0]["AA"] +except (KeyError): + AuId2 = [] +try: + CJId2 = data2["entities"][0]["J"]["JId"] +except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + +for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + +#'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' +print ("Data1") +print data1 + +AfId1=[] +Id1=[] +for i1 in data1["entities"]: + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([deinput[0],i1["Id"],deinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([deinput[0],x["FId"],i1["Id"],deinput[1]]) + except (KeyError): + continue + try: + for tmp in i1["AA"]: + if tmp["AuId"] == deinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + continue + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except: + CJId1=[] + +for tmp in AfId1: + for x in AuId2: + if tmp == x["AfId"]: + # Id -> AA.AuId -> AA.AfId -> AA.AuId (3-hop) + result.append([deinput[0],x["AuId"],tmp,deinput[1]]) + +#************************************************************need gevent +#''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' +for rid in ReId2: + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '10000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + for tmp in Id1: + if rid4 == tmp: + result.append([deinput[0],rid,rid4,deinput[1]]) +print ("Data4") +print data4 + +deresult = json.dumps(result) +print ("Result") +print deresult +#print len(deresult) diff --git a/idid_idauid_auidid_auau - 副本.py b/idid_idauid_auidid_auau - 副本.py new file mode 100755 index 0000000..c5910cf --- /dev/null +++ b/idid_idauid_auidid_auau - 副本.py @@ -0,0 +1,690 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +#import gevent.monkey +#gevent.monkey.patch_socket() +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web +import httplib, urllib, base64 +import json + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + 'count': '100000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + 'count': '100000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + if rid in Id3: + result.append([deinput[0],Reid,rid,deinput[1]]) + #for Id in Id3: + #if rid == Id: + #result.append([deinput[0],Reid,rid,deinput[1]]) + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId3: + if x in AfId1: + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + #for y in AfId1: + #if x == y : + #result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '10000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + if rid4 in Id1: + result.append([deinput[0],rid,rid4,deinput[1]]) + #for tmp in Id1: + #if rid4 == tmp: + #result.append([deinput[0],rid,rid4,deinput[1]]) + +def auidid4api(Aid,deinput,Id3): + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + if rid in Id3: + result.append([deinput[0],Aid,rid,deinput[1]]) + #for tmp in Id3: + #if rid == tmp: + #result.append([deinput[0],Aid,rid,deinput[1]]) + +def auau3api(aaid1,deinput,Id2): + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + if x in Id2: + result.append([deinput[0],aaid1,x,deinput[1]]) + #for y in Id2: + #if x==y: + #result.append([deinput[0],aaid1,x,deinput[1]]) + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + #print deresult + print "Total Size: %d " % len(result) + return deresult + +def idid(deinput,data4,data5,data3): + global result + result=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + print "data1" + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + print "data2" + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + print "data3" + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + Id3 = [] + FId3 = [] + AuId3 = [] + CJId3 = [] + for i in data3["entities"]: + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError): + pass + # id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + pass + # id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + pass + # id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + pass + print "operation" + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + print "data4" + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + return result + +def idauid(deinput,data4,data2): + global result + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + print ("Data1") + print data1 + + AfId1=[] + Id1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([deinput[0],i1["Id"],deinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([deinput[0],x["FId"],i1["Id"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == deinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except: + CJId1=[] + + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + global result + result=[] + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] + # AA.AuId -> AA.AfId -> AA.AuId -> Id + for x in AuId2: + for y in AfId1: + try: + if y==x["AfId"]: + result.append([deinput[0],y,x["AuId"],deinput[1]]) + except(KeyError): + continue + + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for Aid in Id1: + threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3)) + gevent.joinall(threads) + return result + +def auau(deinput,data1,data2): + global result + result=[] + print "XXXXXXXXXXauidauidXXXXXXXXXX" + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + for id2 in data2["entities"]: + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + continue + Id2=[] + for id2 in data2["entities"]: + Id2.append(id2["Id"]) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + print Id1 + for i1 in data1["entities"]: + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + continue + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + if x in AfId2: + result.append([deinput[0],x,deinput[1]]) + #for y in AfId2: + #if x==y: + #result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + if x in Id2: + result.append([deinput[0],x,deinput[1]]) + #for y in Id2: + #if x==y: + #result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for aaid1 in Id1: + threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2)) + gevent.joinall(threads) + return result + +if __name__ == '__main__': + app.run() diff --git a/idid_idauid_auidid_auau.py b/idid_idauid_auidid_auau.py new file mode 100755 index 0000000..933409d --- /dev/null +++ b/idid_idauid_auidid_auau.py @@ -0,0 +1,750 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web,time +import httplib, urllib, base64 +import json + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + #'count': '100000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + #'count': '100000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + #'count': '100000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError,IndexError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError,IndexError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError,IndexError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + if rid in Id3: + result.append([deinput[0],Reid,rid,deinput[1]]) + + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId2: + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "3th api > 150 s" + return + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError,IndexError): + pass + for x in AfId3: + if x in AfId1: + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '10000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError,IndexError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + if rid4 in Id1: + result.append([deinput[0],rid,rid4,deinput[1]]) + +def auidid4api(Aid,deinput,Id3): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError,IndexError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + if rid in Id3: + result.append([deinput[0],Aid,rid,deinput[1]]) + +def auidid5api(auid2,deinput,AfId1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 135: + print "5th api > 150 s" + return + exp3 = "Composite(AA.AuId = %d )" % auid2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data6 = json.loads(data) + conn.close() + AfId2=[] + for i3 in data6["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == auid2["AuId"]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError,IndexError): + pass + for x in AfId2: + if x in AfId1: + result.append([deinput[0],auid2["AuId"],x,deinput[1]]) + +def auau3api(aaid1,deinput,Id2): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "data1 > 100 s" + return + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError,IndexError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + if x in Id2: + result.append([deinput[0],aaid1,x,deinput[1]]) + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + global start_time + start_time = time.clock() + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + #print deresult + print "Total Size: %d " % len(result) + return deresult + +def idid(deinput,data4,data5,data3): + global result + result=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + print "data1" + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError,IndexError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError,IndexError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError,IndexError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + print "data2" + try: + FId2 = data2["entities"][0]["F"] + except (KeyError,IndexError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError,IndexError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + print "data3" + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + Id3 = [] + FId3 = [] + AuId3 = [] + CJId3 = [] + for i in data3["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "data3 > 120 s" + break + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError,IndexError): + pass + # id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError,IndexError): + pass + # id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError,IndexError): + pass + # id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError,IndexError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError,IndexError): + pass + print "operation" + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1: + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + print "data4" + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + + return result + +def idauid(deinput,data4,data2): + global result + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError,IndexError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError,IndexError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError,IndexError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + print ("Data1") + print data1 + + AfId1=[] + Id1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "data1 > 120 s" + break + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([deinput[0],i1["Id"],deinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([deinput[0],x["FId"],i1["Id"],deinput[1]]) + except (KeyError,IndexError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == deinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError,IndexError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except (KeyError,IndexError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except: + CJId1=[] + + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + global result + result=[] + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError,IndexError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError,IndexError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError,IndexError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 100: + print "data1 > 100 s" + break + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError,IndexError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError,IndexError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError,IndexError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError,IndexError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] + # AA.AuId -> AA.AfId -> AA.AuId -> Id + threads=[] + for auid2 in AuId2: + threads.append(gevent.spawn(auidid5api,auid2,deinput,AfId1)) + gevent.joinall(threads) + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for Aid in Id1: + threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3)) + gevent.joinall(threads) + return result + +def auau(deinput,data1,data2): + global result + result=[] + print "XXXXXXXXXXauidauidXXXXXXXXXX" + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + Id2=[] + for id2 in data2["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 100: + print "data2 > 100 s" + break + Id2.append(id2["Id"]) + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError,IndexError): + continue + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 130: + print "data1 > 100 s" + break + Id1.append(i1["Id"]) + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError,IndexError): + continue + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + if x in AfId2: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + if x in Id2: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for aaid1 in Id1: + threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2)) + gevent.joinall(threads) + return result + +if __name__ == '__main__': + app.run() diff --git a/idid_idauid_auidid_auau.pyc b/idid_idauid_auidid_auau.pyc new file mode 100755 index 0000000..4e75669 Binary files /dev/null and b/idid_idauid_auidid_auau.pyc differ diff --git a/interpret.py b/interpret.py new file mode 100755 index 0000000..7ea07bd --- /dev/null +++ b/interpret.py @@ -0,0 +1,22 @@ +import httplib, urllib, base64 + +params = urllib.urlencode({ + # Request parameters + 'query': 'papers by jaime teevan after 2012', + 'complete': '0', + 'count': '10', + 'offset': '0', + 'timeout': '1000', + 'model': 'latest', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', +}) + +try: + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/interpret?%s" % params) + response = conn.getresponse() + data = response.read() + print(data) + conn.close() +except Exception as e: + print("[Errno {0}] {1}".format(e.errno, e.strerror)) diff --git a/pool.py b/pool.py new file mode 100755 index 0000000..5923d70 --- /dev/null +++ b/pool.py @@ -0,0 +1,12 @@ +from multiprocessing import Pool +def f(x): + print x["Id"] + print x["RId"] +def hehe(): + data = {"expr" : "Id = 2153635508","entities" : [{ "logprob":-13.530, "Id":2153635508, "Ti":"libsvm a library for support vector machines", "Y":2011, "CC":7688, "RId":[2060367530, 2109943925, 1576520375, 1512098439, 2172000360, 2087347434, 2124351082, 2104978738, 1618905105, 2132870739, 2157239837, 2161920802, 1510526001, 2056983531, 1480229055, 2151040995, 1621799579, 2153104898, 1543810117, 2137346077, 2141057577, 2047542122, 2097850441, 2140586694, 2164938337, 2137285073, 2103568877, 2138907228, 2145276325, 2096613134, 1556115774, 2110899801, 1564719599, 1775273161, 2039402388, 2100967622, 34176136, 2139526185, 2011741120, 122929263, 2137518678, 2218312210], "AA":[{"AuId":2138800916,"AfId":16733864}, {"AuId":2168176072,"AfId":16733864}] }]} + pool = Pool(processes=4) # start 4 worker processes + pool.map(f, data["entities"]) + pool.close() + pool.join() +if __name__ == '__main__': + hehe() \ No newline at end of file diff --git a/rest.py b/rest.py new file mode 100755 index 0000000..d85db72 --- /dev/null +++ b/rest.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import web + +urls=( + '/users?(.+)','get_user' +) +app = web.application(urls,globals()) + +class get_user: + def GET(self,user): + data = web.input() + return data.id2 +if __name__ == '__main__': + app.run() diff --git a/rest.pyc b/rest.pyc new file mode 100755 index 0000000..4d44262 Binary files /dev/null and b/rest.pyc differ diff --git a/root@45.62.110.239 b/root@45.62.110.239 new file mode 100644 index 0000000..9602306 --- /dev/null +++ b/root@45.62.110.239 @@ -0,0 +1,750 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web,time +import httplib, urllib, base64 +import json + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + #'count': '100000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + #'count': '100000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + #'count': '100000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + if rid in Id3: + result.append([deinput[0],Reid,rid,deinput[1]]) + + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId2: + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "3th api > 150 s" + return + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId3: + if x in AfId1: + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '10000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + if rid4 in Id1: + result.append([deinput[0],rid,rid4,deinput[1]]) + +def auidid4api(Aid,deinput,Id3): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "4th api > 150 s" + return + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + if rid in Id3: + result.append([deinput[0],Aid,rid,deinput[1]]) + +def auidid5api(auid2,deinput,AfId1): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 135: + print "5th api > 150 s" + return + exp3 = "Composite(AA.AuId = %d )" % auid2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data6 = json.loads(data) + conn.close() + AfId2=[] + for i3 in data6["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == auid2["AuId"]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId2: + if x in AfId1: + result.append([deinput[0],auid2["AuId"],x,deinput[1]]) + +def auau3api(aaid1,deinput,Id2): + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 150: + print "data1 > 100 s" + return + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + if x in Id2: + result.append([deinput[0],aaid1,x,deinput[1]]) + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + global start_time + start_time = time.clock() + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + #print deresult + print "Total Size: %d " % len(result) + return deresult + +def idid(deinput,data4,data5,data3): + global result + result=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + print "data1" + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + print "data2" + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + print "data3" + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + Id3 = [] + FId3 = [] + AuId3 = [] + CJId3 = [] + for i in data3["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "data3 > 120 s" + break + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError): + pass + # id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + pass + # id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + pass + # id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + pass + print "operation" + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1: + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + print "data4" + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + + return result + +def idauid(deinput,data4,data2): + global result + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + print ("Data1") + print data1 + + AfId1=[] + Id1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 120: + print "data1 > 120 s" + break + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([deinput[0],i1["Id"],deinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([deinput[0],x["FId"],i1["Id"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == deinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except: + CJId1=[] + + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + global result + result=[] + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 100: + print "data1 > 100 s" + break + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] + # AA.AuId -> AA.AfId -> AA.AuId -> Id + threads=[] + for auid2 in AuId2: + threads.append(gevent.spawn(auidid5api,auid2,deinput,AfId1)) + gevent.joinall(threads) + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for Aid in Id1: + threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3)) + gevent.joinall(threads) + return result + +def auau(deinput,data1,data2): + global result + result=[] + print "XXXXXXXXXXauidauidXXXXXXXXXX" + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + Id2=[] + for id2 in data2["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 100: + print "data2 > 100 s" + break + Id2.append(id2["Id"]) + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + continue + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + now = time.clock() + exe_time = (float)(now - start_time) + if exe_time > 130: + print "data1 > 100 s" + break + Id1.append(i1["Id"]) + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + continue + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + if x in AfId2: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + if x in Id2: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for aaid1 in Id1: + threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2)) + gevent.joinall(threads) + return result + +if __name__ == '__main__': + app.run() diff --git a/test1 - 副本 (2).py b/test1 - 副本 (2).py new file mode 100755 index 0000000..4f7a78e --- /dev/null +++ b/test1 - 副本 (2).py @@ -0,0 +1,708 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +#import gevent.monkey +#gevent.monkey.patch_socket() +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web +import httplib, urllib, base64 +import json +import time +from multiprocessing.dummy import Pool as ThreadPool + + + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '1000000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '1000000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + 'count': '1000000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + for Id in Id3: + if rid == Id: + result.append([deinput[0],Reid,rid,deinput[1]]) + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '1000000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId3: + for y in AfId1: + if x == y : + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + for tmp in Id1: + if rid4 == tmp: + result.append([deinput[0],rid,rid4,deinput[1]]) + +def auidid4api(Aid,deinput,Id3): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + for tmp in Id3: + if rid == tmp: + result.append([deinput[0],Aid,rid,deinput[1]]) + +def auau3api(aaid1,deinput,Id2): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '1000000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + for y in Id2: + if x==y: + result.append([deinput[0],aaid1,x,deinput[1]]) + +def ididfor(i): + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError): + pass +# id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([xxinput[0],tmp["FId"],i["Id"],xxinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + pass +# id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([xxinput[0],tmp["AuId"],i["Id"],xxinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + pass +# id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([xxinput[0],CJId3,i["Id"],xxinput[1]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([xxinput[0],CJId3,i["Id"],xxinput[1]]) + except(KeyError): + pass + +def idauidfor(i1): + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([xxinput[0],i1["Id"],xxinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([xxinput[0],x["AuId"],i1["Id"],xxinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([xxinput[0],x["FId"],i1["Id"],xxinput[1]]) + except (KeyError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == xxinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]]) + except: + CJId1=[] + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + print deresult + print "Total Size: %d " % len(result) + return deresult + + +def idid(deinput,data4,data5,data3): + global result,start_time,xxinput,FId1,AuId1,CJId1,Id3 + start_time = time.clock() + xxinput=deinput + result=[] + Id3=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + pool = ThreadPool(4) + pool.map(ididfor,data3["entities"]) + pool.close() + pool.join() + + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + return result + +def idauid(deinput,data4,data2): + global result,start_time,ReId2,xxinput,AuId2,FId2,CJId2,Id1,AfId1 + Id1=[] + AfId1=[] + start_time = time.clock() + xxinput=deinput + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + pool = ThreadPool(4) + pool.map(idauidfor,data1["entities"]) + pool.close() + pool.join() + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + global result,start_time + result=[] + start_time = time.clock() + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] + # AA.AuId -> AA.AfId -> AA.AuId -> Id + for x in AuId2: + for y in AfId1: + try: + if y==x["AfId"]: + result.append([deinput[0],y,x["AuId"],deinput[1]]) + except(KeyError): + continue + + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for Aid in Id1: + threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3)) + gevent.joinall(threads) + return result + +def auau(deinput,data1,data2): + global result,start_time + result=[] + start_time = time.clock() + print "XXXXXXXXXXauidauidXXXXXXXXXX" + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + for id2 in data2["entities"]: + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + continue + Id2=[] + for id2 in data2["entities"]: + Id2.append(id2["Id"]) + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + print Id1 + for i1 in data1["entities"]: + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + continue + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + for y in AfId2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + for y in Id2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for aaid1 in Id1: + threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2)) + gevent.joinall(threads) + return result + +if __name__ == '__main__': + app.run() diff --git a/test1 - 副本 (3).py b/test1 - 副本 (3).py new file mode 100755 index 0000000..a97b5ee --- /dev/null +++ b/test1 - 副本 (3).py @@ -0,0 +1,713 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +#import gevent.monkey +#gevent.monkey.patch_socket() +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web +import httplib, urllib, base64 +import json +import time +from multiprocessing.dummy import Pool as ThreadPool + + + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '1000000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '1000000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + 'count': '1000000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + for Id in Id3: + if rid == Id: + result.append([deinput[0],Reid,rid,deinput[1]]) + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '1000000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId3: + for y in AfId1: + if x == y : + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + for tmp in Id1: + if rid4 == tmp: + result.append([deinput[0],rid,rid4,deinput[1]]) + +def auidid4api(Aid,deinput,Id3): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + for tmp in Id3: + if rid == tmp: + result.append([deinput[0],Aid,rid,deinput[1]]) + +def auau3api(aaid1,deinput,Id2): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '1000000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + for y in Id2: + if x==y: + result.append([deinput[0],aaid1,x,deinput[1]]) + +def ididfor(i): + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError): + pass +# id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([xxinput[0],tmp["FId"],i["Id"],xxinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + pass +# id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([xxinput[0],tmp["AuId"],i["Id"],xxinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + pass +# id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([xxinput[0],CJId3,i["Id"],xxinput[1]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([xxinput[0],CJId3,i["Id"],xxinput[1]]) + except(KeyError): + pass + +def idauidfor(i1): + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([xxinput[0],i1["Id"],xxinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([xxinput[0],x["AuId"],i1["Id"],xxinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([xxinput[0],x["FId"],i1["Id"],xxinput[1]]) + except (KeyError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == xxinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]]) + except: + CJId1=[] + +def auididfor(i1): + Id1.append(i1["Id"]) + if i1["Id"]==xxinput[1]: + result.append([xxinput[0],xxinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([xxinput[0],i1["Id"],tmp["FId"],xxinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([xxinput[0],i1["Id"],tmp["AuId"],xxinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==xxinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([xxinput[0],i1["Id"],CJId1,xxinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([xxinput[0],i1["Id"],CJId1,xxinput[1]]) + except: + CJId1=[] + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + print deresult + print "Total Size: %d " % len(result) + return deresult + + +def idid(deinput,data4,data5,data3): + global result,start_time,xxinput,FId1,AuId1,CJId1,Id3 + start_time = time.clock() + xxinput=deinput + result=[] + Id3=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + pool = ThreadPool(4) + pool.map(ididfor,data3["entities"]) + pool.close() + pool.join() + + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + return result + +def idauid(deinput,data4,data2): + global result,start_time,ReId2,xxinput,AuId2,FId2,CJId2,Id1,AfId1 + Id1=[] + AfId1=[] + start_time = time.clock() + xxinput=deinput + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + pool = ThreadPool(4) + pool.map(idauidfor,data1["entities"]) + pool.close() + pool.join() + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + global result,start_time,Id1,AfId1,xxinput,FId2,AuId2,CJId2 + result=[] + Id1=[] + AfId1=[] + xxinput = deinput + start_time = time.clock() + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + pool = ThreadPool(4) + pool.map(auididfor,data1["entities"]) + pool.close() + pool.join() + + # AA.AuId -> AA.AfId -> AA.AuId -> Id + for x in AuId2: + for y in AfId1: + try: + if y==x["AfId"]: + result.append([deinput[0],y,x["AuId"],deinput[1]]) + except(KeyError): + continue + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for Aid in Id1: + threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3)) + gevent.joinall(threads) + return result + +def auau(deinput,data1,data2): + global result,start_time + result=[] + start_time = time.clock() + print "XXXXXXXXXXauidauidXXXXXXXXXX" + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + for id2 in data2["entities"]: + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + continue + Id2=[] + for id2 in data2["entities"]: + Id2.append(id2["Id"]) + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + print Id1 + for i1 in data1["entities"]: + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + continue + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + for y in AfId2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + for y in Id2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for aaid1 in Id1: + threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2)) + gevent.joinall(threads) + return result + +if __name__ == '__main__': + app.run() diff --git a/test1 - 副本 (4).py b/test1 - 副本 (4).py new file mode 100755 index 0000000..24d5b77 --- /dev/null +++ b/test1 - 副本 (4).py @@ -0,0 +1,732 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +#import gevent.monkey +#gevent.monkey.patch_socket() +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web +import httplib, urllib, base64 +import json +import time +from multiprocessing.dummy import Pool as ThreadPool + + + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '1000000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '1000000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + 'count': '1000000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + print ">200" + return + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4 = data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + print "Reid" + print Reid + print ReId4 + print "deinput" + print deinput + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + for Id in Id3: + if rid == Id: + result.append([deinput[0],Reid,rid,deinput[1]]) + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '1000000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId3: + for y in AfId1: + if x == y : + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + for tmp in Id1: + if rid4 == tmp: + result.append([deinput[0],rid,rid4,deinput[1]]) + +def auidid4api(Aid,deinput,Id3): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + for tmp in Id3: + if rid == tmp: + result.append([deinput[0],Aid,rid,deinput[1]]) + +def auau3api(aaid1,deinput,Id2): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '1000000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + for y in Id2: + if x==y: + result.append([deinput[0],aaid1,x,deinput[1]]) + +def ididfor(i): + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError): + pass +# id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([xxinput[0],tmp["FId"],i["Id"],xxinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + pass +# id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([xxinput[0],tmp["AuId"],i["Id"],xxinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + pass +# id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([xxinput[0],CJId3,i["Id"],xxinput[1]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([xxinput[0],CJId3,i["Id"],xxinput[1]]) + except(KeyError): + pass + +def idauidfor(i1): + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([xxinput[0],i1["Id"],xxinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([xxinput[0],x["AuId"],i1["Id"],xxinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([xxinput[0],x["FId"],i1["Id"],xxinput[1]]) + except (KeyError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == xxinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]]) + except: + CJId1=[] + +def auididfor(i1): + Id1.append(i1["Id"]) + if i1["Id"]==xxinput[1]: + result.append([xxinput[0],xxinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([xxinput[0],i1["Id"],tmp["FId"],xxinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([xxinput[0],i1["Id"],tmp["AuId"],xxinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==xxinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([xxinput[0],i1["Id"],CJId1,xxinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([xxinput[0],i1["Id"],CJId1,xxinput[1]]) + except: + CJId1=[] + +def auau2for(id2): + Id2.append(id2["Id"]) + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==xxinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + pass + +def auau3for(i1): + Id1.append(i1["Id"]) + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==xxinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + print deresult + print "Total Size: %d " % len(result) + return deresult + + +def idid(deinput,data4,data5,data3): + global result,start_time,xxinput,FId1,AuId1,CJId1,Id3 + start_time = time.clock() + xxinput=deinput + result=[] + Id3=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + pool = ThreadPool(4) + pool.map(ididfor,data3["entities"]) + pool.close() + pool.join() + + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + return result + +def idauid(deinput,data4,data2): + global result,start_time,ReId2,xxinput,AuId2,FId2,CJId2,Id1,AfId1 + Id1=[] + AfId1=[] + start_time = time.clock() + xxinput=deinput + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + pool = ThreadPool(4) + pool.map(idauidfor,data1["entities"]) + pool.close() + pool.join() + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + global result,start_time,Id1,AfId1,xxinput,FId2,AuId2,CJId2 + result=[] + Id1=[] + AfId1=[] + xxinput = deinput + start_time = time.clock() + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + pool = ThreadPool(4) + pool.map(auididfor,data1["entities"]) + pool.close() + pool.join() + + # AA.AuId -> AA.AfId -> AA.AuId -> Id + for x in AuId2: + for y in AfId1: + try: + if y==x["AfId"]: + result.append([deinput[0],y,x["AuId"],deinput[1]]) + except(KeyError): + continue + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for Aid in Id1: + threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3)) + gevent.joinall(threads) + return result + +def auau(deinput,data1,data2): + global result,start_time,AfId2,xxinput,Id2,Id1,AfId1 + result=[] + AfId2=[] + Id2=[] + Id1=[] + AfId1=[] + xxinput = deinput + start_time = time.clock() + print "XXXXXXXXXXauidauidXXXXXXXXXX" + + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + + pool = ThreadPool(4) + pool.map(auau2for,data2["entities"]) + pool.close() + pool.join() + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + pool = ThreadPool(4) + pool.map(auau3for,data1["entities"]) + pool.close() + pool.join() + + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + for y in AfId2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + for y in Id2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for aaid1 in Id1: + threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2)) + gevent.joinall(threads) + return result + +if __name__ == '__main__': + app.run() diff --git a/test1 - 副本.py b/test1 - 副本.py new file mode 100755 index 0000000..37b5b4b --- /dev/null +++ b/test1 - 副本.py @@ -0,0 +1,707 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +#import gevent.monkey +#gevent.monkey.patch_socket() +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web +import httplib, urllib, base64 +import json +import time +from multiprocessing.dummy import Pool as ThreadPool + + + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '1000000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '1000000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + 'count': '1000000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + for Id in Id3: + if rid == Id: + result.append([deinput[0],Reid,rid,deinput[1]]) + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '1000000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId3: + for y in AfId1: + if x == y : + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + for tmp in Id1: + if rid4 == tmp: + result.append([deinput[0],rid,rid4,deinput[1]]) + +def auidid4api(Aid,deinput,Id3): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + for tmp in Id3: + if rid == tmp: + result.append([deinput[0],Aid,rid,deinput[1]]) + +def auau3api(aaid1,deinput,Id2): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '1000000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + for y in Id2: + if x==y: + result.append([deinput[0],aaid1,x,deinput[1]]) + +def ididfor(i): + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError): + pass +# id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([xxinput[0],tmp["FId"],i["Id"],xxinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + pass +# id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([xxinput[0],tmp["AuId"],i["Id"],xxinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + pass +# id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([xxinput[0],CJId3,i["Id"],xxinput[1]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([xxinput[0],CJId3,i["Id"],xxinput[1]]) + except(KeyError): + pass + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + print deresult + print "Total Size: %d " % len(result) + return deresult + + +def idid(deinput,data4,data5,data3): + global result,start_time,xxinput,FId1,AuId1,CJId1,Id3 + start_time = time.clock() + xxinput=deinput + result=[] + Id3=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + + + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + pool = ThreadPool(4) + pool.map(ididfor,data3["entities"]) + pool.close() + pool.join() + + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + return result + +def idauid(deinput,data4,data2): + global result,start_time + start_time = time.clock() + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + print ("Data1") + print data1 + + AfId1=[] + Id1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([deinput[0],i1["Id"],deinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([deinput[0],x["FId"],i1["Id"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == deinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except: + CJId1=[] + + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + global result,start_time + result=[] + start_time = time.clock() + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] + # AA.AuId -> AA.AfId -> AA.AuId -> Id + for x in AuId2: + for y in AfId1: + try: + if y==x["AfId"]: + result.append([deinput[0],y,x["AuId"],deinput[1]]) + except(KeyError): + continue + + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for Aid in Id1: + threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3)) + gevent.joinall(threads) + return result + +def auau(deinput,data1,data2): + global result,start_time + result=[] + start_time = time.clock() + print "XXXXXXXXXXauidauidXXXXXXXXXX" + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + for id2 in data2["entities"]: + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + continue + Id2=[] + for id2 in data2["entities"]: + Id2.append(id2["Id"]) + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + print Id1 + for i1 in data1["entities"]: + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + continue + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + for y in AfId2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + for y in Id2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for aaid1 in Id1: + threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2)) + gevent.joinall(threads) + return result + +if __name__ == '__main__': + app.run() diff --git a/test1 - 副本.pyc b/test1 - 副本.pyc new file mode 100755 index 0000000..adc765b Binary files /dev/null and b/test1 - 副本.pyc differ diff --git a/test1.py b/test1.py new file mode 100755 index 0000000..3ad74a4 --- /dev/null +++ b/test1.py @@ -0,0 +1,756 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +#import gevent.monkey +#gevent.monkey.patch_socket() +from gevent import monkey, sleep +monkey.patch_all() +import gevent,os,sys +import web +import httplib, urllib, base64 +import json +import time +#from multiprocessing.dummy import Pool as ThreadPool +#from multiprocessing import Pool +#import multiprocessing, logging +#logger = multiprocessing.log_to_stderr() +#logger.setLevel(multiprocessing.SUBDEBUG) +#from gevent.pool import Pool +from multiprocessing import Process, Lock +lock = Lock() + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '1000000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '1000000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + 'count': '1000000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + print ">200" + return + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4 = data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + for Id in Id3: + if rid == Id: + result.append([deinput[0],Reid,rid,deinput[1]]) + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '1000000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId3: + for y in AfId1: + if x == y : + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + for tmp in Id1: + if rid4 == tmp: + result.append([deinput[0],rid,rid4,deinput[1]]) + +def auidid4api(Aid,deinput,Id3): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '1000000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + for tmp in Id3: + if rid == tmp: + result.append([deinput[0],Aid,rid,deinput[1]]) + +def auau3api(aaid1,deinput,Id2): + now_time = time.clock() + exe_time = (float)(now_time - start_time) + if exe_time > 200: + return + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '1000000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + for y in Id2: + if x==y: + result.append([deinput[0],aaid1,x,deinput[1]]) + +def ididfor(lock,i): + #lock.acquire() + with lock: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + #lock.release() +# id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + with lock: + result.append([xxinput[0],tmp["FId"],i["Id"],xxinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + pass +# id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + with lock: + result.append([xxinput[0],tmp["AuId"],i["Id"],xxinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + pass +# id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + with lock: + result.append([xxinput[0],CJId3,i["Id"],xxinput[1]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + with lock: + result.append([xxinput[0],CJId3,i["Id"],xxinput[1]]) + except(KeyError): + pass + +def idauidfor(i1): + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([xxinput[0],i1["Id"],xxinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([xxinput[0],x["AuId"],i1["Id"],xxinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([xxinput[0],x["FId"],i1["Id"],xxinput[1]]) + except (KeyError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == xxinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([xxinput[0],CJId2,i1["Id"],xxinput[1]]) + except: + CJId1=[] + +def auididfor(i1): + Id1.append(i1["Id"]) + if i1["Id"]==xxinput[1]: + result.append([xxinput[0],xxinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([xxinput[0],i1["Id"],tmp["FId"],xxinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([xxinput[0],i1["Id"],tmp["AuId"],xxinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==xxinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([xxinput[0],i1["Id"],CJId1,xxinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([xxinput[0],i1["Id"],CJId1,xxinput[1]]) + except: + CJId1=[] + +def auau2for(id2): + Id2.append(id2["Id"]) + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==xxinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + pass + +def auau3for(i1): + Id1.append(i1["Id"]) + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==xxinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + print deresult + print "Total Size: %d " % len(result) + return deresult + + +def idid(deinput,data4,data5,data3): + global result,start_time,xxinput,FId1,AuId1,CJId1,Id3 + start_time = time.clock() + xxinput=deinput + + result=[] + Id3=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + print "before data1" + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + print "before data2" + #''''''''''''''''''data 2''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + print "threads" + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + #p = Pool() + #for i in data3["entities"]: + # p.map(ididfor,i) + #p.map(ididfor,data3["entities"]) + #p.close() + #p.join() + threads = [] + for i in data3["entities"]: + p=Process(target=ididfor,args=(lock,i)) + p.daemon = True + threads.append(p) + for i in range(len(threads)): + threads[i].start() + for j in range(len(threads)): + threads[j].join() + + '''for data in data3["entities"]: + Process(target=ididfor,args=(data,)).start() + print "threads done"''' + print Id3 + '''for i in data3["entities"]: + p=Process(target=ididfor,args=(i,)) + p.start()''' + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + print "before gevent" + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + return result + +def idauid(deinput,data4,data2): + global result,start_time,ReId2,xxinput,AuId2,FId2,CJId2,Id1,AfId1 + Id1=[] + AfId1=[] + start_time = time.clock() + xxinput=deinput + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + pool = ThreadPool(4) + pool.map(idauidfor,data1["entities"]) + pool.close() + pool.join() + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + global result,start_time,Id1,AfId1,xxinput,FId2,AuId2,CJId2 + result=[] + Id1=[] + AfId1=[] + xxinput = deinput + start_time = time.clock() + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + pool = ThreadPool(4) + pool.map(auididfor,data1["entities"]) + pool.close() + pool.join() + + # AA.AuId -> AA.AfId -> AA.AuId -> Id + for x in AuId2: + for y in AfId1: + try: + if y==x["AfId"]: + result.append([deinput[0],y,x["AuId"],deinput[1]]) + except(KeyError): + continue + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for Aid in Id1: + threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3)) + gevent.joinall(threads) + return result + +def auau(deinput,data1,data2): + global result,start_time,AfId2,xxinput,Id2,Id1,AfId1 + result=[] + AfId2=[] + Id2=[] + Id1=[] + AfId1=[] + xxinput = deinput + start_time = time.clock() + print "XXXXXXXXXXauidauidXXXXXXXXXX" + + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + + pool = ThreadPool(4) + pool.map(auau2for,data2["entities"]) + pool.close() + pool.join() + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + pool = ThreadPool(4) + pool.map(auau3for,data1["entities"]) + pool.close() + pool.join() + + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + for y in AfId2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + for y in Id2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for aaid1 in Id1: + threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2)) + gevent.joinall(threads) + return result + +if __name__ == '__main__': + app.run() diff --git a/test1.pyc b/test1.pyc new file mode 100755 index 0000000..23dfa94 Binary files /dev/null and b/test1.pyc differ diff --git a/test1_idid.py b/test1_idid.py new file mode 100755 index 0000000..bd7b8ae --- /dev/null +++ b/test1_idid.py @@ -0,0 +1,713 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +#import gevent.monkey +#gevent.monkey.patch_socket() +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web +import httplib, urllib, base64 +import json + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + 'count': '100000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + 'count': '100000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + for Id in Id3: + if rid == Id: + result.append([deinput[0],Reid,rid,deinput[1]]) + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + print deresult + print "Total Size: %d " % len(result) + return deresult + +def idid(deinput,data4,data5,data3): + global result + result=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + Id3 = [] + FId3 = [] + AuId3 = [] + CJId3 = [] + for i in data3["entities"]: + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError): + pass + # id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + pass + # id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + pass + # id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + pass + + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + + + + + + + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + + + #id -> id -> XXXXXX -> id ************************************************************need gevent + '''for Reid in ReId1: + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + for Id in Id3: + if rid == Id: + result.append([deinput[0],Reid,rid,deinput[1]]) + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]])''' + return result + +def idauid(deinput,data4,data2): + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + print ("Data1") + print data1 + + AfId1=[] + Id1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([deinput[0],i1["Id"],deinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([deinput[0],x["FId"],i1["Id"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == deinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except: + CJId1=[] + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + for author2 in AuId2: + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId3: + for y in AfId1: + if x == y : + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + for rid in ReId2: + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '10000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + for tmp in Id1: + if rid4 == tmp: + result.append([deinput[0],rid,rid4,deinput[1]]) + return result + + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + result=[] + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] + # AA.AuId -> AA.AfId -> AA.AuId -> Id + for x in AuId2: + for y in AfId1: + try: + if y==x["AfId"]: + result.append([deinput[0],y,x["AuId"],deinput[1]]) + except(KeyError): + continue + + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + for Aid in Id1: + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + for tmp in Id3: + if rid == tmp: + result.append([deinput[0],Aid,rid,deinput[1]]) + return result + +def auau(deinput,data1,data2): + result=[] + print "XXXXXXXXXXauidauidXXXXXXXXXX" + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + for id2 in data2["entities"]: + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + continue + Id2=[] + for id2 in data2["entities"]: + Id2.append(id2["Id"]) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + print Id1 + for i1 in data1["entities"]: + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + continue + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + for y in AfId2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + for y in Id2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + for aaid1 in Id1: + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + for y in Id2: + if x==y: + result.append([deinput[0],aaid1,x,deinput[1]]) + return result + +if __name__ == '__main__': + app.run() diff --git a/test1_idid_idauid.py b/test1_idid_idauid.py new file mode 100755 index 0000000..08685e2 --- /dev/null +++ b/test1_idid_idauid.py @@ -0,0 +1,663 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +#import gevent.monkey +#gevent.monkey.patch_socket() +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web +import httplib, urllib, base64 +import json + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + 'count': '100000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + 'count': '100000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + for Id in Id3: + if rid == Id: + result.append([deinput[0],Reid,rid,deinput[1]]) + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId3: + for y in AfId1: + if x == y : + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '10000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + for tmp in Id1: + if rid4 == tmp: + result.append([deinput[0],rid,rid4,deinput[1]]) + + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + print deresult + print "Total Size: %d " % len(result) + return deresult + +def idid(deinput,data4,data5,data3): + global result + result=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + Id3 = [] + FId3 = [] + AuId3 = [] + CJId3 = [] + for i in data3["entities"]: + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError): + pass + # id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + pass + # id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + pass + # id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + pass + + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + return result + +def idauid(deinput,data4,data2): + global result + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + print ("Data1") + print data1 + + AfId1=[] + Id1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([deinput[0],i1["Id"],deinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([deinput[0],x["FId"],i1["Id"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == deinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except: + CJId1=[] + + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + result=[] + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] + # AA.AuId -> AA.AfId -> AA.AuId -> Id + for x in AuId2: + for y in AfId1: + try: + if y==x["AfId"]: + result.append([deinput[0],y,x["AuId"],deinput[1]]) + except(KeyError): + continue + + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + for Aid in Id1: + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + for tmp in Id3: + if rid == tmp: + result.append([deinput[0],Aid,rid,deinput[1]]) + return result + +def auau(deinput,data1,data2): + result=[] + print "XXXXXXXXXXauidauidXXXXXXXXXX" + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + for id2 in data2["entities"]: + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + continue + Id2=[] + for id2 in data2["entities"]: + Id2.append(id2["Id"]) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + print Id1 + for i1 in data1["entities"]: + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + continue + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + for y in AfId2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + for y in Id2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + for aaid1 in Id1: + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + for y in Id2: + if x==y: + result.append([deinput[0],aaid1,x,deinput[1]]) + return result + +if __name__ == '__main__': + app.run() diff --git a/test1_idid_idauid_auidid.py b/test1_idid_idauid_auidid.py new file mode 100755 index 0000000..f6cfe21 --- /dev/null +++ b/test1_idid_idauid_auidid.py @@ -0,0 +1,669 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +#import gevent.monkey +#gevent.monkey.patch_socket() +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web +import httplib, urllib, base64 +import json + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + 'count': '100000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + 'count': '100000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + for Id in Id3: + if rid == Id: + result.append([deinput[0],Reid,rid,deinput[1]]) + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId3: + for y in AfId1: + if x == y : + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '10000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + for tmp in Id1: + if rid4 == tmp: + result.append([deinput[0],rid,rid4,deinput[1]]) + +def auidid4api(Aid,deinput,Id3): + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + for tmp in Id3: + if rid == tmp: + result.append([deinput[0],Aid,rid,deinput[1]]) + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + print deresult + print "Total Size: %d " % len(result) + return deresult + +def idid(deinput,data4,data5,data3): + global result + result=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + Id3 = [] + FId3 = [] + AuId3 = [] + CJId3 = [] + for i in data3["entities"]: + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError): + pass + # id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + pass + # id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + pass + # id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + pass + + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + return result + +def idauid(deinput,data4,data2): + global result + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + print ("Data1") + print data1 + + AfId1=[] + Id1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([deinput[0],i1["Id"],deinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([deinput[0],x["FId"],i1["Id"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == deinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except: + CJId1=[] + + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + global result + result=[] + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] + # AA.AuId -> AA.AfId -> AA.AuId -> Id + for x in AuId2: + for y in AfId1: + try: + if y==x["AfId"]: + result.append([deinput[0],y,x["AuId"],deinput[1]]) + except(KeyError): + continue + + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for Aid in Id1: + threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3)) + gevent.joinall(threads) + return result + +def auau(deinput,data1,data2): + global result + result=[] + print "XXXXXXXXXXauidauidXXXXXXXXXX" + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + for id2 in data2["entities"]: + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + continue + Id2=[] + for id2 in data2["entities"]: + Id2.append(id2["Id"]) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + print Id1 + for i1 in data1["entities"]: + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + continue + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + for y in AfId2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + for y in Id2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + for aaid1 in Id1: + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + for y in Id2: + if x==y: + result.append([deinput[0],aaid1,x,deinput[1]]) + return result + +if __name__ == '__main__': + app.run() diff --git a/test1_idid_idauid_auidid_auau.py b/test1_idid_idauid_auidid_auau.py new file mode 100755 index 0000000..5b3df77 --- /dev/null +++ b/test1_idid_idauid_auidid_auau.py @@ -0,0 +1,675 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +#import gevent.monkey +#gevent.monkey.patch_socket() +from gevent import monkey, sleep +monkey.patch_all() +import gevent +import web +import httplib, urllib, base64 +import json + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) + +result=[] + +def api1(deinput): + global data1 + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data1=json.loads(data) + +def api2(deinput): + global data2 + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + conn.close() + data2=json.loads(data) + +def api4(deinput): + global data4 + exp4 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp4, + 'model': 'latest', + 'offset': '0', + 'count': '100000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + +def api5(deinput): + global data5 + exp5 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp5, + 'count': '100000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data5 = json.loads(data) + conn.close() + +def api3(deinput): + global data3 + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + +def idid4api(Reid,deinput,FId2,AuId2,CJId2,Id3): + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + for Id in Id3: + if rid == Id: + result.append([deinput[0],Reid,rid,deinput[1]]) + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + +def idauid3api(author2,deinput,AfId1): + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId3: + for y in AfId1: + if x == y : + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + +def idauid4api(rid,deinput,Id1): + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '10000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + for tmp in Id1: + if rid4 == tmp: + result.append([deinput[0],rid,rid4,deinput[1]]) + +def auidid4api(Aid,deinput,Id3): + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + for tmp in Id3: + if rid == tmp: + result.append([deinput[0],Aid,rid,deinput[1]]) + +def auau3api(aaid1,deinput,Id2): + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + for y in Id2: + if x==y: + result.append([deinput[0],aaid1,x,deinput[1]]) + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + threads=[] + threads.append(gevent.spawn(api1,deinput)) + threads.append(gevent.spawn(api2,deinput)) + threads.append(gevent.spawn(api3,deinput)) + threads.append(gevent.spawn(api4,deinput)) + threads.append(gevent.spawn(api5,deinput)) + gevent.joinall(threads) + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1,data3,data5) + elif flag == 10: + result=idauid(deinput,data4,data2) + elif flag == 11: + result=idid(deinput,data4,data5,data3) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + print deresult + print "Total Size: %d " % len(result) + return deresult + +def idid(deinput,data4,data5,data3): + global result + result=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + data1 = data4 + data2 = data5 + #''''''''''''''''''data 1''''''''''''''''''''''''''' + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + Id3 = [] + FId3 = [] + AuId3 = [] + CJId3 = [] + for i in data3["entities"]: + try: + if i["Id"] not in Id3: + Id3.append(i["Id"]) + except(KeyError): + pass + # id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + pass + # id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + pass + # id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + pass + + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + threads=[] + for Reid in ReId1: + threads.append(gevent.spawn(idid4api,Reid,deinput,FId2,AuId2,CJId2,Id3)) + gevent.joinall(threads) + return result + +def idauid(deinput,data4,data2): + global result + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + + data1 = data2 + data2 = data4 + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + print ("Data1") + print data1 + + AfId1=[] + Id1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([deinput[0],i1["Id"],deinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([deinput[0],x["FId"],i1["Id"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == deinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except: + CJId1=[] + + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for author2 in AuId2: + threads.append(gevent.spawn(idauid3api,author2,deinput,AfId1)) + gevent.joinall(threads) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for rid in ReId2: + threads.append(gevent.spawn(idauid4api,rid,deinput,Id1)) + gevent.joinall(threads) + return result + + +def auidid(deinput,data1,data3,data5): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + global result + result=[] + print "XXXXXXXXXXauididXXXXXXXXXXX" + data2 = data5 + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] + # AA.AuId -> AA.AfId -> AA.AuId -> Id + for x in AuId2: + for y in AfId1: + try: + if y==x["AfId"]: + result.append([deinput[0],y,x["AuId"],deinput[1]]) + except(KeyError): + continue + + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + threads=[] + for Aid in Id1: + threads.append(gevent.spawn(auidid4api,Aid,deinput,Id3)) + gevent.joinall(threads) + return result + +def auau(deinput,data1,data2): + global result + result=[] + print "XXXXXXXXXXauidauidXXXXXXXXXX" + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + for id2 in data2["entities"]: + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + continue + Id2=[] + for id2 in data2["entities"]: + Id2.append(id2["Id"]) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + print Id1 + for i1 in data1["entities"]: + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + continue + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + for y in AfId2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + for y in Id2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + threads=[] + for aaid1 in Id1: + threads.append(gevent.spawn(auau3api,aaid1,deinput,Id2)) + gevent.joinall(threads) + + return result + +if __name__ == '__main__': + app.run() diff --git a/test1_idid_idauid_auidid_auau.pyc b/test1_idid_idauid_auidid_auau.pyc new file mode 100755 index 0000000..88eff47 Binary files /dev/null and b/test1_idid_idauid_auidid_auau.pyc differ diff --git a/test1副本.py b/test1副本.py new file mode 100755 index 0000000..d441553 --- /dev/null +++ b/test1副本.py @@ -0,0 +1,727 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import web +import httplib, urllib, base64 +import json + +urls=( + '/bof333?(.+)','get_user' +) +app = web.application(urls,globals()) +result=[] + + + +class get_user: + def GET(self,user): + input_data = web.input() + #input = [2157025439,2139398774] + input=[int(input_data.id1),int(input_data.id2)] + encodeinput = json.dumps(input) + deinput = json.loads(encodeinput) + print deinput + exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data1 = json.loads(data) + conn.close() + exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'offset': '0', + 'model': 'latest', + 'count': '100000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data2 = json.loads(data) + conn.close() + flag=0 + try: + print data1["entities"][0]["Id"] + except(KeyError,IndexError): + flag=10;#id1 is Id + try: + print data2["entities"][0]["Id"] + except(KeyError,IndexError): + flag+=1;#id2 is Id + if flag == 0: + result=auau(deinput,data1,data2) + elif flag == 1: + result=auidid(deinput,data1) + elif flag == 10: + result=idauid(deinput,data2) + elif flag == 11: + result=idid(deinput) + else: + print "FLAG : %d " % flag + deresult = json.dumps(result) + print deresult + print "Total Size: %d " % len(result) + return deresult + +def idid(deinput): + #'''''''''''''''1st API'''''''''''''''''''''''' + result=[] + print "XXXXXXXXXXididXXXXXXXXXXX" + exp1 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'model': 'latest', + 'offset': '0', + 'count': '100000', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data1 = json.loads(data) + conn.close() + + #'''''''''''''''2nd API'''''''''''''''''''''''' + exp2 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'count': '100000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data2 = json.loads(data) + conn.close() + + #'''''''''''''''3rd API'''''''''''''''''''''''' + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'model': 'latest', + 'attributes': 'Id,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + #''''''''''''''''''data 1''''''''''''''''''''''''''' + try: + ReId1=data1["entities"][0]["RId"] + except (KeyError): + ReId1 = [] + try: + FId1 = data1["entities"][0]["F"] + except (KeyError): + FId1 = [] + try: + AuId1= data1["entities"][0]["AA"] + except (KeyError): + AuId1=[] + try: + CJId1= data1["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId1= data1["entities"][0]["C"]["CId"] + except: + CJId1=[] + + #''''''''''''''''''data 2''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #''''''''''''''''''data 3'''''''''id->XXXX->id->id''''''''''''''''''maybe big enough > 10w + Id3 = [] + FId3 = [] + AuId3 = [] + CJId3 = [] + for i in data3["entities"]: + # id -> F.FId -> id -> id + try: + FId_data3 = i["F"] + for tmp in FId_data3: + for x in FId1: + if x["FId"]==tmp["FId"]: + result.append([deinput[0],tmp["FId"],i["Id"],deinput[1]]) + #FId3.append(tmp["FId"])# + except(KeyError): + pass + # id -> AA.AuId -> id -> id + try: + AuId_data3=i["AA"] + for tmp in AuId_data3: + for x in AuId1: + if x["AuId"]==tmp["AuId"]: + result.append([deinput[0],tmp["AuId"],i["Id"],deinput[1]]) + #AuId3.append(tmp["AuId"])#'''''''''''''''''''''need optimization + except(KeyError): + pass + # id -> C.CId/J.JId -> id -> id + try: + CJId3=i["J"]["JId"]#'''''''''''''''''''''need optimization + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + try: + CJId3=i["C"]["CId"] + if CJId3==CJId1: + result.append([deinput[0],CJId3,i["Id"],deinput[1]]) + except(KeyError): + pass + + #''''''''''''''''''operation''''''''''1 and 2 hop''''''''''''''''' + #id -> id + for Reid in ReId1: + if deinput[1] == Reid: + result.append([deinput[0],Reid]) + break + #id -> F.FId -> id + for x in FId2: + #print 'x: %d ' % x['FId'] + for y in FId1: + #print y['FId'] + if y['FId']==x['FId']: + result.append([deinput[0],x['FId'],deinput[1]]) + #id -> AA.AuId -> id + for x in AuId2: + for y in AuId1: + if y['AuId']==x['AuId']: + result.append([deinput[0],x['AuId'],deinput[1]]) + #id -> C.CId/J.JId -> id + if CJId1==CJId2: + result.append([deinput[0],CJId1,deinput[1]]) + + #''''''''''''''''''''4th API''''''''''''''''''''''''''''' + #id -> id -> XXXXXX -> id ************************************************************need gevent + for Reid in ReId1: + exp4 = 'Id = %d' % Reid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'model': 'latest', + 'attributes': 'RId,F.FId,AA.AuId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + try: + FId4 = data4["entities"][0]["F"] + except (KeyError): + FId4 = [] + try: + AuId4= data4["entities"][0]["AA"] + except (KeyError): + AuId4=[] + try: + CJId4= data4["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId4= data4["entities"][0]["C"]["CId"] + except: + CJId4=[] + + #id -> id -> id #id -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Reid,deinput[1]]) + for Id in Id3: + if rid == Id: + result.append([deinput[0],Reid,rid,deinput[1]]) + #id -> id -> F.FId -> id + for x in FId2: + for y in FId4: + if y['FId']==x['FId']: + result.append([deinput[0],Reid,x['FId'],deinput[1]]) + #id -> id -> AA.AuId -> id + for x in AuId2: + for y in AuId4: + if y['AuId']==x['AuId']: + result.append([deinput[0],Reid,x['AuId'],deinput[1]]) + #id -> id -> C.CId/J.JId -> id + if CJId4==CJId2: + result.append([deinput[0],Reid,CJId4,deinput[1]]) + return result + +def idauid(deinput,data2): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + result=[] + print "XXXXXXXXXXidauidXXXXXXXXXXX" + '''exp1 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '10000', + 'attributes': 'Id,AA.AuId,AA.AfId,F.FId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data1 = json.loads(data) + conn.close()''' + data1 = data2 + #'''''''''''''''''''''''''2nd API''''''''''''''''''''''''''''''''' + exp2 = 'Id = %d' % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp2, + 'model': 'latest', + 'count': '10000', + 'attributes': 'RId,AA.AuId,AA.AfId,F.FId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data2 = json.loads(data) + conn.close() + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + print ("Data 2") + print data2 + + try: + ReId2 = data2["entities"][0]["RId"] + except (KeyError): + ReId2 = [] + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2 = data2["entities"][0]["AA"] + except (KeyError): + AuId2 = [] + try: + CJId2 = data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2 = data2["entities"][0]["C"]["CId"] + except: + CJId2 =[] + + for tmp in AuId2: + if deinput[1] == tmp["AuId"]: + result.append([deinput[0],deinput[1]]) # Id -> AA.AuId (1-hop) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + print ("Data1") + print data1 + + AfId1=[] + Id1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + for tmp in ReId2: + if i1["Id"] == tmp:# Id -> Id -> AA.AuId (2-hop) + result.append([deinput[0],i1["Id"],deinput[1]]) + for tmp in i1["AA"]: + for x in AuId2: + if x["AuId"] == tmp["AuId"]: + # Id -> AA.AuId -> Id -> AA.AuId (3-hop) (new add~~) + result.append([deinput[0],x["AuId"],i1["Id"],deinput[1]]) + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"] == tmp["FId"]: + # Id -> F.FId -> Id -> AA.AuId (3-hop) + result.append([deinput[0],x["FId"],i1["Id"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in i1["AA"]: + if tmp["AuId"] == deinput[1]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + pass + try: + CJId1 = i1["J"]["JId"] # Id -> C.CId/J.JId -> Id -> AA.AuId (3-hop) + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],CJId2,i1["Id"],deinput[1]]) + except: + CJId1=[] + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + for author2 in AuId2: + exp3 = "Composite(AA.AuId = %d )" % author2["AuId"] + params1 = urllib.urlencode({ + 'expr':exp3, + 'model': 'latest', + 'count': '10000', + 'attributes': 'AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + AfId3=[] + for i3 in data3["entities"]: + try: + for tmp in i3["AA"]: + if tmp["AuId"] == author2["AuId"]: + if tmp["AfId"] not in AfId3: + AfId3.append(tmp["AfId"]) + break + except (KeyError): + pass + for x in AfId3: + for y in AfId1: + if x == y : + result.append([deinput[0],author2["AuId"],x,deinput[1]]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + for rid in ReId2: + exp4 = 'Id = %d' % rid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '10000', + 'model': 'latest', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id -> id + for rid4 in ReId4: + for tmp in Id1: + if rid4 == tmp: + result.append([deinput[0],rid,rid4,deinput[1]]) + return result + + +def auidid(deinput,data1): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + result=[] + print "XXXXXXXXXXauididXXXXXXXXXXX" + '''exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr':exp1, + 'offset': '0', + 'model': 'latest', + 'count': '10000', + 'attributes': 'Id,RId,F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data1 = json.loads(data) + conn.close()''' + #print data + + #'''''''''''''''''''''''''2nd API''''''''''''''''''''''''''''''''' + exp2 = 'Id = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'count': '100000', + 'model': 'latest', + 'attributes': 'F.FId,AA.AuId,AA.AfId,C.CId,J.JId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data2 = json.loads(data) + conn.close() + #print data2 + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + exp3 = 'RId = %d' % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '10000', + 'attributes': 'Id', + 'model': 'latest', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + try: + FId2 = data2["entities"][0]["F"] + except (KeyError): + FId2 = [] + try: + AuId2= data2["entities"][0]["AA"] + except (KeyError): + AuId2=[] + try: + CJId2= data2["entities"][0]["J"]["JId"] + except (KeyError): + try: + CJId2= data2["entities"][0]["C"]["CId"] + except: + CJId2=[] + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + if i1["Id"]==deinput[1]: + result.append([deinput[0],deinput[1]]) # AA.AuId -> Id + try: + FId1 = i1["F"] + for tmp in FId1: + for x in FId2: + if x["FId"]==tmp["FId"]: + # AA.AuId -> Id -> F.FId -> Id + result.append([deinput[0],i1["Id"],tmp["FId"],deinput[1]]) + except (KeyError): + pass + try: + AuId1= i1["AA"] + for tmp in AuId1: + for x in AuId2: + if tmp["AuId"]==x["AuId"]: + # AA.AuId -> Id -> AA.AuId -> Id + result.append([deinput[0],i1["Id"],tmp["AuId"],deinput[1]]) + except (KeyError): + pass + try: + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except(KeyError): + pass + try: + CJId1= i1["J"]["JId"] # AA.AuId -> Id -> C.CId/J.JId -> Id + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except (KeyError): + try: + CJId1= i1["C"]["CId"] + if CJId1 == CJId2: + result.append([deinput[0],i1["Id"],CJId1,deinput[1]]) + except: + CJId1=[] + # AA.AuId -> AA.AfId -> AA.AuId -> Id + for x in AuId2: + for y in AfId1: + try: + if y==x["AfId"]: + result.append([deinput[0],y,x["AuId"],deinput[1]]) + except(KeyError): + continue + + + #'''''''''''''''''''''data 3'''''''''''''''''''''''''''''''' + Id3 = [] + for i3 in data3["entities"]: + Id3.append(i3["Id"]) + + #************************************************************need gevent + #''''''''''''''''''''4th API'''''''''''''''''''''''''''''''''''' + for Aid in Id1: + exp4 = 'Id = %d' % Aid + params1 = urllib.urlencode({ + 'expr':exp4, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data4 = json.loads(data) + conn.close() + #print data4 + try: + ReId4= data4["entities"][0]["RId"] + except (KeyError): + ReId4 = [] + # AA.AuId -> id -> id # AA.AuId -> id -> id -> id + for rid in ReId4: + if deinput[1] == rid: + result.append([deinput[0],Aid,deinput[1]]) + for tmp in Id3: + if rid == tmp: + result.append([deinput[0],Aid,rid,deinput[1]]) + return result + +def auau(deinput,data1,data2): + #'''''''''''''''''''''''''1st API''''''''''''''''''''''''''''''''' + result=[] + print "XXXXXXXXXXauidauidXXXXXXXXXX" + '''exp1 = "Composite(AA.AuId = %d )" % deinput[0] + params1 = urllib.urlencode({ + 'expr': exp1, + 'model': 'latest', + 'offset': '0', + 'count': '10000', + 'attributes': 'Id,AA.AfId,AA.AuId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data1 = json.loads(data) + conn.close()''' + #'''''''''''''''''''''''''2nd API''''''''''''''''''''''''''''''''' + '''exp2 = "Composite(AA.AuId = %d )" % deinput[1] + params1 = urllib.urlencode({ + 'expr':exp2, + 'count': '1000', + 'model': 'latest', + 'attributes': 'Id,AA.AuId,AA.AfId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data2 = json.loads(data) + conn.close()''' + + #'''''''''''''''''''''data 2'''''''''''''''''''''''''''''''' + AfId2=[] + for id2 in data2["entities"]: + try: + AuId2= id2["AA"] + for tmp in AuId2: + if tmp["AuId"]==deinput[1]: + if tmp["AfId"] not in AfId2: + AfId2.append(tmp["AfId"]) + break + except (KeyError): + continue + Id2=[] + for id2 in data2["entities"]: + Id2.append(id2["Id"]) + + #'''''''''''''''''''''data 1'''''''''''''''''''''''''''''''' + #print data1 + Id1=[] + AfId1=[] + for i1 in data1["entities"]: + Id1.append(i1["Id"]) + print Id1 + for i1 in data1["entities"]: + try: + AuId1= i1["AA"] + for tmp in AuId1: + if tmp["AuId"]==deinput[0]: + if tmp["AfId"] not in AfId1: + AfId1.append(tmp["AfId"]) + break + except (KeyError): + continue + + + # AA.AuId -> AA.AfId -> AA.AuId + for x in AfId1: + for y in AfId2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + # AA.AuId -> Id -> AA.AuId + for x in Id1: + for y in Id2: + if x==y: + result.append([deinput[0],x,deinput[1]]) + + #'''''''''''''''''''''''''3rd API''''''''''''''''''''''''''''''''' + for aaid1 in Id1: + exp3 = 'Id = %d' % aaid1 + params1 = urllib.urlencode({ + 'expr':exp3, + 'count': '100000', + 'attributes': 'RId', + 'subscription-key': 'f7cc29509a8443c5b3a5e56b0e38b5a6', + }) + conn = httplib.HTTPSConnection('oxfordhk.azure-api.net') + conn.request("GET", "/academic/v1.0/evaluate?%s" % params1) + response = conn.getresponse() + data = response.read() + data3 = json.loads(data) + conn.close() + try: + ReId3=data3["entities"][0]["RId"] + except (KeyError): + ReId3 = [] + # AA.AuId -> Id -> Id -> AA.AuId + for x in ReId3: + for y in Id2: + if x==y: + result.append([deinput[0],aaid1,x,deinput[1]]) + return result + +if __name__ == '__main__': + app.run() diff --git a/test1副本.pyc b/test1副本.pyc new file mode 100755 index 0000000..e9020cd Binary files /dev/null and b/test1副本.pyc differ