From c06e91fba2ff8d5769a5399199f906624c77e8c3 Mon Sep 17 00:00:00 2001 From: Snobeard Date: Sun, 28 Jan 2018 11:20:13 -0800 Subject: [PATCH 1/7] large array created --- lab-matt/index.js | 45 ++ lab-matt/large-array.js | 1001 ++++++++++++++++++++++++++++++++ lab-matt/sorted-large-array.js | 1001 ++++++++++++++++++++++++++++++++ 3 files changed, 2047 insertions(+) create mode 100644 lab-matt/index.js create mode 100644 lab-matt/large-array.js create mode 100644 lab-matt/sorted-large-array.js diff --git a/lab-matt/index.js b/lab-matt/index.js new file mode 100644 index 0000000..87b6d2e --- /dev/null +++ b/lab-matt/index.js @@ -0,0 +1,45 @@ +// 'use strict'; +// const largeArray = require('./large-array'); +// const sortedLargeArray = require('./sorted-large-array'); + +// let testArray = [5, 1, 8, 3, 9, 230, -1, -53, 2]; +// // let testArray = [0, 1]; +// let sortedArray = [-53, -1, 1, 2, 3, 5, 8, 9, 230]; + +// // console.log(sortedLargeArray); + +// // =========================================================== +// const quickSort = (array) => { +// if (array.length < 2) { +// return; +// } +// let half = Math.floor((array.length - 1) / 2); +// let pivot; + + + +// // if () + +// }; + +// // =========================================================== + + + +// quickSort(testArray); + + +let arr = [2, 3, 5, 2, 1, 6, 2, 5, 5]; +persistOrder(arr); + +console.log(arr); + + + + + +function persistOrder(array) { + array.forEach((each, i, arr) => { + arr[i] = { value: each, priority: i}; + }); +} \ No newline at end of file diff --git a/lab-matt/large-array.js b/lab-matt/large-array.js new file mode 100644 index 0000000..6768f46 --- /dev/null +++ b/lab-matt/large-array.js @@ -0,0 +1,1001 @@ +module.exports = + [21574,5580,11126,41602,84309,67309,52153,90685,82106,70117, + 49147,32892,51148,66048,72465,64192,16227,87298,20189,89938, + 25697,92749,35053,7324,87413,52894,37957,4145,68213,78466, + 2439,66548,34801,13870,58600,84892,3889,70770,10372,25445, + 79623,26684,86068,48092,92127,31534,58298,14527,40034,70803, + 32047,56427,40710,88704,76483,47148,25505,87206,39516,42240, + 98864,70210,29175,84676,24687,25180,61218,25533,56616,61894, + 44300,76144,81052,56072,3596,61278,27891,19227,90909,88465, + 25151,67926,69311,42847,95387,57085,32333,38065,14998,88134, + 45642,50018,76882,19781,16250,83910,40125,74338,21244,12507, + 71797,26143,20208,65751,99236,68049,14379,92341,22709,34957, + 41035,90809,28209,26267,5720,54562,87049,23434,32586,61510, + 87004,64378,63254,15953,39691,85816,32890,99145,73948,33465, + 39588,14184,49804,77071,48766,55815,17500,95089,65054,61866, + 66472,40753,77750,5239,48278,12435,65786,69142,93864,34899, + 67070,31654,13573,32829,12954,35359,42530,40608,88588,3062, + 40847,208,60247,42774,72688,34606,71162,58209,78096,59294, + 37725,25379,56940,82615,24404,84491,5363,11508,22088,35153, + 98335,1859,453,47289,95552,63638,84385,56755,37078,50273, + 82070,34388,59064,78973,6744,22926,79439,95289,59222,1610, + 42259,39773,48153,38141,48311,11484,47779,90316,11347,98371, + 71823,19224,20868,95937,20599,87199,70680,54110,28582,65788, + 36388,12612,19092,8292,95423,48704,7930,83580,79648,92255, + 37237,18128,18357,16869,1598,40935,68214,84471,89425,13216, + 75557,73353,42700,97497,29722,86116,33295,87835,69211,15552, + 2084,39296,58128,61568,84059,80659,74432,21352,42975,62626, + 21859,23066,67053,10630,62762,89207,22790,14428,87907,35478, + 26066,19842,80391,53418,50214,57605,89957,89226,98250,53355, + 24469,38869,17963,55738,73458,25307,31614,87954,85792,80951, + 55945,24976,29812,88975,91508,28640,75139,11552,12952,76368, + 11788,66957,68280,89792,47865,2203,19330,95697,15318,90488, + 72916,60993,64895,27729,93941,27341,1961,56193,32142,38793, + 52360,91529,23366,94358,10615,71977,5137,76894,44180,37322, + 29623,36507,54944,82323,56021,62006,87943,43803,85034,39368, + 35608,95602,14401,68004,36104,81030,29802,42927,51439,93044, + 67871,20397,74685,62161,61903,94612,58730,83327,65520,9337, + 8875,68661,87950,25164,12365,99462,98508,19883,35508,30569, + 44956,22835,17036,59160,17968,66434,58279,27022,8811,58632, + 96963,61174,13761,7260,90394,79721,25368,38949,74313,55215, + 64863,47267,89612,66073,70315,97338,15391,9890,70486,87952, + 97619,35267,82247,49031,39737,73837,38535,56981,27185,10564, + 1733,57347,97694,34863,40649,74038,12499,55296,98539,26842, + 8090,15187,14333,9699,36720,88475,64663,25041,44158,92188, + 73811,38867,94563,67025,90922,21756,26493,96840,46212,8785, + 25488,93270,96364,93585,90114,13223,88449,55962,53489,93232, + 17552,77047,16944,80345,93890,7777,38519,61512,18594,50947, + 59990,78268,99968,20096,51038,39313,85066,3769,11857,87215, + 81650,10362,18842,8836,69487,65036,70690,23881,64245,60705, + 62660,52728,13167,97578,90129,30222,57488,34668,32651,60717, + 6639,60434,89144,90223,76158,39183,72692,14491,67743,12526, + 89455,75760,43506,7055,21495,29999,87013,30773,24158,20105, + 71399,636,27374,24984,81314,6491,8411,69935,53295,28452, + 13285,60420,15691,74222,21707,24914,24610,71812,53274,82298, + 50953,25361,9544,4357,67359,17256,7171,4604,97632,97571, + 47555,59037,64857,46850,26308,82032,44982,98296,79761,1232, + 7312,38397,97926,54502,67561,16053,74010,9639,89179,57154, + 81772,42322,89700,23977,48892,15678,12448,71140,20631,39843, + 35567,30848,74117,74209,69004,99498,38675,43983,57641,58273, + 48900,54001,50135,71468,86639,25908,90875,90425,42273,7241, + 1325,89840,92838,92412,17698,76435,96816,10646,20495,52825, + 87037,6340,54629,14990,32661,97174,32124,7816,37085,99165, + 14760,24585,28686,38357,26301,49797,73391,32348,10088,81093, + 41167,77035,6198,8343,72287,284,4745,75049,66400,84857, + 92569,64269,30290,92704,26839,78602,34955,50959,54129,84599, + 10658,62961,44456,39779,11873,48890,53663,1060,91641,22802, + 66237,4313,94011,95819,63842,51852,20533,38511,17471,31505, + 48762,56202,60117,76956,11578,85746,213,17096,72023,14085, + 62663,48911,85895,82888,32944,25033,12892,86504,22911,41718, + 62522,64632,4274,92963,79659,74012,60999,31305,96714,74739, + 69872,28747,63056,96200,78919,16728,79951,43336,46484,65864, + 13274,28316,77864,4885,98263,45358,66631,21883,48931,70355, + 91990,84763,17490,37401,42716,40271,63683,86451,57180,62524, + 64913,40774,2376,54670,27617,32221,52989,31420,54903,77077, + 18909,48875,17537,99735,60139,13099,62420,68343,80833,75089, + 55215,31807,60990,46506,63161,40896,80793,50368,74957,71766, + 54166,59835,47533,12919,32409,37624,12696,80419,26234,86304, + 71608,21758,32776,55101,7642,7835,74019,88919,88077,63475, + 49233,91873,82165,16262,18361,47941,67302,91191,23524,33810, + 50250,58272,82254,4446,96747,99525,26778,1847,39413,15807, + 57367,75413,72536,45386,70037,30958,58220,29468,80044,62711, + 19387,62617,63343,156,61663,77167,53967,54128,99806,37788, + 60744,71623,45784,23702,22802,19998,34491,48855,29476,5658, + 87997,44753,15016,49128,86746,33678,53929,73438,4776,23085, + 22377,84926,19062,44144,94054,5440,44609,27287,87975,77585, + 23226,953,88546,60257,1546,35945,76888,71816,27467,65730, + 96535,8764,27963,34927,40578,30949,92108,24811,83773,9457, + 45942,40666,3821,46808,54404,3923,23896,89732,28743,16377, + 95469,74173,4562,2142,65993,59616,79397,67820,90796,13204, + 90475,27752,83764,62541,94495,42068,8999,26865,42676,99862, + 51141,77271,39987,38177,15686,83367,82101,41307,22317,82346, + 44231,36501,94988,40237,5393,3703,14200,56776,44073,34248, + 27736,48210,54454,20958,54831,36577,78066,30764,78725,87356, + 2393,41296,61508,93152,43443,58929,63205,91217,23012,43075, + 31935,98593,68670,26182,4468,82008,43620,47581,39661,86239, + 42159,40951,58135,35279,68496,12632,8040,51125,80748,15642, + 56034,41163,38186,69053,97760,89423,9535,91224,3386,29055, + 55932,20333,5566,23159,58453,66435,72015,21365,52505,28909, + 76065,28146,18183,63605,81295,37379,18301,71369,59277,69661, + 53934,56929,81148,32268,18086,6860,19683,91392,70357,29760, + 90611,86954,71270,63561,43778,548,31431,4799,32055,43328, + 4301,36226,52984,46367,40198,37744,12181,59162,45534,62367, + 24282,98894,96385,45757,24245,21402,84954,94963,40567,63393, + 19660,74266,92001,84828,29068,90112,8240,40683,80504,90696, + 46418,61418,51620,19677,96697,19625,5966,88352,97816,36823, + 18732,16417,49837,49027,35633,19695,66346,59728,53375,56855, + 34587,94423,17033,74260,7776,66967,46868,2346,13137,29032, + 458,88764,21152,36142,47418,43380,31891,85187,24203,87577, + 60624,28504,48876,60332,16531,99798,94774,65875,27856,85778, + 35967,9343,1507,41104,73309,12348,74527,63292,89342,34731, + 1882,34099,31894,46783,4994,76649,44701,69000,10769,46201, + 99485,53982,4217,93856,6095,88303,24957,34944,45448,77472, + 43938,72277,39544,8550,25200,54357,85020,49705,54111,21377, + 71262,6500,67881,52967,77652,98654,29080,33008,35898,58739, + 83681,88318,75448,64347,5016,77485,2388,68705,89156,98066, + 41656,86496,74159,35994,85825,36518,27939,75887,25807,45689, + 92407,45326,24714,21620,389,11972,83449,5827,93261,31929, + 66736,70677,5566,47660,63735,22377,74434,66267,85256,51288, + 5857,68658,41569,14842,3279,79302,30587,82075,61015,61756, + 88322,25685,20377,55436,92958,30626,15774,10000,83990,91248, + 96919,84823,40512,30924,45838,95320,55280,18754,80952,11701, + 64534,98634,31837,6818,83282,11181,70455,23150,53471,74638, + 83236,62942,45133,15017,32602,97393,27214,81578,968,68158, + 89500,23033,9022,47330,80516,66600,36074,55963,42934,80144, + 85546,57856,2475,97794,41028,21548,69242,553,39833,7279, + 51846,15744,4711,41211,77852,8249,99906,21351,25823,29987, + 86382,8902,68752,66198,72196,27160,32742,71048,66461,22657, + 56922,85809,76620,31062,45773,58783,63080,21484,90909,78564, + 3127,84761,33431,41075,98437,95319,94573,50578,44143,55706, + 91453,32553,41850,78528,35905,43006,62545,90720,98963,6588, + 32593,93520,51901,7848,32983,11218,16423,86730,65093,31611, + 15748,79661,93457,32484,16190,309,77532,41050,94348,42992, + 69951,53647,12535,3956,43292,28627,41352,75068,75722,47499, + 32058,30186,12133,78664,86974,26490,85425,41471,98563,40835, + 88254,11131,7167,89561,14846,28249,96260,8405,59461,29383, + 78067,62889,37179,94518,5981,88295,24290,17631,85951,75417, + 80625,1877,87360,42018,2937,10735,70060,31456,916,22113, + 41403,52404,48507,65693,34987,77107,55622,95871,21382,42868, + 83852,37115,40171,52336,50158,70024,10506,4121,35880,36120, + 37536,47512,75640,13030,63523,65099,29688,84524,93526,11033, + 24846,24801,12718,47346,38518,81154,12227,91274,91535,32089, + 83500,92663,34401,16817,26994,92288,55229,40522,27498,97609, + 58279,84487,42357,53306,77424,26132,77473,70632,84718,24867, + 85030,19780,64056,12087,15599,96845,25003,45511,87846,96322, + 17653,1331,26317,64811,87034,59604,66345,1128,21950,99420, + 66873,13590,62935,58344,34776,35507,10930,71798,15485,26263, + 46053,97704,82953,53503,40431,12504,97893,7371,59433,3083, + 41858,60834,37780,55800,28807,39901,8503,31301,76113,21489, + 32220,72365,12451,20854,9633,95187,21033,13958,66803,82117, + 12997,77822,18718,7998,62194,4485,661,88950,71685,69966, + 57126,4178,49205,44527,31371,77868,26913,16476,8108,63184, + 57807,69861,89933,38028,58210,91844,52714,98648,64297,14461, + 87476,5914,36606,8383,11669,57563,74374,60360,13694,60355, + 66180,40570,21545,14763,69164,69172,25993,24006,52713,97662, + 18463,63739,90408,312,17172,21542,68749,76041,92988,50339, + 54812,51653,23858,26759,51301,95723,16694,71233,30814,64449, + 40298,59801,48283,12879,16383,32653,75557,46871,37616,48387, + 9935,21751,36124,52490,56615,57193,3023,45661,31324,26532, + 53573,22894,36532,21643,54290,34458,16058,34965,18287,53383, + 3515,67669,32531,66448,19013,51238,33012,83847,24624,61815, + 35912,45000,8642,79622,62044,56478,10500,11343,48821,58006, + 36293,28460,55432,5919,61918,94619,43060,8826,34962,94093, + 64056,52236,14169,77617,67859,10466,17185,34486,29027,52531, + 20144,71752,95241,52272,47799,10906,98678,4283,38895,7721, + 33586,359,81267,17595,87537,23623,48477,64277,4999,79751, + 62473,29649,93247,52566,30344,54751,47529,12192,47717,57783, + 95764,11720,50497,63669,99763,51101,29446,99068,46668,52939, + 94976,88228,14756,47188,18119,20409,83541,52459,31868,68241, + 51263,3289,57433,92469,8083,69007,75022,36064,56459,70976, + 36621,15399,3413,35312,47062,56604,90539,46908,74802,30540, + 89360,23261,30961,29271,73079,42357,17744,71694,53725,54672, + 21048,2269,54577,62088,21828,42694,32108,16511,413,95606, + 32109,60419,61198,61241,87458,62165,17095,35388,67743,35747, + 64333,44881,7907,60955,2047,32127,55051,30661,37482,74587, + 86390,89006,18840,42921,89521,26275,1156,24229,19722,11069, + 64222,20795,45756,73011,42972,36077,98398,81202,90851,22963, + 21739,61936,16011,2470,29513,26903,64696,33001,76254,59952, + 8215,98849,76479,47871,6055,12415,42388,54345,18870,63580, + 59695,93272,20658,45408,58323,90880,96606,20057,47042,18219, + 8767,25440,72760,79217,36458,53114,45676,74087,37086,59169, + 74536,21896,21556,91814,68760,31896,51257,89896,58362,88441, + 11364,45807,35096,34487,58237,50430,57997,51117,47804,3952, + 38842,77204,13629,56796,74300,97498,18195,84449,60831,20498, + 39679,74152,52975,9274,61234,31031,31681,25668,56525,28861, + 31557,37484,62528,86632,44022,33699,48924,49448,88088,50158, + 32922,88539,49744,56081,32824,31111,21484,12194,99410,24548, + 79118,26557,19836,70680,34259,84129,12104,89592,20537,21628, + 30219,72905,26848,87873,96693,65300,20943,52018,40929,19960, + 11936,65272,76405,73364,23863,89804,71687,79000,11218,63689, + 89757,85646,94423,64097,64543,52570,9183,62955,99907,25634, + 54790,41630,18421,79778,62616,71631,70265,23424,70353,12318, + 36795,73961,40876,37298,7093,30842,2779,27863,81718,1151, + 8463,66757,97524,63551,92110,82438,11275,7985,70797,33225, + 50452,75247,70517,6140,57447,57762,68547,71015,14370,42886, + 66756,79233,10816,65586,41033,74864,3181,2026,35605,5200, + 73217,44124,63238,29714,51898,82335,45738,67973,67999,11930, + 43532,88034,81740,17241,3731,73384,37432,73855,95870,77962, + 93215,21624,73494,49258,44969,74305,95624,52036,8139,80099, + 93237,16509,30550,38363,6897,68810,49354,27941,66521,94151, + 64046,44117,1001,57132,58685,21632,30991,57049,95871,40384, + 52961,35726,54086,6031,52228,989,10800,77118,4428,18278, + 11355,54037,98491,65499,6131,77985,41496,4984,70400,22091, + 92601,47084,22091,28435,84136,7433,14441,77965,76470,31225, + 94862,72849,47398,78606,17163,13957,32030,16291,38143,81323, + 43953,14493,15817,59142,23319,38161,86292,16526,99538,21875, + 59125,92705,89837,39487,38000,46523,16032,90113,15915,37473, + 97654,38637,86408,41573,81378,84148,48765,97978,26477,9843, + 63096,58547,38805,67456,75802,83859,16171,1875,68875,79314, + 51030,40193,10964,95750,67478,18341,23462,14095,74988,43459, + 60655,32007,82299,1493,7022,79432,19717,34709,18810,86733, + 92817,40157,33132,31360,63289,88652,67416,35668,88802,60539, + 39747,22049,35456,60008,11797,35383,29176,92495,66619,65564, + 26728,31934,17582,93165,79255,3349,86675,98680,76825,77678, + 81098,13988,27465,51034,30381,4698,15603,41146,18733,69048, + 27294,73027,82847,7028,72769,47660,67270,56461,71948,49539, + 46970,2994,42381,99758,64405,71055,92359,91800,13168,76354, + 82846,62563,12864,78955,29274,26255,1659,48046,23367,66525, + 83599,19465,706,93690,60152,13169,95,58581,5710,45018, + 54616,74501,85062,91298,73412,7256,43370,48610,59950,33066, + 5571,53256,69453,3707,36873,81588,67428,64957,8640,41805, + 20785,65500,27585,91754,76515,18798,35110,79633,35242,41764, + 89463,22395,81726,61021,5490,80114,19140,18371,72229,36871, + 80723,14838,84882,54196,5615,84610,96080,26953,97107,36541, + 31157,98262,94288,50620,7909,99803,41377,13256,30018,17663, + 37572,73500,68957,66051,79910,94759,20775,67147,62847,47691, + 25711,32319,5704,51549,65200,54137,71915,47972,64910,71779, + 66575,78446,50169,40551,86982,40028,51075,61322,36095,41272, + 4865,55018,74071,61641,27766,86231,59933,56825,28749,85466, + 99878,85258,78429,22156,17573,77713,43349,16882,6769,51102, + 7668,89130,52320,36481,35311,12770,4197,81840,22792,52885, + 2927,98908,14194,41370,73379,85692,53168,23514,64642,32884, + 1024,87737,21382,95557,78509,62186,59822,11974,5357,87489, + 23426,46181,2570,22037,16603,64521,17184,90926,52188,5664, + 60638,25093,57015,935,65882,94213,45857,89409,19505,84358, + 24132,534,74796,26546,58505,18411,12309,84467,67925,69946, + 35956,33427,59986,36876,60486,26870,83963,13717,46994,6632, + 47872,45189,32193,11592,14362,26183,6688,30021,18205,3649, + 90306,92027,76852,66153,75031,23696,73319,46526,46722,24676, + 65130,4509,53508,92356,83280,50965,87951,56484,24587,76588, + 23007,29820,76619,15848,94928,95671,40898,8876,10767,38282, + 28226,34032,31789,68648,28796,24407,33439,10514,85298,80938, + 38156,99928,93925,62416,8152,72282,44610,95996,27139,51077, + 94908,76340,66594,59885,96941,62956,58146,83193,79101,34359, + 57652,33654,4822,87041,84977,43374,22276,77615,97790,11447, + 60555,21386,8123,80828,35962,28549,64972,50730,23034,80970, + 17580,43843,11307,61908,73379,39722,79471,80978,92996,53591, + 82555,53542,8706,7328,65890,87661,63335,32652,32417,69792, + 63262,81237,83958,70864,89913,34593,95688,81359,35657,36532, + 96853,79045,10473,68192,53708,13766,5419,29305,17536,38334, + 10459,73092,85615,92476,94724,1082,42294,91969,1200,72032, + 53812,42273,650,60968,80154,65502,66680,94623,89128,15221, + 99708,27185,79161,79377,32388,9158,19478,34575,15445,8710, + 21083,64225,71841,8558,85395,67724,53878,23030,79046,88114, + 15721,82531,66882,3664,42695,28047,34514,60265,70974,97592, + 11305,15206,20968,73834,95017,97593,34110,82542,84594,74824, + 79819,26210,42613,97540,67138,53304,78744,48099,48113,67748, + 60702,82615,72845,19055,36987,4302,61251,81022,86323,87514, + 97791,37079,24357,63519,91546,55843,46538,75026,25529,37959, + 60843,39533,5471,81733,81178,59997,98582,9713,93145,46052, + 82228,9631,50785,47694,54217,41298,36517,75777,65385,47518, + 40968,91465,26303,22730,51666,19006,34183,41250,78348,34447, + 87983,88876,32682,21605,49879,20943,81462,42907,53615,24230, + 98422,64533,54409,19062,16434,45015,39131,10989,59179,83527, + 24460,14544,93276,17928,85267,76863,78205,3357,92720,91116, + 13872,45164,36530,92987,40689,3993,77175,14499,49895,91869, + 66054,85526,9044,5216,86720,41151,40067,72262,19858,68056, + 45299,29538,47934,25520,12502,7368,48328,57672,18002,85354, + 80169,54129,60290,74135,16507,14498,63232,70305,46974,94018, + 19111,27440,24573,88142,25566,8,95238,71573,48309,9632, + 73632,8629,60665,79319,42073,53503,22528,3767,1276,13494, + 62353,29245,45702,60497,74192,56397,43255,68027,86351,40552, + 28206,23633,84708,90457,4906,30436,48765,98684,19502,61904, + 3997,42738,17469,92786,99384,36059,14027,65000,15659,74958, + 54211,97568,1321,75,19057,72696,60786,10505,26991,23920, + 48436,61007,19808,57132,35351,19360,80971,5585,23928,97091, + 88430,54616,51302,75847,35006,81325,4843,463,54739,23252, + 21110,20847,600,77062,92765,75787,30744,54538,6622,72819, + 82105,42157,47379,86815,88149,19432,25947,90766,52867,21322, + 92807,57486,9957,7205,64860,73693,89987,54027,52433,22451, + 27405,7382,64397,732,17849,15805,35323,75776,51910,26992, + 87441,49396,45425,13337,94680,80204,1578,37385,86980,41244, + 92500,53561,95922,86668,25699,79274,57352,89267,61850,60182, + 21335,20108,83826,24882,40535,14673,93686,3470,52456,12833, + 61588,96785,75494,80590,65691,15318,79496,96064,15382,98127, + 90336,11127,45778,94717,5604,34851,8640,11679,99068,59689, + 33493,1859,31597,49791,59082,70611,31261,42598,31765,60258, + 15983,70829,47991,26131,38883,41575,76070,43908,50405,13234, + 79941,29045,27751,88876,35992,6501,61670,61959,7030,1060, + 69537,50570,98803,67010,5966,50737,15172,45326,79059,21489, + 16265,17118,93289,20118,85232,61824,36591,64071,34658,29543, + 85092,40165,16537,66493,14415,80554,93304,2280,20515,10150, + 32220,75554,43435,41378,63571,76493,96886,28579,39494,95421, + 14369,14166,28962,25782,71294,7629,95978,30828,14406,65340, + 23562,87756,24749,47949,470,13190,57509,79883,8791,33470, + 74516,81066,99779,99325,95254,52167,22179,33959,12791,80204, + 88539,12305,26621,27857,9833,83090,59687,15631,72592,22298, + 28550,60756,15307,73583,25462,92572,13483,54938,97471,99604, + 75633,67335,79168,42531,36178,7821,87448,5000,73688,73155, + 35857,72709,10013,11156,87382,87408,40732,86684,99381,51336, + 92436,47545,43373,21410,30117,47607,90688,90803,32668,94982, + 45956,47386,27516,43581,59302,82808,3450,83574,78302,29165, + 76661,36042,3761,61901,82841,3228,16464,66673,37424,39338, + 80780,78740,17707,55674,91889,27679,91335,99497,34184,38483, + 76102,96783,11481,71161,36296,31869,8211,36481,4730,42972, + 30521,2390,14249,59879,8234,6920,71110,89799,97669,6225, + 7095,52741,6878,26001,20139,96258,2765,98111,30711,55466, + 79918,68021,81206,27965,82027,59811,51001,30126,94508,36537, + 76510,93989,18452,26971,82117,54672,8400,61471,94236,24040, + 99810,24722,46452,71903,91811,96553,44052,85079,56617,3221, + 40971,10141,24773,77647,69834,66775,96414,66033,34195,16200, + 18421,12497,87468,51153,21118,60851,40258,24846,29554,95530, + 29741,11572,41779,44917,35627,10983,26488,53799,44482,30512, + 96422,25893,96939,3075,34839,32053,85731,37836,85743,96936, + 50613,42422,52978,66994,79104,75290,75928,71751,52985,74550, + 84784,13890,26886,75942,89430,81647,91137,49337,17379,8303, + 84262,37481,45646,3130,81788,25952,27102,8829,11325,6329, + 84133,90833,74516,33740,23956,56897,41846,99268,86604,64058, + 74680,55578,73448,37439,31282,92731,29295,89532,16494,9889, + 16691,20912,80583,28204,70620,67098,7473,47764,38173,97612, + 77995,74716,52136,8705,98116,37550,83750,23429,21211,8507, + 14779,27526,83299,53033,56768,84105,90438,43626,17613,14457, + 99411,70433,3170,94822,92071,46856,6835,50275,17129,53779, + 60658,36966,10143,16596,57486,20700,32973,94724,4055,16293, + 68633,36290,90136,65491,37461,72213,24144,43520,28412,15019, + 67990,9297,10040,86320,28518,97782,6445,96633,1428,80621, + 90565,31025,60361,61008,92399,37651,10991,53740,72262,3175, + 27166,47397,50772,57446,41831,38260,88569,48637,41325,83266, + 45094,3238,48592,44448,76529,612,6163,50713,47627,28232, + 5012,75706,75708,64424,73323,80628,18285,13072,85923,52276, + 89883,58461,75697,36346,50742,96329,79536,21016,19797,85080, + 93311,31961,89719,41688,29458,72725,85546,90416,41534,99334, + 34873,13995,23229,51615,99015,87802,5774,39799,55679,81865, + 58650,89875,1915,74303,91215,9264,29636,45597,6559,69538, + 89926,13497,63398,51868,68785,58133,10013,91006,4578,39218, + 87948,58949,13459,85221,85268,71969,34232,63710,9442,56370, + 56282,17461,37268,65998,7967,71170,5695,2671,85333,58864, + 51334,60796,24138,64462,70076,56180,73084,91480,80373,15691, + 88885,72956,67637,16441,43473,79068,58633,31371,44480,38999, + 40158,70746,52293,9986,2260,22752,7963,26501,73828,12067, + 58200,51296,13334,89093,77325,75107,67039,32789,15324,50435, + 45602,54093,33928,20818,97186,822,67299,10518,87876,52334, + 59906,48676,915,26208,62007,48370,60734,23050,40971,8707, + 62083,31271,13579,31622,44017,60831,65010,45337,86673,33584, + 86013,30908,79539,42546,53602,14304,9269,12363,1588,51173, + 76682,95993,4878,4875,89655,39109,49664,58440,30289,73350, + 52728,52301,3267,66029,12129,47443,69175,90153,72343,92925, + 69388,31569,6287,55261,86110,36673,48826,13902,72221,37923, + 84502,29515,42529,19825,57141,73573,5002,64255,6466,64936, + 1523,82690,21770,28729,25905,19255,82902,21126,33211,46521, + 96333,52260,87334,35310,97109,12643,97072,28303,13106,6148, + 31501,97007,35457,99170,19789,77636,55628,13381,62397,81076, + 64907,61040,65930,96899,65491,22726,82514,99147,5791,4564, + 60797,70332,34026,32458,10330,89511,99270,40896,3565,87082, + 34333,74854,22560,5646,89275,49679,80910,43217,12219,46552, + 57619,31517,71907,80734,55344,10983,3872,53427,45966,7949, + 63730,90385,71045,74124,33931,8159,50500,90987,4490,59061, + 15552,51703,95773,65283,14184,28739,2842,43388,78048,61855, + 99346,89671,83138,40561,67272,82113,31359,99096,10720,55849, + 20341,42336,53936,24425,90196,97438,83907,904,55705,62596, + 42728,48411,49816,77839,62950,36241,81867,8144,212,782, + 17683,56168,30337,64707,12099,36953,56578,57295,82117,40912, + 56590,6439,8694,44043,99689,29030,83791,74474,87575,89681, + 47408,53096,59219,29727,20778,26116,34584,25432,83355,86463, + 58774,17703,12918,25700,63239,58066,71347,13044,89290,82231, + 22424,91988,24844,3695,16127,94090,35051,50723,91472,8449, + 66626,57970,38629,58797,41913,42924,54759,84697,88020,62417, + 92046,67860,65492,45685,52137,43983,43276,31141,96398,90415, + 16066,32156,9248,14144,52858,32091,91222,65145,25968,22745, + 40978,47466,8900,72578,59170,36970,30204,81380,14543,95862, + 65409,45108,94276,74627,2513,14287,27154,1726,23927,27380, + 8447,64409,8350,12245,83172,27912,82245,74635,18254,63017, + 86108,5835,6610,11313,2926,97959,40546,52157,14351,21227, + 38953,97819,71052,16200,97502,47292,92371,88199,61454,82499, + 66299,16189,20703,75610,87580,17617,95894,89207,89618,44234, + 3739,64385,15396,30845,4713,57410,69639,39627,13071,52754, + 59694,41520,81359,1706,73226,77250,49211,8032,16471,70733, + 1468,79627,358,93079,77009,33972,30854,27038,85781,45405, + 89153,84748,27673,37545,65060,54967,82386,46733,57141,1980, + 87512,3327,55500,51423,2422,98840,69774,67508,17429,97152, + 78221,69429,2813,52469,89853,90983,66591,14481,9488,21418, + 81265,24496,15023,82359,75595,42747,93729,44607,9396,91275, + 75879,37174,4696,83044,9972,34366,814,11237,16945,69192, + 51971,2975,42832,18618,33317,72069,41525,39598,70972,79521, + 39064,29565,57251,75886,91852,88030,46825,95079,97288,57114, + 24165,35602,38393,67932,25500,19489,61663,24972,46685,50215, + 83762,75390,51150,93762,83303,9264,39058,56857,41149,99256, + 93280,24516,91425,19083,56376,92298,53531,16945,11518,68109, + 9172,29905,33661,90295,9562,98204,8091,21247,41170,94203, + 83961,17325,20200,38113,27697,9263,96380,84969,99021,28574, + 29702,48337,92483,44716,69809,77299,1295,29197,88012,80209, + 84566,43061,34752,27482,81983,3267,36259,81252,91328,82933, + 25278,93993,34213,24414,76719,24651,93710,64462,31724,87506, + 85508,34121,4060,91659,74308,48581,30256,55909,94302,48060, + 26742,625,91405,42927,76437,57742,48030,67513,8059,51284, + 83774,5182,66367,2187,25030,12454,20984,38195,79033,3446, + 91596,225,64520,35304,96834,78416,25789,23141,5066,16671, + 92933,57555,4556,71858,36316,10759,97421,91537,70192,73960, + 4701,24799,19988,33218,46101,77608,53227,27854,78975,29253, + 3314,10804,36276,40623,6476,13728,46889,22383,85119,47678, + 65741,81128,13758,69734,72806,28558,33275,68534,27,54049, + 54476,92676,57709,50352,3545,9007,18054,70253,74309,26368, + 18463,83025,49613,29531,92461,5725,48600,60752,47179,2335, + 475,29218,3715,33400,33500,36996,91374,68652,58876,33223, + 45257,81231,93076,8304,23041,37493,98156,39751,24102,51049, + 94620,44143,81639,84073,19334,59936,81592,97166,8107,6618, + 84681,29656,2955,81977,17641,41421,36708,15256,2918,31049, + 85111,66352,33301,11034,79707,10427,72834,89668,48207,48003, + 31330,14762,71671,15816,2965,79776,35603,62956,32630,15323, + 63097,8603,1712,51779,30874,42554,87830,94982,57978,95408, + 74296,83012,57911,24626,3131,82850,87809,29909,72409,85124, + 25345,82764,1355,62839,73201,4050,30406,61450,11855,93228, + 20,43192,66753,82901,838,96084,55003,67414,37177,67899, + 86719,78190,26712,5084,69228,21562,68699,21014,97365,26830, + 10114,38648,93777,46311,62290,76450,20133,99841,91603,40202, + 26778,47728,73065,49889,79508,74996,62121,89328,79126,12019, + 45279,2785,35920,25488,59057,82364,80827,56664,76405,27260, + 62165,60803,10184,65327,296,92865,75452,68832,47355,35719, + 56437,59047,28431,16303,83904,48287,82866,25040,16884,89021, + 54161,65655,34051,11350,27252,4381,82195,32758,27990,85689, + 17546,89763,48012,71814,9296,71207,47159,12779,58679,72441, + 19905,22163,63347,78062,76069,57783,12391,63920,19618,34134, + 27907,23888,63853,64397,28385,21611,70918,38579,43076,20539, + 51110,26444,1781,47760,77727,45760,79160,51444,9978,95346, + 44370,20726,23765,31880,79375,40233,68504,81149,10262,54293, + 55035,1929,83881,22055,60350,25759,705,47392,42365,65800, + 98231,21782,86698,47950,80898,51111,33722,4327,55307,23709, + 15327,35286,89284,26435,28595,44441,20508,44924,44278,48613, + 73378,88178,65335,32224,41893,18194,99796,81999,69720,86764, + 75755,30357,58031,74097,17442,36888,38470,12106,4737,2521, + 10214,24464,83450,86275,24769,49601,67568,99198,29663,72120, + 14962,22788,44426,22482,26026,27313,90112,75415,35834,61179, + 25854,4454,78096,56769,1701,86562,1904,19764,11181,25013, + 50442,55581,49772,84007,18887,13395,92295,49716,87281,78475, + 50241,69392,46341,63921,70640,94948,5580,60914,75859,56491, + 83664,75949,34905,67822,101,31431,20018,40698,7249,91733, + 41552,58711,27193,17438,43446,13654,16234,21562,88265,18462, + 76074,26735,66044,56806,55344,32451,94586,98703,77232,17175, + 4379,6753,66872,69661,86040,65430,5744,85597,56366,1072, + 44221,5591,70018,67917,97001,54404,18365,54481,12175,57772, + 47477,89568,89327,89390,23218,10975,4140,31853,20504,77110, + 72641,27292,7092,16448,26273,69922,24270,10018,43341,73450, + 21204,81215,71587,6937,48652,49569,20716,32477,27132,40276, + 50656,34230,40434,1999,77805,11042,74403,99118,85599,23089, + 66380,74370,24994,69644,9796,947,77750,66734,32544,76442, + 84284,52293,68560,39467,35845,59011,28735,32561,98379,65783, + 84116,39286,63371,46672,33740,74139,62530,11932,35507,85609, + 33674,73803,60439,45423,91103,47880,53124,31707,5613,71620, + 88752,58338,18600,38030,45243,94837,78073,71196,91536,86253, + 24089,64606,84401,19889,79706,1281,15581,27739,8336,38475, + 38508,93990,17616,26249,40540,30928,75413,79223,73349,78259, + 72255,42404,43142,68834,16252,14804,37270,97481,32090,87650, + 39105,65403,99494,69843,27617,8859,45309,53461,51466,28816, + 35393,40044,84171,10965,64173,70800,82573,98318,96310,7271, + 43463,43075,45978,45958,42810,12852,98499,4202,14956,61190, + 58251,27452,72432,11941,86419,56695,28742,13782,40735,88427, + 64610,71020,67693,48763,65353,96020,41423,71038,88817,56408, + 62245,91551,77095,2743,7290,70777,61390,27857,95943,3781, + 68185,55589,19130,53505,97168,45975,51794,84828,50381,76725, + 87714,63556,19966,16468,49716,5700,70723,93470,75365,36867, + 39765,41482,20625,21712,98492,6024,82988,13103,60833,54630, + 67762,60978,71790,72875,75628,67007,18135,98243,15895,82776, + 800,16502,13512,87654,15265,30298,58276,67605,75454,84957, + 482,86720,50959,41875,18849,85671,99427,18548,89984,38063, + 11629,85420,50285,29566,66176,51569,98849,55909,83875,73940, + 2104,50132,24982,79143,70274,15801,63355,24813,84433,75499, + 86509,82650,68487,72506,59069,73488,46633,14325,68031,11753, + 25564,79027,72894,40888,84093,53465,88000,44588,35009,7649, + 88576,83170,70274,28592,6923,54256,93310,1962,37438,52977, + 31124,10615,15597,96864,19054,27450,48078,69242,53769,15477, + 1496,66495,54088,49837,29901,34934,34641,3464,61126,60703, + 36857,40803,59584,58291,54211,4530,21058,84478,54318,27173, + 34269,45718,7901,29438,98644,72557,96043,15648,81290,36698, + 50186,47466,91055,98532,45257,43441,8560,94096,12855,67038, + 34872,63055,93114,26958,20846,1021,54993,76260,6359,18451, + 37555,60780,68333,7499,29523,88446,26709,90317,80874,77039, + 73389,30263,46017,21802,1021,21823,72284,99441,60631,31089, + 10860,75889,86699,72046,17196,14457,64937,85385,85166,86240, + 76084,67390,60894,10391,15433,16350,18545,90822,18855,72532, + 13646,27973,25945,27567,90362,48451,80242,1776,58382,27781, + 2913,86091,73840,67352,10206,31472,8898,27145,21993,37540, + 1625,22279,58011,88518,15761,19377,36512,19316,26231,94867, + 28594,11107,68528,76795,80939,21533,55972,66516,4214,78124, + 59389,9206,25225,49092,4762,29226,22400,91321,65610,47435, + 83414,186,92213,78887,54059,77033,84142,81393,46332,83023, + 17150,45816,86269,94550,28111,32581,19148,34190,64997,87048, + 31276,73969,87144,96080,64179,2376,34688,21264,72191,57419, + 59780,92463,8477,22025,7253,47215,97149,84701,79352,83671, + 71802,46013,7359,92949,60895,59763,5925,98948,11821,49787, + 30775,22283,98686,75488,48619,10228,80731,65327,25171,60722, + 9388,19137,91210,60202,9641,18310,75884,48087,25424,88973, + 50999,60769,93845,13375,78004,63555,80609,50970,78358,5913, + 6193,65852,40041,95276,77165,48965,24758,42680,72080,35916, + 42740,50758,68675,65789,37834,8510,84723,23681,32445,97605, + 92881,17532,61255,19858,98803,3283,10614,34505,44570,70793, + 95921,54551,98043,36577,13542,90474,12904,27243,6448,96410, + 22024,1670,97323,92593,79454,81254,98128,64453,62838,65878, + 15755,84432,27408,45427,85701,82802,75041,91475,69352,39359, + 52823,58143,18872,79351,24089,90786,22648,37011,26317,85507, + 72666,19071,8043,7826,70400,60703,60075,62761,31642,97879, + 40539,47136,32319,72825,51775,31831,54801,29932,1067,11525, + 66779,20805,85880,6598,43665,2399,67220,51277,62879,34349, + 93269,49511,77048,23493,90329,12627,60961,86700,88103,32609, + 11508,39609,82114,21683,8206,50975,29731,3435,64361,43021, + 89501,61405,49441,32844,48194,6691,21537,98230,20136,93424, + 56804,7184,15555,64979,54329,41980,35061,73617,65090,66257, + 77389,8604,82411,69497,17664,77713,13330,64046,63511,93063, + 47742,52674,37371,8181,27996,22014,90448,37448,60984,51288, + 15234,4840,84025,2703,14503,17753,89893,33041,27651,86059, + 18636,36488,52370,71399,18617,35712,99504,1150,44785,52416, + 64578,71227,14740,86888,34194,13381,61841,54963,48802,26865, + 54792,18147,83241,48265,45408,6587,98399,88856,83116,98346, + 43623,4418,50390,4077,81129,18834,23952,73084,16856,22354, + 24076,74848,55051,44537,71532,18930,71309,10844,61479,5419, + 28337,13950,48460,29906,80848,75580,67684,13932,93874,51522, + 50325,78299,13241,37965,34975,14494,12186,5217,52907,30549, + 84969,92946,12549,65544,71251,95885,62149,16597,78538,64475, + 80532,97947,69019,72694,45932,85871,56108,83422,49400,40991, + 46164,77226,78978,8816,325,94479,59161,96236,85376,49522, + 50409,74508,80817,48943,29348,36268,63126,91546,58948,68840, + 57507,10476,2673,96196,58947,60691,9644,16121,4151,48812, + 81735,87973,37485,29429,89229,44899,39352,16384,11853,20173, + 4932,56513,76137,64062,96131,73086,7995,45151,23841,896, + 74143,78362,92742,27077,21395,92317,75761,69075,85648,96864, + 51053,47439,29967,39775,85987,18046,36145,1017,48444,64700, + 43629,33059,25408,152,26670,27330,23721,46944,70447,41078, + 36277,56230,88078,95098,59374,44875,28536,12977,12647,209, + 28901,12931,89245,31843,21693,98307,45646,44970,70686,38797, + 86685,74239,12121,27751,65842,90209,40328,74016,42723,75178, + 22926,80903,82067,417,98177,56392,27294,70949,44637,33495, + 51444,86049,91581,66473,56357,54257,81114,11748,38268,6269, + 16639,72821,72534,6236,28043,34880,70881,98803,82122,85890, + 7238,94545,91614,41737,57102,52841,18460,7651,83750,20585, + 41973,33231,28314,51577,62705,20661,85692,32542,83804,88837, + 12096,27800,71259,75149,17441,77800,69156,9401,57102,27075, + 83101,4383,4815,74519,81758,15506,49015,50831,46526,79126, + 70952,27740,55160,63422,51315,9087,62429,72400,82271,28060, + 74882,92158,54391,7421,87480,29993,37664,14876,94643,80698, + 57542,96500,36919,33542,44111,82717,450,10500,26219,82418, + 46685,61662,21118,2596,58515,39046,80145,16825,98253,71098, + 30623,44412,28140,86255,11728,51694,4482,90588,84709,60624, + 95180,80938,21225,97586,76954,36905,45204,81785,46780,72231, + 14664,63590,72324,44531,97285,30905,58656,65757,20029,45521, + 1336,90661,69607,85209,52335,15859,79579,24969,13376,13120, + 36163,30095,89328,93187,75518,29894,28966,34364,85359,50220, + 65711,78192,6418,43562,43415,51167,39924,6475,32214,15488, + 7460,32366,16923,29154,89419,62940,55497,40882,83041,38918, + 2112,85330,36512,1076,25232,45413,15078,96098,76655,32642, + 4938,26823,12146,57276,7165,62935,33566,84588,38491,61589, + 42055,36032,76380,47307,24,31037,88237,53283,81905,53472, + 11718,30190,56090,98540,97303,40830,8019,41721,34220,55772, + 29498,20135,53036,31708,48953,84202,55512,17592,5407,41387, + 49938,99411,21209,29102,22645,1669,77823,29122,40518,43284, + 81214,87739,9059,87804,54958,45374,43664,61532,69952,65097, + 71358,5954,38891,91172,2926,79420,33818,32504,41242,84473, + 67591,50198,79678,47538,65421,45326,46477,51379,86164,51981, + 79986,86417,16667,53227,4575,45979,49009,48493,74017,30803, + 83014,49153,7867,81611,1306,55187,66820,62884,86898,92009, + 77246,9943,96161,74620,80655,13971,20783,31254,52557,85884, + 90943,83573,62978,60371,58468,83310,6617,72568,89499,55266, + 65795,77055,47731,41193,95723,98915,31772,37107,30656,74911, + 82029,63567,15727,6315,13303,35727,9660,88787,87297,37509, + 77781,97711,16734,61236,99459,9138,63621,78280,15372,73598, + 68001,54748,86093,61483,28151,79310,73939,75859,77797,61841, + 74700,38103,47142,20628,55027,75072,30791,58031,27987,58147, + 41180,6546,21070,52660,33015,24469,44429,54298,16186,83718, + 78893,16677,3816,76319,82902,34984,20325,82186,87081,85568, + 14590,74165,66982,39885,41733,48790,27638,38992,24563,56235, + 75282,41609,29210,27419,17521,15568,19964,73265,31680,31145, + 19827,79205,42144,57833,47594,15928,22325,19844,36007,61996, + 47370,8741,58482,12419,34969,84148,89549,93496,10959,44888, + 43310,55772,38306,37732,49753,7405,71426,26880,48144,77905, + 62377,88568,28450,83829,99292,91831,73358,21894,97447,478, + 96488,36162,57309,33992,53266,7200,16742,94727,33550,60290, + 9394,60077,86605,76754,45107,37524,51186,62307,97770,6144, + 82143,52052,12077,5699,67075,45039,28131,86224,5061,8623, + 54494,4361,76384,38147,27046,55971,30362,92976,74520,99426, + 18595,30343,7177,32368,91211,73967,73145,19391,66762,25927, + 96573,72162,40344,1448,25657,86076,31664,2468,95710,89423, + 12213,98035,60725,62166,65728,37680,97986,36823,35805,37907, + 97569,11015,46544,5123,87215,68899,71344,18368,44517,36238, + 36709,97581,56,27176,95914,74996,76056,89823,27860,44340, + 55309,49361,35803,30034,30047,129,58104,803,60701,80169, + 71932,95147,65794,53194,69921,94002,90287,9389,4577,27363, + 74731,70372,72216,16941,12795,1345,38030,85016,6778,94704, + 15269,50418,17402,18945,77018,48997,22716,10481,4678,6899, + 96559,16309,87474,6179,10430,69260,14784,34622,71730,63621, + 18040,82718,54029,76726,19823,51500,85769,51368,90294,86475, + 33399,31506,61195,79411,57213,13350,23359,77169,44110,99081, + 64757,13601,64545,64929,9469,47027,22431,14814,33698,98542, + 88442,2351,5683,3441,41387,48750,62187,27313,72011,27251, + 40403,65691,64264,85402,21427,80869,6394,58672,55065,33636, + 91090,68886,44854,89264,16107,38492,58610,87635,90410,40341, + 37308,96767,76938,40548,68748,42884,10158,47972,57924,55626, + 25918,57872,68892,28140,64694,93447,67520,36136,96784,49577, + 43694,68154,47874,41347,74651,36679,14707,92216,88989,54148, + 18061,17792,1324,78457,69970,65928,86757,22053,51684,79704, + 34942,87726,50644,8369,49251,72105,6191,79441,58711,13398, + 81553,30284,97447,13289,86996,70842,12962,68579,4543,38380, + 78272,82752,84544,73600,52027,89863,80919,793,1850,21569, + 26672,65218,24526,19172,72140,54307,40111,25306,1938,84676, + 96152,32364,39900,11076,26818,98190,16330,147,76416,29118, + 71807,83186,90103,19307,1234,89568,18168,12380,8101,96857, + 4433,64177,99584,16351,2727,19624,94267,59335,52106,17241, + 63228,1353,28204,79397,81587,3156,44502,50158,8946,28684, + 27359,79134,32688,1733,11186,96543,88915,47742,3975,35017, + 7420,86757,59355,69185,22712,79798,89947,29077,49414,89875, + 53206,73712,66915,75728,52934,5035,72615,73665,98964,79835, + 50490,3937,79554,73632,97541,95127,312,31832,61779,65931, + 30285,37864,39322,58076,39024,33434,81235,31777,63429,60029, + 54324,83469,28255,20224,88119,89171,28351,77620,49604,12824, + 26345,51685,71903,63094,41915,47578,15921,48909,80932,85298, + 15584,65386,73549,87840,21136,26214,52751,95449,50263,59186, + 89680,37935,7333,1614,54067,99127,20995,71232,26280,98537, + 67104,69627,79155,68427,3263,70230,18967,68032,45157,84804, + 51465,86740,13465,73584,35537,34826,18226,70911,61903,86737, + 37439,45137,63028,70757,34269,12241,51750,65564,9969,46823, + 14830,855,58370,89983,90238,7267,19566,82766,45096,6205, + 93870,71963,69838,79119,18292,49317,36543,32921,67266,43465, + 16856,43339,46766,42843,47204,60926,89956,99198,31980,86615, + 60683,62626,98836,36743,76356,14036,95882,72478,43965,4174, + 74972,66736,66717,35014,55704,12788,20427,95931,60752,45116, + 24929,45678,63110,91377,31697,44948,29669,78978,66153,56385, + 78051,24671,75477,6449,21658,84285,13234,76149,9044,70941, + 4147,5143,30517,14026,81220,80094,3748,96590,48597,62262, + 38196,77760,10224,98200,15863,49505,44441,66327,71870,1717, + 6464,19480,21953,51689,10216,93736,79420,29397,54810,60501, + 69124,76408,8127,41154,60139,9710,84075,48986,73995,19669, + 9553,4266,6177,94367,78708,82112,11065,26164,50611,25222, + 56833,88186,77808,1127,46,44413,78374,7823,11084,57536, + 5844,74101,73347,99871,95442,33251,45039,57469,82934,41692, + 40184,57120,9016,5533,92703,99176,71998,96065,44829,47578, + 17797,60963,78639,42270,32732,10066,40672,39105,60316,20682, + 72973,25912,73016,5469,60071,87851,69045,24801,662,44867, + 50793,31098,95690,1475,8804,84352,8881,88998,48620,47121, + 46127,32463,99469,75758,43039,10188,56151,27615,7976,13264, + 19611,13775,37003,31746,89193,99755,28086,33794,52272,90983, + 98147,86109,32336,12106,41587,85863,2612,69893,13024,76820, + 3339,34850,81685,4866,97179,79969,23885,27225,61313,43146, + 55240,82989,5617,46612,33255,37309,74348,98419,48068,15151, + 36099,5111,36106,96330,72305,41038,33818,38489,14369,86656, + 48089,96665,69060,27341,94068,40660,86823,90094,30223,34158, + 11237,88237,59485,98906,2391,45863,67438,47883,59237,10738, + 26085,23959,30842,76335,95192,38285,86720,89903,95805,42174, + 88034,16524,84417,37318,9193,15438,26098,28089,35251,44060, + 97762,44564,79330,31558,46055,94323,84185,76477,61261,32424, + 21338,34315,28918,17008,26567,10825,839,92744,48683,52546, + 23170,18372,32299,58524,98980,52057,55645,20423,54842,66099, + 3572,58312,87867,89478,38582,77921,1302,27749,14552,76832, + 52470,87490,35268,21994,93368,73041,92560,56177,93713,4232, + 95408,39324,70991,77868,89404,84661,17017,47667,47971,95260, + 59678,82321,33851,78324,6853,49364,12092,33277,65934,78866, + 20704,57943,28725,71977,19652,94508,7680,3581,79497,86685, + 84311,80088,47048,27890,9931,40408,40223,97430,68454,32739, + 69235,49956,92712,1723,75866,58396,83701,35915,34619,38820, + 30566,28238,96768,50720,33372,67982,48368,33686,36660,44922, + 53996,4186,33811,22057,94061,52002,20792,9831,63936,93848, + 56102,73700,75900,65923,41890,68834,33510,25066,50192,34709, + 22426,77971,70248,93110,3231,52090,86371,7322,66146,8043, + 24865,58042,18387,39234,99026,48149,92697,79097,95732,56084, + 46030,9259,42162,13225,55289,53921,10042,46173,88733,70075, + 79432,82817,76324,87468,69906,80965,69225,49869,91435,66428, + 71500,16893,18574,4472,86802,30099,77166,89152,54014,96097, + 32420,72449,90151,57667,77468,60054,24423,35344,7890,92836, + 17951,97506,62942,78086,43555,89991,61708,60883,82300,45968, + 45443,12838,8012,83376,32619,12760,1534,20457,76963,55867, + 23130,68041,28041,13895,66740,76141,96641,32826,33792,62899, + 40666,86240,59514,31769,73642,83936,62343,68482,86435,82747, + 82231,48359,36180,32229,25088,65017,87404,25686,38897,10296, + 32046,35855,59718,68496,65422,43855,36960,73756,22653,76106, + 27520,80094,47262,83667,68496,90879,89100,49216,57949,71422, + 87735,49994,60395,39450,76201,65980,41068,20777,94257,14557, + 12358,67970,88718,99599,8145,56456,25844,77559,21720,14464, + 67470,94024,27002,89050,17095,51013,75053,6354,29854,64880, + 34731,14960,73880,17658,53715,16382,43247,58319,47915,61503, + 51763,71818,99003,18232,59866,72790,23255,39239,32557,69667, + 32604,98986,49100,46636,69743,22845,45586,7630,99382,2240, + 13369,82766,60852,76653,18498,45135,5145,52523,38676,28150, + 87241,89028,94071,16470,37829,93171,49605,27101,63872,18441, + 60896,95774,25149,48415,96041,66211,10821,72748,83826,76847, + 6844,91216,8921,65006,2628,68975,57557,47429,83192,79273, + 34881,32155,57613,23851,62482,58057,14559,37761,38470,1000, + 214,59915,87566,48045,18597,19343,51094,93286,12768,87971, + 12718,27646,12318,18803,35690,62175,25858,63665,71560,61718, + 20961,27074,44145,13220,54444,56453,54911,17909,19779,2114, + 52670,54794,13539,14195,62256,63591,9068,60061,45964,92600, + 39869,68617,51464,47224,18690,61816,35145,71122,98508,91925, + 62699,31299,62936,29830,36684,23607,87754,70245,38104,79146, + 29759,87173,16225,4527,36804,83108,15868,62187,80096,30506, + 88840,94671,20002,61043,96657,29524,36133,86785,68319,44866, + 54890,45993,46709,63787,9693,41970,42679,43043,95476,15630, + 3623,16954,30477,27902,87771,92138,96048,30069,46413,39331, + 7103,52147,4835,25925,49692,3254,20906,82229,6180,25457, + 54698,67601,4391,29048,2579,97652,49406,68028,75091,5107, + 12908,7381,13849,46530,56465,94528,88556,46964,11678,34911, + 86623,46640,82234,11485,40907,83121,32150,40431,14514,69808, + 57577,65511,76093,82302,11502,29830,85298,41714,31908,1034, + 29885,27628,87846,60712,56086,67774,58129,30832,42715,30958, + 55472,49229,3763,15799,65624,10572,40056,68424,95104,33155, + 47408,3193,9947,90937,77855,151,22418,80776,27096,63032, + 73676,2499,7185,69014,99923,17968,7272,49669,91450,344, + 5214,83204,57263,65278,16604,8187,43287,84897,57561,12894, + 39607,29627,8925,57545,24859,27003,28438,90956,89159,82812, + 61302,72127,72935,74813,13578,85924,95860,66725,98802,72489, + 19063,66245,19031,15250,85133,58530,7290,89338,46798,34875, + 29125,30847,18740,81838,89556,25541,23393,52031,56103,76888, + 20562,46435,20291,20141,52863,75638,14812,5509,9612,44236, + 43179,56479,13472,68751,72391,42681,91659,37107,94789,88784, + 16066,21077,74185,41476,61236,14837,99552,69180,36771,34669, + 46090,16219,82354,69037,45253,29960,9191,48619,2960,53289, + 83545,95323,88357,96071,36736,52030,90752,42332,18745,76973, + 9456,93818,249,74393,96511,83694,75811,14173,29084,97132, + 42618,2515,43281,3227,57138,73343,78888,12096,64115,93948, + 40792,63743,55857,22722,29335,94654,42490,7782,43328,28013, + 42492,71594,73969,45363,6677,28646,10974,64669,1922,37717, + 21826,40360,38935,51693,40700,55481,25499,75203,52930,9038, + 61438,57864,12082,34398,94337,28576,37014,68064,53954,82660, + 73913,19307,80797,55564,24501,50178,1755,20139,28946,15264, + 73252,81451,26824,88449,15147,47626,48456,43525,23228,78900, + 30184,24587,43681,13282,89157,42793,65946,69374,37262,75501, + 55895,3398,99997,96333,86745,55711,84986,35602,86230,24860, + 13333,46782,56072,61993,20955,9485,61200,36085,43948,24783, + 46372,46610,72118,88459,65768,52853,55604,60637,44135,70848, + 86286,93449,59132,33174,79788,94649,95650,99451,66937,63233, + 14066,31510,25825,10332,23296,23846,38976,41513,92078,93290, + 4096,34758,2328,12702,96405,70407,43612,88699,79034,27437, + 67833,18506,18623,5372,51061,40405,77802,16412,39926,69899, + 19983,72209,28706,36625,43985,38344,87431,78050,21295,6534, + 32339,59423,69201,24790,71314,81524,73188,77228,32809,65749, + 90658,2036,51751,76198,49936,22496,4779,79033,72846,7341, + 28039,82884,11540,78399,14783,18079,47830,45008,4770,43878, + 98044,28605,69303,58342,33706,75552,76136,1745,2736,49219, + 57067,54858,49831,3889,83008,92014,34293,42270,17644,9001, + 13653,41992,56567,20397,94992,84057,3657,80666,3846,29228, + 4267,2636,91032,80547,63077,19091,28284,36685,61209,37992, + 49027,73013,14852,96220,12173,8479,18630,46640,57672,80787, + 61565,26872,60234,42801,76065,86977,43424,77602,16941,90707, + 96461,6049,97416,59216,70827,65317,90448,15556,43341,54158, + 6548,60350,5331,94711,98267,54052,62622,48140,57982,6416, + 17740,32625,35725,18708,82998,60515,8143,67327,43239,77566, + 96514,6510,72829,77887,88700,43451,88981,67891,24015,38331, + 74582,74762,94125,84618,99743,78643,90304,70361,18147,32081, + 11558,98509,35244,73445,74816,54724,70844,85765,86692,48762, + 92532,97551,76271,23279,23708,96725,71069,40992,25774,93620, + 94364,25213,85803,42482,45942,91440,9194,49746,16590,18846, + 64859,12675,20265,21328,95961,3296,1992,92275,724,48206, + 62051,52289,44497,5584,90072,97284,85193,53564,99845,56759, + 86026,31539,41903,28938,52058,74324,36477,26020,13273,18896, + 34842,31050,24902,87697,49235,10236,93866,870,17389,95123, + 53353,28432,48546,43416,80715,21431,74881,26147,69690,60322, + 40689,15345,33062,85347,41561,59709,65427,30661,74896,60857, + 12941,37550,68538,1647,63518,84789,90386,10978,82041,96490, + 32537,36029,99702,51929,61438,70151,87057,92773,294,66698, + 70390,92625,11625,78412,1899,3675,72737,22995,65914,95809, + 76196,21046,95702,7669,3156,32829,54350,11094,44349,95825, + 91006,97997,15625,99552,78076,81580,27286,73045,42968,56573, + 22370,96993,35654,31748,99391,66651,94450,48698,24708,90288, + 7517,22064,3210,60005,22148,10295,74899,2813,79959,50383, + 38828,96076,62973,80166,22445,33657,31139,651,11654,57340, + 98739,48782,66846,23943,44689,87798,91902,93012,5212,9353, + 668,34217,93144,37369,51400,5160,46525,57995,34800,72637, + 67043,90563,38126,44113,9012,5660,51752,7007,95457,31397, + 65004,67221,82578,26183,65101,39517,74962,34336,52245,50555, + 79980,4878,87167,70989,69460,92543,5992,16314,8553,89795, + 87129,77271,62078,93849,47879,86015,82786,53293,98224,74286, + 25895,80619,88335,43804,35381,95744,73240,93725,26086,87647, + 40053,12447,62336,8628,71882,28049,4398,95992,88641,7276, + 51029,33914,29346,31469,2445,18614,81855,86071,74205,63796, + 68821,44822,13331,46137,41432,98269,2609,87453,90361,63751, + 57165,75683,4212,21713,5650,65153,10289,49438,36118,38812, + 70771,65182,60242,39128,21251,76303,89733,72389,1829,18280, + 12777,24739,90732,15045,23824,10102,18655,96856,70809,42817, + 71149,81852,53945,38949,28192,98436,51238,60507,61412,41242, + 15476,38174,15896,87612,22018,13259,56543,66763,45853,84620, + 3514,5364,12355,25367,4489,63703,18318,91938,82689,88708, + 13516,49772,4974,81704,58016,26578,9569,9150,93065,30714, + 77868,87292,64830,57457,43400,40274,5480,81235,12798,7421, + 74907,32488,85663,61291,29772,25090,41368,85052,74335,80646, + 21892,59830,83085,95823,23617,15179,97385,36504,57117,7544, + 54426,58218,55036,57590,52806,22723,19387,58920,66860,50151, + 12033,15005,71728,31879,3531,95262,5524,38410,67805,47896, + 42829,20807,93208,68470,16852,54199,94432,63658,23230,16769, + 93515,2317,3219,8663,7573,16950,85854,4212,11604,43284, + 49593,45872,23374,86097,62437,55472,48552,63168,51138,43011, + 6249,23520,58353,57332,9186,46040,63574,59679,50827,23079, + 7156,23387,45391,51281,248,28039,46641,2747,27998,19398, + 81828,85111,59790,15256,75181,49991,45583,22291,75467,96089, + 8429,28940,98701,63579,82584,69473,52618,4351,71316,68321, + 1595,69757,55079,49305,6077,33240,52792,3170,25592,87240, + 61302,8560,27456,94380,78052,55396,40636,22115,27015,52610, + 42675,17531,60018,75381,96627,41820,72865,67671,1769,55882, + 92174,71026,63769,18419,48081,67710,77052,55091,67157,3705, + 45337,72446,23640,37258,44451,65342,97566,52914,93019,80896, + 34986,30341,36936,30447,74841,35172,84437,13504,42311,22778, + 52584,16798,41095,92677,61436,10995,87539,62803,62023,38340, + 49017,34388,72416,94295,34924,17054,31986,43081,67862,97578, + 8574,14016,28206,84249,91348,36249,36307,14598,30190,98417, + 6662,52614,770,42511,86287,93382,52923,32431,80654,38538, + 66824,48092,52145,29539,98133,35723,87619,21185,36548,24969, + 1331,39432,40191,46590,68088,55569,40066,45413,70867,86399, + 24086,81319,86669,89907,79812,1031,78226,66287,14202,33019, + 21145,14241,50177,70399,96763,10469,59417,39448,79811,30462, + 69451,37951,24215,14225,88233,13246,83320,62813,40372,85013, + 93037,79777,99874,48458,4424,61891,92996,55688,75095,48074, + 44067,31926,51019,28602,94495,35203,54619,93070,39918,75189, + 47013,41841,88424,3705,97007,67298,459,99842,3769,61589, + 26971,77395,54600,13962,41737,96886,34398,7002,38948,26376, + 55098,11551,6232,69415,88899,42065,57059,98867,23591,55689, + 33351,75488,38504,13712,17314,42580,24187,66328,57355,48692, + 98442,96311,49518,27833,94824,61725,80391,19962,88939,31400, + 51718,25344,67520,6326,79724,8103,95039,55864,36529,52144, + 22348,26344,37393,86605,47056,86845,43214,11279,34334,37811, + 84708,94862,10024,43560,38475,97417,93758,6802,15889,14682, + 92590,87134,1117,27698,70751,35080,37437,26499,74748,83289, + 87997,61520,18891,2290,68750,10432,19516,9258,70545,69514, + 52022,40516,40483,1576,91288,54358,24218,18662,13525,70097, + 51378,59891,28002,79523,94668,21692,40082,8664,28691,14618, + 94506,54948,45660,65569,29341,51406,20581,50495,24963,71305, + 20542,48812,60629,73333,42401,39611,87570,10939,95730,66987, + 56191,13023,24434,14740,40539,70011,47363,32487,64047,53604, + 37460,88083,4328,97052,3085,87225,40458,15245,3916,41293, + 95642,70926,94305,78775,25370,52291,75460,14170,30601,74036, + 92354,20195,19987,40023,49657,59456,76546,82254,46427,65579, + 53774,41167,52098,62766,78875,92004,36026,20240,86195,25133, + 66331,60805,75314,15185,48315,58145,39382,94173,77447,33206, + 2670,58567,61297,88524,7455,5050,45579,67139,63792,38806, + 21696,89133,77168,6587,23105,83496,65409,38512,49178,99332, + 56138,59317,85874,33178,99313,48078,58893,59128,47156,53622, + 40536,56198,49103,99263,58962,49126,90845,7911,8467,95858, + 65675,37201,759,52897,5765,59088,15549,15920,52097,96791, + 49501,53794,67430,26507,85534,61561,66643,27131,24704,88266, + 47237,54399,40755,12488,62557,28162,46204,4334,71590,3942, + 17717,6444,80287,22811,74158,20754,1666,33922,90715,15468, + 77287,97930,56891,61514,95217,11609,85370,99490,52351,49253, + 1999,91374,41735,92232,14854,70493,33155,49770,74601,13401, + 77300,90003,65149,5685,51681,74769,92545,96360,75475,13897, + 83377,93196,49844,98633,57631,69611,7472,99535,91606,61315, + 29266,2353,44816,14187,35006,23682,23450,21735,69644,59402, + 43454,21182,45992,47808,78726,45324,54954,95476,13120,96726, + 95079,94444,29505,67094,71528,2414,94183,98455,24821,40639, + 79343,37429,30235,40202,27252,69879,94971,18391,28272,55797, + 90184,68483,3861,68320,99069,22039,97097,44480,90893,52572, + 39593,52164,43498,71329,41746,66818,34366,62871,58141,76571, + 46387,93973,16230,22266,1360,32432,36368,16253,94527,65492, + 3296,94296,44550,72817,57168,40430,10659,91606,58751,79843, + 10493,40082,20884,3397,44058,69715,79186,8474,18053,70626, + 1094,95474,35116,57694,60632,53511,7508,93652,68793,82698, + 257,72649,21292,97195,11228,22435,89373,38462,18412,64956, + 57241,52729,558,44649,90159,34307,77026,26715,59729,76315, + 55929,49836,45799,81396,80049,29310,15885,89836,13660,96879, + 6984,56332,86509,1524,83691,370,37376,16366,53360,82300, + 16669,49763,23769,67607,88055,1706,71916,3523,45653,17646, + 18275,85768,48149,59535,84541,40954,47367,42619,76740,64281, + 51356,52161,70662,82268,21970,12047,78567,45629,84988,77585, + 62801,55462,95515,4676,12156,85768,90839,4188,26553,89236, + 91277,15770,87328,96706,92875,24985,77555,94837,68115,34481, + 66647,45220,39270,9033,30165,47212,82985,2948,99791,68096, + 5225,13839,54143,74502,4628,31360,44498,35990,32163,68297, + 2851,36560,24152,94926,25139,59288,56585,21845,56095,4742, + 90248,21690,27078,40339,64754,26561,48791,83338,12255,94598, + 85311,88200,62378,39993,89150,10055,55520,42904,37942,24695, + 56078,2532,15772,13053,8000,81043,6940,89780,58142,72475, + 4521,65524,2790,35149,40788,82001,93848,179,85789,19699, + 81691,85212,41190,24318,89833,67674,49901,30624,1609,29262, + 22135,92668,467,71758,41244,94547,15537,58136,76430,98832, + 12535,98918,42531,86045,38319,22244,43239,71539,25557,74476, + 43455,69015,67087,65966,63391,93973,79513,12705,92643,21014, + 17923,13758,82704,5875,45513,79736,50134,37288,59861,24555, + 79418,6476,77361,9724,79566,15163,83802,96974,11508,24612, + 40910,63895,36238,98323,19054,27849,14775,36976,86208,76574, + 57736,92765,88578,12786,67366,17382,46478,45975,2510,68304, + 74784,33263,65702,42426,37702,64188,87595,36791,7305,91509, + 90976,62252,53183,83111,37354,69555,99987,27773,91106,3084, + 86339,5103,64434,13302,7396,71044,98378,31219,1245,52327, + 34411,35121,22465,47801,77406,40335,9465,86729,46857,52435, + 46566,97841,45220,74574,89611,92985,31212,40203,67607,99790, + 85657,13204,39661,19805,35262,77972,53764,70754,65331,87386, + 85341,98615,75821,95786,89563,9660,52683,98723,14247,39737, + 5622,14710,1404,20390,2606,9576,84945,73979,68525,52817, + 76118,34915,84215,28862,54285,70880,33826,42573,30152,44197, + 61067,23099,91637,20542,65563,59788,21686,19099,12494,48755, + 10122,24742,70874,28512,28565,19361,63740,20324,38193,20540, + 93572,90848,94994,94874,49546,40691,26908,13347,78881,10204, + 87599,45208,53146,3761,89605,34943,63092,66737,91985,53867, + 85461,13317,22801,39444,93460,44736,87258,60192,11577,33742, + 3347,82163,57314,60924,70718,63709,14923,93342,63618,83380, + 98350,73890,76886,7791,59352,81798,60793,69460,86022,66298, + 94160,72456,67021,33485,44244,55090,15790,76140,99029,49048, + 6303,54791,8010,58287,60570,18070,21794,44552,83937,37270, + 16679,46400,53018,3505,30215,65689,32145,10306,50294,16170, + 95011,26908,40475,29531,32616,71312,65738,485,15819,31293, + 4876,73728,24670,57796,43990,1642,86532,69081,17912,35332, + 23557,35448,30585,79607,39735,67152,40631,34973,18112,90127, + 56776,8201,47329,26353,78016,98803,57547,82912,5277,50873, + 8250,56154,92131,64215,97466,22705,41271,36981,26913,43791, + 57938,95533,5327,85147,83018,46535,51534,70461,62296,34757, + 71862,16841,53301,63908,99015,22923,58629,11999,98138,83133, + 18743,50559,99242,19590,90118,83326,92369,66342,57452,62126, + 70992,46826,58806,13629,65189,17411,39585,17675,97778,29394, + 5939,23516,11513,1525,44308,16624,71621,72121,40450,26636, + 37523,39462,17998,48475,64364,1549,29157,27971,91172,43850, + 24447,37663,70912,63477,2218,61019,45075,94929,27200,34601, + 48484,10797,79632,42472,58734,25422,17725,32182,84870,39861, + 98257,65847,56117,90876,52724,61802,27352,37813,33555,13838, + 65413,87601,67939,61089,13073,89099,24315,13026,56468,61811, + 8650,80052,45407,553,99927,47334,95677,68215,7578,88896, + 91200,80053,88894,59721,10614,48404,25800,20783,56974,18694, + 37052,81005,91309,37697,64332,80961,15215,92932,52547,18644, + 53978,16344,34075,47681,69669,83900,63420,60349,50952,43491, + 10584,56982,835,75142,45445,29852,33637,8709,94417,67543, + 66254,48318,92950,65991,17425,17525,18941,50816,74275,96875, + 52104,28996,9282,26506,84586,54279,42431,37213,73315,18097, + 12464,94520,17326,11067,95871,32208,39009,53086,41830,81576, + 20194,15662,62617,70238,31476,2705,19534,33170,80694,79221, + 25498,41542,84687,63794,95196,19641,26125,66752,12674,45437, + 52171,83989,77420,88281,11146,60869,81997,7876,11290,71577, + 62943,78216,12405,39394,94753,31039,47712,28998,56665,54583, + 88251,63450,20471,59618,42717,27805,29117,75510,87577,33926, + 56108,17947,42844,32988,89155,83431,18396,57340,68641,74935, + 48341,83809,93564,50663,58755,59004,83691,74428,92245,79575, + 44561,23782,53184,56554,3795,33628,95723,51854,3385,88505, + 65300,32948,8767,7580,78042,40380,67253,59806,12192,90218, + 86200,51963,91660,95458,38812,2559,9100,95976,53397,89797, + 20278,17104,67576,72472,37095,83302,18875,57207,38682,98934, + 57204,69990,13626,38820,29554,28193,12980,48083,6496,44385, + 28182,6628,68554,51449,1106,83421,17122,72525,12337,58289, + 13115,93487,26280,54463,90768,8723,25255,5120,76555,23944, + 93384,94970,50578,16131,12565,87321,12950,11955,18729,46364, + 3997,56431,42532,66282,55440,62935,26169,98455,1676,17206, + 33665,2965,26582,5784,81419,95969,91254,70395,31135,31890, + 1920,66087,61222,79430,78042,68500,83297,8637,24148,90772, + 46815,33971,49621,44789,68960,47452,87437,20892,19837,70521, + 33222,88567,27393,53648,31285,40211,8741,23136,3391,75330, + 10672,33825,94284,67138,15496,43198,12932,94098,12969,98646, + 92571,47324,17977,42301,60167,17231,3014,54332,57138,51142, + 51921,23882,46742,20891,31537,24859,52317,17234,19492,21903, + 44907,73836,62528,4892,13690,75907,33609,81066,33663,48282, + 11007,37180,19557,11056,97690,25683,7793,94033,13556,27639, + 13849,37312,45530,719,63754,11749,75743,9007,15437,78909, + 29620,31032,1333,26530,42478,62123,20916,85208,73665,16053, + 4904,13505,53065,12075,37757,21156,92691,40326,54860,59228, + 13741,57230,54088,43120,41644,14738,50419,14260,66358,71860, + 75471,58880,5276,84625,95522,55409,71357,90035,93914,85579, + 26810,37518,70612,89340,30745,1671,14527,87139,26341,15792, + 72696,62250,33778,4698,59593,76781,27517,26232,3036,26095, + 5810,56584,48616,29247,26754,69872,3268,84288,42787,80970, + 8872,33402,48243,96413,56078,50581,25511,25447,94267,33183, + 16534,7741,64176,26576,57750,48240,33295,98368,37649,97354, + 27919,62569,71385,10641,17415,69875,76261,77241,78595,15679, + 65041,40578,59207,31244,23907,69957,22693,54996,99078,79714, + 53422,59887,44379,53229,38197,79571,27141,11249,4129,92850, + 41509,42957,6397,71724,12498,94514,69681,11960,6132,26125, + 76081,11924,19520,17878,13495,34776,44974,94695,87983,89291, + 34500,45653,13787,52601,30878,91280,1789,27969,34176,8398, + 26395,59447,1447,90669,65131,76074,15646,11092,81167,30755, + 33880,13663,97002,35088,94119,19013,71683,61944,6055,33626, + 63951,93104,50604,71074,77224,14821,56861,84649,50023,524, + 21746,71298,5152,94456,17095,61600,19528,52697,19157,10487, + 49121,54304,22583,4847,13767,20445,32412,25045,59649,548, + 40984,84708,58975,61175,11533,84507,71492,5268,39849,38275, + 40647,57021,77382,82574,68419,31717,37661,20156,66735,79799, + 81858,19479,72628,47272,677,64905,29953,56334,2881,87504, + 8909,56954,70870,77705,90445,57377,27805,91078,90980,55007, + 4038,8695,41244,43608,54939,28745,11789,16473,53949,63531, + 50420,3762,18544,75073,32487,61610,98261,95776,12443,83193, + 67855,18288,99141,95915,66324,13690,18370,94843,70068,64722, + 72459,87413,60459,42534,87330,76336,57854,42259,41645,52323, + 56028,42454,63944,96854,90215,63946,3273,23130,90542,22355, + 28265,53517,54272,73427,66043,45845,60185,7172,47984,59976, + 68228,48812,22566,43217,80204,61701,15002,97208,23302,39334, + 86945,63434,45238,73770,85365,88710,434,32785,53973,2762, + 79365,63050,86318,72360,19015,6602,84917,9914,84223,67886, + 75639,5406,34295,65618,25995,52931,19405,35375,28880,9207, + 31719,23637,95764,96700,44576,6185,58205,76397,15127,18678, + 85019,3463,13020,47956,14197,45859,97796,13224,89667,56714, + 89815,52665,29777,34739,12783,73777,76746,87694,60496,99670, + 63504,4203,3839,37606,8491,88199,66281,31760,23404,41252, + 36841,96580,48901,29053,95707,17395,91455,34510,21743,1516, + 55564,24101,38347,10233,33447,27259,77680,5959,44112,87916, + 92509,85151,94136,10498,2314,40669,8552,88386,41597,56690, + 11021,82912,15284,78174,3617,32324,52162,53502,89719,96171, + 16528,66360,40711,68342,81059,9729,17255,5617,87889,86291, + 86221,33315,53690,18235,6645,32198,34839,67381,24261,48174, + 6416,36695,81648,55638,55453,1415,10085,5859,79207,94857, + 46201,35092,38991,31768,44423,82684,94558,99345,68479,38998, + 80229,16082,32983,89807,88830,1477,69321,47848,75578,41289, + 86189,50970,35169,83462,65777,14847,19357,39106,61219,62400, + 28075,39290,39179,84037,49795,41488,65143,26470,60393,84975, + 40769,96723,35883,81208,55088,57253,24405,11108,43203,27815, + 26648,18450,47894,54464,82965,22052,92313,52617,15298,89350, + 54990,42247,42873,18251,77587,20294,94887,54323,38903,35233, + 42877,52273,64793,30888,23702,98729,84469,5790,14672,76463, + 71119,38315,1731,78582,36367,22657,94145,79075,65767,43135, + 42092,47551,79783,84713,40569,73838,63705,95078,42185,9582, + 98297,92936,99199,28701,70115,50988,57682,39698,4438,24494, + 93217,35051,27626,13580,60102,82596,76111,43191,23059,91113, + 87413,8709,40614,21093,31916,40121,99386,15841,4582,30043, + 79713,17787,78644,14019,64629,61087,30505,95469,73849,75728, + 75524,82592,69757,64468,64924,34803,76417,71351,36737,75916, + 67231,30207,36167,27477,68202,81228,2498,91128,57687,47314, + 20906,11583,18955,24851,2898,41888,51346,11474,84078,48572, + 40602,81180,51549,30735,12197,69783,39151,31935,99801,84267]; \ No newline at end of file diff --git a/lab-matt/sorted-large-array.js b/lab-matt/sorted-large-array.js new file mode 100644 index 0000000..f03582c --- /dev/null +++ b/lab-matt/sorted-large-array.js @@ -0,0 +1,1001 @@ +module.exports = + [8,20,24,27,46,56,75,95,101,129, + 147,151,152,156,179,186,208,209,212,213, + 214,225,248,249,257,284,294,296,309,312, + 312,325,344,358,359,370,389,413,417,434, + 450,453,458,459,463,467,470,475,478,482, + 485,524,534,548,548,553,553,558,600,612, + 625,636,650,651,661,662,668,677,705,706, + 719,724,732,759,770,782,793,800,803,814, + 822,835,838,839,855,870,896,904,915,916, + 935,947,953,968,989,1000,1001,1017,1021,1021, + 1024,1031,1034,1060,1060,1067,1072,1076,1082,1094, + 1106,1117,1127,1128,1150,1151,1156,1200,1232,1234, + 1245,1276,1281,1295,1302,1306,1321,1324,1325,1331, + 1331,1333,1336,1345,1353,1355,1360,1404,1415,1428, + 1447,1448,1468,1475,1477,1493,1496,1507,1516,1523, + 1524,1525,1534,1546,1549,1576,1578,1588,1595,1598, + 1609,1610,1614,1625,1642,1647,1659,1666,1669,1670, + 1671,1676,1701,1706,1706,1712,1717,1723,1726,1731, + 1733,1733,1745,1755,1769,1776,1781,1789,1829,1847, + 1850,1859,1859,1875,1877,1882,1899,1904,1915,1920, + 1922,1929,1938,1961,1962,1980,1992,1999,1999,2026, + 2036,2047,2084,2104,2112,2114,2142,2187,2203,2218, + 2240,2260,2269,2280,2290,2314,2317,2328,2335,2346, + 2351,2353,2376,2376,2388,2390,2391,2393,2399,2414, + 2422,2439,2445,2468,2470,2475,2498,2499,2510,2513, + 2515,2521,2532,2559,2570,2579,2596,2606,2609,2612, + 2628,2636,2670,2671,2673,2703,2705,2727,2736,2743, + 2747,2762,2765,2779,2785,2790,2813,2813,2842,2851, + 2881,2898,2913,2918,2926,2926,2927,2937,2948,2955, + 2960,2965,2965,2975,2994,3014,3023,3036,3062,3075, + 3083,3084,3085,3127,3130,3131,3156,3156,3170,3170, + 3175,3181,3193,3210,3219,3221,3227,3228,3231,3238, + 3254,3263,3267,3267,3268,3273,3279,3283,3289,3296, + 3296,3314,3327,3339,3347,3349,3357,3385,3386,3391, + 3397,3398,3413,3435,3441,3446,3450,3463,3464,3470, + 3505,3514,3515,3523,3531,3545,3565,3572,3581,3596, + 3617,3623,3649,3657,3664,3675,3695,3703,3705,3705, + 3707,3715,3731,3739,3748,3761,3761,3762,3763,3767, + 3769,3769,3781,3795,3816,3821,3839,3846,3861,3872, + 3889,3889,3916,3923,3937,3942,3952,3956,3975,3993, + 3997,3997,4038,4050,4055,4060,4077,4096,4121,4129, + 4140,4145,4147,4151,4174,4178,4186,4188,4197,4202, + 4203,4212,4212,4214,4217,4232,4266,4267,4274,4283, + 4301,4302,4313,4327,4328,4334,4351,4357,4361,4379, + 4381,4383,4391,4398,4418,4424,4428,4433,4438,4446, + 4454,4468,4472,4482,4485,4489,4490,4509,4521,4527, + 4530,4543,4556,4562,4564,4575,4577,4578,4582,4604, + 4628,4676,4678,4696,4698,4698,4701,4711,4713,4730, + 4737,4742,4745,4762,4770,4776,4779,4799,4815,4822, + 4835,4840,4843,4847,4865,4866,4875,4876,4878,4878, + 4885,4892,4904,4906,4932,4938,4974,4984,4994,4999, + 5000,5002,5012,5016,5035,5050,5061,5066,5084,5103, + 5107,5111,5120,5123,5137,5143,5145,5152,5160,5182, + 5200,5212,5214,5216,5217,5225,5239,5268,5276,5277, + 5327,5331,5357,5363,5364,5372,5393,5406,5407,5419, + 5419,5440,5469,5471,5480,5490,5509,5524,5533,5566, + 5566,5571,5580,5580,5584,5585,5591,5604,5613,5615, + 5617,5617,5622,5646,5650,5658,5660,5664,5683,5685, + 5695,5699,5700,5704,5710,5720,5725,5744,5765,5774, + 5784,5790,5791,5810,5827,5835,5844,5857,5859,5875, + 5913,5914,5919,5925,5939,5954,5959,5966,5966,5981, + 5992,6024,6031,6049,6055,6055,6077,6095,6131,6132, + 6140,6144,6148,6163,6177,6179,6180,6185,6191,6193, + 6198,6205,6225,6232,6236,6249,6269,6287,6303,6315, + 6326,6329,6340,6354,6359,6394,6397,6416,6416,6418, + 6439,6444,6445,6448,6449,6464,6466,6475,6476,6476, + 6491,6496,6500,6501,6510,6534,6546,6548,6559,6587, + 6587,6588,6598,6602,6610,6617,6618,6622,6628,6632, + 6639,6645,6662,6677,6688,6691,6744,6753,6769,6778, + 6802,6818,6835,6844,6853,6860,6878,6897,6899,6920, + 6923,6937,6940,6984,7002,7007,7022,7028,7030,7055, + 7092,7093,7095,7103,7156,7165,7167,7171,7172,7177, + 7184,7185,7200,7205,7238,7241,7249,7253,7256,7260, + 7267,7271,7272,7276,7279,7290,7290,7305,7312,7322, + 7324,7328,7333,7341,7359,7368,7371,7381,7382,7396, + 7405,7420,7421,7421,7433,7455,7460,7472,7473,7499, + 7508,7517,7544,7573,7578,7580,7629,7630,7642,7649, + 7651,7668,7669,7680,7721,7741,7776,7777,7782,7791, + 7793,7816,7821,7823,7826,7835,7848,7867,7876,7890, + 7901,7907,7909,7911,7930,7949,7963,7967,7976,7985, + 7995,7998,8000,8010,8012,8019,8032,8040,8043,8043, + 8059,8083,8090,8091,8101,8103,8107,8108,8123,8127, + 8139,8143,8144,8145,8152,8159,8181,8187,8201,8206, + 8211,8215,8234,8240,8249,8250,8292,8303,8304,8336, + 8343,8350,8369,8383,8398,8400,8405,8411,8429,8447, + 8449,8463,8467,8474,8477,8479,8491,8503,8507,8510, + 8550,8552,8553,8558,8560,8560,8574,8603,8604,8623, + 8628,8629,8637,8640,8640,8642,8650,8663,8664,8694, + 8695,8705,8706,8707,8709,8709,8710,8723,8741,8741, + 8764,8767,8767,8785,8791,8804,8811,8816,8826,8829, + 8836,8859,8872,8875,8876,8881,8898,8900,8902,8909, + 8921,8925,8946,8999,9001,9007,9007,9012,9016,9022, + 9033,9038,9044,9044,9059,9068,9087,9100,9138,9150, + 9158,9172,9183,9186,9191,9193,9194,9206,9207,9248, + 9258,9259,9263,9264,9264,9269,9274,9282,9296,9297, + 9337,9343,9353,9388,9389,9394,9396,9401,9442,9456, + 9457,9465,9469,9485,9488,9535,9544,9553,9562,9569, + 9576,9582,9612,9631,9632,9633,9639,9641,9644,9660, + 9660,9693,9699,9710,9713,9724,9729,9796,9831,9833, + 9843,9889,9890,9914,9931,9935,9943,9947,9957,9969, + 9972,9978,9986,10000,10013,10013,10018,10024,10040,10042, + 10055,10066,10085,10088,10102,10114,10122,10141,10143,10150, + 10158,10184,10188,10204,10206,10214,10216,10224,10228,10233, + 10236,10262,10289,10295,10296,10306,10330,10332,10362,10372, + 10391,10427,10430,10432,10459,10466,10469,10473,10476,10481, + 10487,10493,10498,10500,10500,10505,10506,10514,10518,10564, + 10572,10584,10614,10614,10615,10615,10630,10641,10646,10658, + 10659,10672,10720,10735,10738,10759,10767,10769,10797,10800, + 10804,10816,10821,10825,10844,10860,10906,10930,10939,10959, + 10964,10965,10974,10975,10978,10983,10983,10989,10991,10995, + 11007,11015,11021,11033,11034,11042,11056,11065,11067,11069, + 11076,11084,11092,11094,11107,11108,11126,11127,11131,11146, + 11156,11181,11181,11186,11218,11218,11228,11237,11237,11249, + 11275,11279,11290,11305,11307,11313,11325,11343,11347,11350, + 11355,11364,11447,11474,11481,11484,11485,11502,11508,11508, + 11508,11513,11518,11525,11533,11540,11551,11552,11558,11572, + 11577,11578,11583,11592,11604,11609,11625,11629,11654,11669, + 11678,11679,11701,11718,11720,11728,11748,11749,11753,11788, + 11789,11797,11821,11853,11855,11857,11873,11924,11930,11932, + 11936,11941,11955,11960,11972,11974,11999,12019,12033,12047, + 12067,12075,12077,12082,12087,12092,12096,12096,12099,12104, + 12106,12106,12121,12129,12133,12146,12156,12173,12175,12181, + 12186,12192,12192,12194,12197,12213,12219,12227,12241,12245, + 12255,12305,12309,12318,12318,12337,12348,12355,12358,12363, + 12365,12380,12391,12405,12415,12419,12435,12443,12447,12448, + 12451,12454,12464,12488,12494,12497,12498,12499,12502,12504, + 12507,12526,12535,12535,12549,12565,12612,12627,12632,12643, + 12647,12674,12675,12696,12702,12705,12718,12718,12760,12768, + 12770,12777,12779,12783,12786,12788,12791,12795,12798,12824, + 12833,12838,12852,12855,12864,12879,12892,12894,12904,12908, + 12918,12919,12931,12932,12941,12950,12952,12954,12962,12969, + 12977,12980,12997,13020,13023,13024,13026,13030,13044,13053, + 13071,13072,13073,13099,13103,13106,13115,13120,13120,13137, + 13167,13168,13169,13190,13204,13204,13216,13220,13223,13224, + 13225,13234,13234,13241,13246,13256,13259,13264,13273,13274, + 13282,13285,13289,13302,13303,13317,13330,13331,13333,13334, + 13337,13347,13350,13369,13375,13376,13381,13381,13395,13398, + 13401,13459,13465,13472,13483,13494,13495,13497,13504,13505, + 13512,13516,13525,13539,13542,13556,13573,13578,13579,13580, + 13590,13601,13626,13629,13629,13646,13653,13654,13660,13663, + 13690,13690,13694,13712,13717,13728,13741,13758,13758,13761, + 13766,13767,13775,13782,13787,13838,13839,13849,13849,13870, + 13872,13890,13895,13897,13902,13932,13950,13957,13958,13962, + 13971,13988,13995,14016,14019,14026,14027,14036,14066,14085, + 14095,14144,14166,14169,14170,14173,14184,14184,14187,14194, + 14195,14197,14200,14202,14225,14241,14247,14249,14260,14287, + 14304,14325,14333,14351,14362,14369,14369,14370,14379,14401, + 14406,14415,14428,14441,14457,14457,14461,14464,14481,14491, + 14493,14494,14498,14499,14503,14514,14527,14527,14543,14544, + 14552,14557,14559,14590,14598,14618,14664,14672,14673,14682, + 14707,14710,14738,14740,14740,14756,14760,14762,14763,14775, + 14779,14783,14784,14804,14812,14814,14821,14830,14837,14838, + 14842,14846,14847,14852,14854,14876,14923,14956,14960,14962, + 14990,14998,15002,15005,15016,15017,15019,15023,15045,15078, + 15127,15147,15151,15163,15172,15179,15185,15187,15206,15215, + 15221,15234,15245,15250,15256,15256,15264,15265,15269,15284, + 15298,15307,15318,15318,15323,15324,15327,15345,15372,15382, + 15391,15396,15399,15433,15437,15438,15445,15468,15476,15477, + 15485,15488,15496,15506,15537,15549,15552,15552,15555,15556, + 15568,15581,15584,15597,15599,15603,15625,15630,15631,15642, + 15646,15648,15659,15662,15678,15679,15686,15691,15691,15721, + 15727,15744,15748,15755,15761,15770,15772,15774,15790,15792, + 15799,15801,15805,15807,15816,15817,15819,15841,15848,15859, + 15863,15868,15885,15889,15895,15896,15915,15920,15921,15928, + 15953,15983,16011,16032,16053,16053,16058,16066,16066,16082, + 16107,16121,16127,16131,16170,16171,16186,16189,16190,16200, + 16200,16219,16225,16227,16230,16234,16250,16252,16253,16262, + 16265,16291,16293,16303,16309,16314,16330,16344,16350,16351, + 16366,16377,16382,16383,16384,16412,16417,16423,16434,16441, + 16448,16464,16468,16470,16471,16473,16476,16494,16502,16507, + 16509,16511,16524,16526,16528,16531,16534,16537,16590,16596, + 16597,16603,16604,16624,16639,16667,16669,16671,16677,16679, + 16691,16694,16728,16734,16742,16769,16798,16817,16825,16841, + 16852,16856,16856,16869,16882,16884,16893,16923,16941,16941, + 16944,16945,16945,16950,16954,17008,17017,17033,17036,17054, + 17095,17095,17095,17096,17104,17118,17122,17129,17150,17163, + 17172,17175,17184,17185,17196,17206,17231,17234,17241,17241, + 17255,17256,17314,17325,17326,17379,17382,17389,17395,17402, + 17411,17415,17425,17429,17438,17441,17442,17461,17469,17471, + 17490,17500,17521,17525,17531,17532,17536,17537,17546,17552, + 17573,17580,17582,17592,17595,17613,17616,17617,17631,17641, + 17644,17646,17653,17658,17663,17664,17675,17683,17698,17703, + 17707,17717,17725,17740,17744,17753,17787,17792,17797,17849, + 17878,17909,17912,17923,17928,17947,17951,17963,17968,17968, + 17977,17998,18002,18040,18046,18053,18054,18061,18070,18079, + 18086,18097,18112,18119,18128,18135,18147,18147,18168,18183, + 18194,18195,18205,18219,18226,18232,18235,18251,18254,18275, + 18278,18280,18285,18287,18288,18292,18301,18310,18318,18341, + 18357,18361,18365,18368,18370,18371,18372,18387,18391,18396, + 18411,18412,18419,18421,18421,18441,18450,18451,18452,18460, + 18462,18463,18463,18498,18506,18544,18545,18548,18574,18594, + 18595,18597,18600,18614,18617,18618,18623,18630,18636,18644, + 18655,18662,18678,18690,18694,18708,18718,18729,18732,18733, + 18740,18743,18745,18754,18798,18803,18810,18834,18840,18842, + 18846,18849,18855,18870,18872,18875,18887,18891,18896,18909, + 18930,18941,18945,18955,18967,19006,19013,19013,19015,19031, + 19054,19054,19055,19057,19062,19062,19063,19071,19083,19091, + 19092,19099,19111,19130,19137,19140,19148,19157,19172,19224, + 19227,19255,19307,19307,19316,19330,19334,19343,19357,19360, + 19361,19377,19387,19387,19391,19398,19405,19432,19465,19478, + 19479,19480,19489,19492,19502,19505,19516,19520,19528,19534, + 19557,19566,19590,19611,19618,19624,19625,19641,19652,19660, + 19669,19677,19683,19695,19699,19717,19722,19764,19779,19780, + 19781,19789,19797,19805,19808,19823,19825,19827,19836,19837, + 19842,19844,19858,19858,19883,19889,19905,19960,19962,19964, + 19966,19983,19987,19988,19998,20002,20018,20029,20057,20096, + 20105,20108,20118,20133,20135,20136,20139,20139,20141,20144, + 20156,20173,20189,20194,20195,20200,20208,20224,20240,20265, + 20278,20291,20294,20324,20325,20333,20341,20377,20390,20397, + 20397,20409,20423,20427,20445,20457,20471,20495,20498,20504, + 20508,20515,20533,20537,20539,20540,20542,20542,20562,20581, + 20585,20599,20625,20628,20631,20658,20661,20682,20700,20703, + 20704,20716,20726,20754,20775,20777,20778,20783,20783,20785, + 20792,20795,20805,20807,20818,20846,20847,20854,20868,20884, + 20891,20892,20906,20906,20912,20916,20943,20943,20955,20958, + 20961,20968,20984,20995,21014,21014,21016,21033,21046,21048, + 21058,21070,21077,21083,21093,21110,21118,21118,21126,21136, + 21145,21152,21156,21182,21185,21204,21209,21211,21225,21227, + 21244,21247,21251,21264,21292,21295,21322,21328,21335,21338, + 21351,21352,21365,21377,21382,21382,21386,21395,21402,21410, + 21418,21427,21431,21484,21484,21489,21489,21495,21533,21537, + 21542,21545,21548,21556,21562,21562,21569,21574,21605,21611, + 21620,21624,21628,21632,21643,21658,21683,21686,21690,21692, + 21693,21696,21707,21712,21713,21720,21735,21739,21743,21746, + 21751,21756,21758,21770,21782,21794,21802,21823,21826,21828, + 21845,21859,21875,21883,21892,21894,21896,21903,21950,21953, + 21970,21993,21994,22014,22018,22024,22025,22037,22039,22049, + 22052,22053,22055,22057,22064,22088,22091,22091,22113,22115, + 22135,22148,22156,22163,22179,22244,22266,22276,22279,22283, + 22291,22298,22317,22325,22348,22354,22355,22370,22377,22377, + 22383,22395,22400,22418,22424,22426,22431,22435,22445,22451, + 22465,22482,22496,22528,22560,22566,22583,22645,22648,22653, + 22657,22657,22693,22705,22709,22712,22716,22722,22723,22726, + 22730,22745,22752,22778,22788,22790,22792,22801,22802,22802, + 22811,22835,22845,22894,22911,22923,22926,22926,22963,22995, + 23007,23012,23030,23033,23034,23041,23050,23059,23066,23079, + 23085,23089,23099,23105,23130,23130,23136,23141,23150,23159, + 23170,23218,23226,23228,23229,23230,23252,23255,23261,23279, + 23296,23302,23319,23359,23366,23367,23374,23387,23393,23404, + 23424,23426,23429,23434,23450,23462,23493,23514,23516,23520, + 23524,23557,23562,23591,23607,23617,23623,23633,23637,23640, + 23681,23682,23696,23702,23702,23708,23709,23721,23765,23769, + 23782,23824,23841,23846,23851,23858,23863,23881,23882,23885, + 23888,23896,23907,23920,23927,23928,23943,23944,23952,23956, + 23959,23977,24006,24015,24040,24076,24086,24089,24089,24101, + 24102,24132,24138,24144,24148,24152,24158,24165,24187,24203, + 24215,24218,24229,24230,24245,24261,24270,24282,24290,24315, + 24318,24357,24404,24405,24407,24414,24423,24425,24434,24447, + 24460,24464,24469,24469,24494,24496,24501,24516,24526,24548, + 24555,24563,24573,24585,24587,24587,24610,24612,24624,24626, + 24651,24670,24671,24676,24687,24695,24704,24708,24714,24722, + 24739,24742,24749,24758,24769,24773,24783,24790,24799,24801, + 24801,24811,24813,24821,24844,24846,24846,24851,24859,24859, + 24860,24865,24867,24882,24902,24914,24929,24957,24963,24969, + 24969,24972,24976,24982,24984,24985,24994,25003,25013,25030, + 25033,25040,25041,25045,25066,25088,25090,25093,25133,25139, + 25149,25151,25164,25171,25180,25200,25213,25222,25225,25232, + 25255,25278,25306,25307,25344,25345,25361,25367,25368,25370, + 25379,25408,25422,25424,25432,25440,25445,25447,25457,25462, + 25488,25488,25498,25499,25500,25505,25511,25520,25529,25533, + 25541,25557,25564,25566,25592,25634,25657,25668,25683,25685, + 25686,25697,25699,25700,25711,25759,25774,25782,25789,25800, + 25807,25823,25825,25844,25854,25858,25893,25895,25905,25908, + 25912,25918,25925,25927,25945,25947,25952,25968,25993,25995, + 26001,26020,26026,26066,26085,26086,26095,26098,26116,26125, + 26125,26131,26132,26143,26147,26164,26169,26182,26183,26183, + 26208,26210,26214,26219,26231,26232,26234,26249,26255,26263, + 26267,26273,26275,26280,26280,26301,26303,26308,26317,26317, + 26341,26344,26345,26353,26368,26376,26395,26435,26444,26470, + 26477,26488,26490,26493,26499,26501,26506,26507,26530,26532, + 26546,26553,26557,26561,26567,26576,26578,26582,26621,26636, + 26648,26670,26672,26684,26709,26712,26715,26728,26735,26742, + 26754,26759,26778,26778,26810,26818,26823,26824,26830,26839, + 26842,26848,26865,26865,26870,26872,26880,26886,26903,26908, + 26908,26913,26913,26953,26958,26971,26971,26991,26992,26994, + 27002,27003,27015,27022,27038,27046,27074,27075,27077,27078, + 27096,27101,27102,27131,27132,27139,27141,27145,27154,27160, + 27166,27173,27176,27185,27185,27193,27200,27214,27225,27243, + 27251,27252,27252,27259,27260,27286,27287,27292,27294,27294, + 27313,27313,27330,27341,27341,27352,27359,27363,27374,27380, + 27393,27405,27408,27419,27437,27440,27450,27452,27456,27465, + 27467,27477,27482,27498,27516,27517,27520,27526,27567,27585, + 27615,27617,27617,27626,27628,27638,27639,27646,27651,27673, + 27679,27697,27698,27729,27736,27739,27740,27749,27751,27751, + 27752,27766,27773,27781,27800,27805,27805,27815,27833,27849, + 27854,27856,27857,27857,27860,27863,27890,27891,27902,27907, + 27912,27919,27939,27941,27963,27965,27969,27971,27973,27987, + 27990,27996,27998,28002,28013,28039,28039,28041,28043,28047, + 28049,28060,28075,28086,28089,28111,28131,28140,28140,28146, + 28150,28151,28162,28182,28192,28193,28204,28204,28206,28206, + 28209,28226,28232,28238,28249,28255,28265,28272,28284,28303, + 28314,28316,28337,28351,28385,28412,28431,28432,28435,28438, + 28450,28452,28460,28504,28512,28518,28536,28549,28550,28558, + 28565,28574,28576,28579,28582,28592,28594,28595,28602,28605, + 28627,28640,28646,28684,28686,28691,28701,28706,28725,28729, + 28735,28739,28742,28743,28745,28747,28749,28796,28807,28816, + 28861,28862,28880,28901,28909,28918,28938,28940,28946,28962, + 28966,28996,28998,29027,29030,29032,29045,29048,29053,29055, + 29068,29077,29080,29084,29102,29117,29118,29122,29125,29154, + 29157,29165,29175,29176,29197,29210,29218,29226,29228,29245, + 29247,29253,29262,29266,29271,29274,29295,29305,29310,29335, + 29341,29346,29348,29383,29394,29397,29429,29438,29446,29458, + 29468,29476,29498,29505,29513,29515,29523,29524,29531,29531, + 29538,29539,29543,29554,29554,29565,29566,29620,29623,29627, + 29636,29649,29656,29663,29669,29688,29702,29714,29722,29727, + 29731,29741,29759,29760,29772,29777,29802,29812,29820,29830, + 29830,29852,29854,29885,29894,29901,29905,29906,29909,29932, + 29953,29960,29967,29987,29993,29999,30018,30021,30034,30043, + 30047,30069,30095,30099,30117,30126,30152,30165,30184,30186, + 30190,30190,30204,30207,30215,30219,30222,30223,30235,30256, + 30263,30284,30285,30289,30290,30298,30337,30341,30343,30344, + 30357,30362,30381,30406,30436,30447,30462,30477,30505,30506, + 30512,30517,30521,30540,30549,30550,30566,30569,30585,30587, + 30601,30623,30624,30626,30656,30661,30661,30711,30714,30735, + 30744,30745,30755,30764,30773,30775,30791,30803,30814,30828, + 30832,30842,30842,30845,30847,30848,30854,30874,30878,30888, + 30905,30908,30924,30928,30949,30958,30958,30961,30991,31025, + 31031,31032,31037,31039,31049,31050,31062,31089,31098,31111, + 31124,31135,31139,31141,31145,31157,31212,31219,31225,31244, + 31254,31261,31271,31276,31282,31285,31293,31299,31301,31305, + 31324,31330,31359,31360,31360,31371,31371,31397,31400,31420, + 31431,31431,31456,31469,31472,31476,31501,31505,31506,31510, + 31517,31534,31537,31539,31557,31558,31569,31597,31611,31614, + 31622,31642,31654,31664,31680,31681,31697,31707,31708,31717, + 31719,31724,31746,31748,31760,31765,31768,31769,31772,31777, + 31789,31807,31831,31832,31837,31843,31853,31868,31869,31879, + 31880,31890,31891,31894,31896,31908,31916,31926,31929,31934, + 31935,31935,31961,31980,31986,32007,32030,32046,32047,32053, + 32055,32058,32081,32089,32090,32091,32108,32109,32124,32127, + 32142,32145,32150,32155,32156,32163,32182,32193,32198,32208, + 32214,32220,32220,32221,32224,32229,32268,32299,32319,32319, + 32324,32333,32336,32339,32348,32364,32366,32368,32388,32409, + 32412,32417,32420,32424,32431,32432,32445,32451,32458,32463, + 32477,32484,32487,32487,32488,32504,32531,32537,32542,32544, + 32553,32557,32561,32581,32586,32593,32602,32604,32609,32616, + 32619,32625,32630,32642,32651,32652,32653,32661,32668,32682, + 32688,32732,32739,32742,32758,32776,32785,32789,32809,32824, + 32826,32829,32829,32844,32884,32890,32892,32921,32922,32944, + 32948,32973,32983,32983,32988,33001,33008,33012,33015,33019, + 33041,33059,33062,33066,33132,33155,33155,33170,33174,33178, + 33183,33206,33211,33218,33222,33223,33225,33231,33240,33251, + 33255,33263,33275,33277,33295,33295,33301,33315,33317,33351, + 33372,33399,33400,33402,33427,33431,33434,33439,33447,33465, + 33470,33485,33493,33495,33500,33510,33542,33550,33555,33566, + 33584,33586,33609,33626,33628,33636,33637,33654,33657,33661, + 33663,33665,33674,33678,33686,33698,33699,33706,33722,33740, + 33740,33742,33778,33792,33794,33810,33811,33818,33818,33825, + 33826,33851,33880,33914,33922,33926,33928,33931,33959,33971, + 33972,33992,34026,34032,34051,34075,34099,34110,34121,34134, + 34158,34176,34183,34184,34190,34194,34195,34213,34217,34220, + 34230,34232,34248,34259,34269,34269,34293,34295,34307,34315, + 34333,34334,34336,34349,34359,34364,34366,34366,34388,34388, + 34398,34398,34401,34411,34447,34458,34481,34486,34487,34491, + 34500,34505,34510,34514,34575,34584,34587,34593,34601,34606, + 34619,34622,34641,34658,34668,34669,34688,34709,34709,34731, + 34731,34739,34752,34757,34758,34776,34776,34800,34801,34803, + 34826,34839,34839,34842,34850,34851,34863,34872,34873,34875, + 34880,34881,34899,34905,34911,34915,34924,34927,34934,34942, + 34943,34944,34955,34957,34962,34965,34969,34973,34975,34984, + 34986,34987,35006,35006,35009,35014,35017,35051,35051,35053, + 35061,35080,35088,35092,35096,35110,35116,35121,35145,35149, + 35153,35169,35172,35203,35233,35242,35244,35251,35262,35267, + 35268,35279,35286,35304,35310,35311,35312,35323,35332,35344, + 35351,35359,35375,35381,35383,35388,35393,35448,35456,35457, + 35478,35507,35507,35508,35537,35567,35602,35602,35603,35605, + 35608,35627,35633,35654,35657,35668,35690,35712,35719,35723, + 35725,35726,35727,35747,35803,35805,35834,35845,35855,35857, + 35880,35883,35898,35905,35912,35915,35916,35920,35945,35956, + 35962,35967,35990,35992,35994,36007,36026,36029,36032,36042, + 36059,36064,36074,36077,36085,36095,36099,36104,36106,36118, + 36120,36124,36133,36136,36142,36145,36162,36163,36167,36178, + 36180,36226,36238,36238,36241,36249,36259,36268,36276,36277, + 36290,36293,36296,36307,36316,36346,36367,36368,36388,36458, + 36477,36481,36481,36488,36501,36504,36507,36512,36512,36517, + 36518,36529,36530,36532,36532,36537,36541,36543,36548,36560, + 36577,36577,36591,36606,36621,36625,36660,36673,36679,36684, + 36685,36695,36698,36708,36709,36720,36736,36737,36743,36771, + 36791,36795,36804,36823,36823,36841,36857,36867,36871,36873, + 36876,36888,36905,36919,36936,36953,36960,36966,36970,36976, + 36981,36987,36996,37003,37011,37014,37052,37078,37079,37085, + 37086,37095,37107,37107,37115,37174,37177,37179,37180,37201, + 37213,37237,37258,37262,37268,37270,37270,37288,37298,37308, + 37309,37312,37318,37322,37354,37369,37371,37376,37379,37385, + 37393,37401,37424,37429,37432,37437,37438,37439,37439,37448, + 37460,37461,37473,37481,37482,37484,37485,37493,37509,37518, + 37523,37524,37536,37540,37545,37550,37550,37555,37572,37606, + 37616,37624,37649,37651,37661,37663,37664,37680,37697,37702, + 37717,37725,37732,37744,37757,37761,37780,37788,37811,37813, + 37829,37834,37836,37864,37907,37923,37935,37942,37951,37957, + 37959,37965,37992,38000,38028,38030,38030,38063,38065,38103, + 38104,38113,38126,38141,38143,38147,38156,38161,38173,38174, + 38177,38186,38193,38195,38196,38197,38260,38268,38275,38282, + 38285,38306,38315,38319,38331,38334,38340,38344,38347,38357, + 38363,38380,38393,38397,38410,38462,38470,38470,38475,38475, + 38483,38489,38491,38492,38504,38508,38511,38512,38518,38519, + 38535,38538,38579,38582,38629,38637,38648,38675,38676,38682, + 38793,38797,38805,38806,38812,38812,38820,38820,38828,38842, + 38867,38869,38883,38891,38895,38897,38903,38918,38935,38948, + 38949,38949,38953,38976,38991,38992,38998,38999,39009,39024, + 39046,39058,39064,39105,39105,39106,39109,39128,39131,39151, + 39179,39183,39218,39234,39239,39270,39286,39290,39296,39313, + 39322,39324,39331,39334,39338,39352,39359,39368,39382,39394, + 39413,39432,39444,39448,39450,39462,39467,39487,39494,39516, + 39517,39533,39544,39585,39588,39593,39598,39607,39609,39611, + 39627,39661,39661,39679,39691,39698,39722,39735,39737,39737, + 39747,39751,39765,39773,39775,39779,39799,39833,39843,39849, + 39861,39869,39885,39900,39901,39918,39924,39926,39987,39993, + 40023,40028,40034,40041,40044,40053,40056,40066,40067,40082, + 40082,40111,40121,40125,40157,40158,40165,40171,40184,40191, + 40193,40198,40202,40202,40203,40211,40223,40233,40237,40258, + 40271,40274,40276,40298,40326,40328,40335,40339,40341,40344, + 40360,40372,40380,40384,40403,40405,40408,40430,40431,40431, + 40434,40450,40458,40475,40483,40512,40516,40518,40522,40535, + 40536,40539,40539,40540,40546,40548,40551,40552,40561,40567, + 40569,40570,40578,40578,40602,40608,40614,40623,40631,40636, + 40639,40647,40649,40660,40666,40666,40669,40672,40683,40689, + 40689,40691,40698,40700,40710,40711,40732,40735,40753,40755, + 40769,40774,40788,40792,40803,40830,40835,40847,40876,40882, + 40888,40896,40896,40898,40907,40910,40912,40929,40935,40951, + 40954,40968,40971,40971,40978,40984,40991,40992,41028,41033, + 41035,41038,41050,41068,41075,41078,41095,41104,41146,41149, + 41151,41154,41163,41167,41167,41170,41180,41190,41193,41211, + 41242,41242,41244,41244,41244,41250,41252,41271,41272,41289, + 41293,41296,41298,41307,41325,41347,41352,41368,41370,41377, + 41378,41387,41387,41403,41421,41423,41432,41471,41476,41482, + 41488,41496,41509,41513,41520,41525,41534,41542,41552,41561, + 41569,41573,41575,41587,41597,41602,41609,41630,41644,41645, + 41656,41688,41692,41714,41718,41721,41733,41735,41737,41737, + 41746,41764,41779,41805,41820,41830,41831,41841,41846,41850, + 41858,41875,41888,41890,41893,41903,41913,41915,41970,41973, + 41980,41992,42018,42055,42065,42068,42073,42092,42144,42157, + 42159,42162,42174,42185,42240,42247,42259,42259,42270,42270, + 42273,42273,42294,42301,42311,42322,42332,42336,42357,42357, + 42365,42381,42388,42401,42404,42422,42426,42431,42454,42472, + 42478,42482,42490,42492,42511,42529,42530,42531,42531,42532, + 42534,42546,42554,42573,42580,42598,42613,42618,42619,42675, + 42676,42679,42680,42681,42694,42695,42700,42715,42716,42717, + 42723,42728,42738,42740,42747,42774,42787,42793,42801,42810, + 42817,42829,42832,42843,42844,42847,42868,42873,42877,42884, + 42886,42904,42907,42921,42924,42927,42927,42934,42957,42968, + 42972,42972,42975,42992,43006,43011,43021,43039,43043,43060, + 43061,43075,43075,43076,43081,43120,43135,43142,43146,43179, + 43191,43192,43198,43203,43214,43217,43217,43239,43239,43247, + 43255,43276,43281,43284,43284,43287,43292,43310,43328,43328, + 43336,43339,43341,43341,43349,43370,43373,43374,43380,43388, + 43400,43415,43416,43424,43435,43441,43443,43446,43451,43454, + 43455,43459,43463,43465,43473,43491,43498,43506,43520,43525, + 43532,43555,43560,43562,43581,43608,43612,43620,43623,43626, + 43629,43664,43665,43681,43694,43778,43791,43803,43804,43843, + 43850,43855,43878,43908,43938,43948,43953,43965,43983,43983, + 43985,43990,44017,44022,44043,44052,44058,44060,44067,44073, + 44110,44111,44112,44113,44117,44124,44135,44143,44143,44144, + 44145,44158,44180,44197,44221,44231,44234,44236,44244,44278, + 44300,44308,44340,44349,44370,44379,44385,44412,44413,44423, + 44426,44429,44441,44441,44448,44451,44456,44480,44480,44482, + 44497,44498,44502,44517,44527,44531,44537,44550,44552,44561, + 44564,44570,44576,44588,44607,44609,44610,44637,44649,44689, + 44701,44716,44736,44753,44785,44789,44816,44822,44829,44854, + 44866,44867,44875,44881,44888,44899,44907,44917,44922,44924, + 44948,44956,44969,44970,44974,44982,45000,45008,45015,45018, + 45039,45039,45075,45094,45096,45107,45108,45116,45133,45135, + 45137,45151,45157,45164,45189,45204,45208,45220,45220,45238, + 45243,45253,45257,45257,45279,45299,45309,45324,45326,45326, + 45326,45337,45337,45358,45363,45374,45386,45391,45405,45407, + 45408,45408,45413,45413,45423,45425,45427,45437,45443,45445, + 45448,45511,45513,45521,45530,45534,45579,45583,45586,45597, + 45602,45629,45642,45646,45646,45653,45653,45660,45661,45676, + 45678,45685,45689,45702,45718,45738,45756,45757,45760,45773, + 45778,45784,45799,45807,45816,45838,45845,45853,45857,45859, + 45863,45872,45932,45942,45942,45956,45958,45964,45966,45968, + 45975,45975,45978,45979,45992,45993,46013,46017,46030,46040, + 46052,46053,46055,46090,46101,46127,46137,46164,46173,46181, + 46201,46201,46204,46212,46311,46332,46341,46364,46367,46372, + 46387,46400,46413,46418,46427,46435,46452,46477,46478,46484, + 46506,46521,46523,46525,46526,46526,46530,46535,46538,46544, + 46552,46566,46590,46610,46612,46633,46636,46640,46640,46641, + 46668,46672,46685,46685,46709,46722,46733,46742,46766,46780, + 46782,46783,46798,46808,46815,46823,46825,46826,46850,46856, + 46857,46868,46871,46889,46908,46944,46964,46970,46974,46994, + 47013,47027,47042,47048,47056,47062,47084,47121,47136,47142, + 47148,47156,47159,47179,47188,47204,47212,47215,47224,47237, + 47262,47267,47272,47289,47292,47307,47314,47324,47329,47330, + 47334,47346,47355,47363,47367,47370,47379,47386,47392,47397, + 47398,47408,47408,47418,47429,47435,47439,47443,47452,47466, + 47466,47477,47499,47512,47518,47529,47533,47538,47545,47551, + 47555,47578,47578,47581,47594,47607,47626,47627,47660,47660, + 47667,47678,47681,47691,47694,47712,47717,47728,47731,47742, + 47742,47760,47764,47779,47799,47801,47804,47808,47830,47848, + 47865,47871,47872,47874,47879,47880,47883,47894,47896,47915, + 47934,47941,47949,47950,47956,47971,47972,47972,47984,47991, + 48003,48012,48030,48045,48046,48060,48068,48074,48078,48078, + 48081,48083,48087,48089,48092,48092,48099,48113,48140,48144, + 48149,48149,48153,48174,48194,48206,48207,48210,48240,48243, + 48265,48278,48282,48283,48287,48309,48311,48315,48318,48328, + 48337,48341,48359,48368,48370,48387,48404,48411,48415,48436, + 48444,48451,48456,48458,48460,48475,48477,48484,48493,48507, + 48546,48552,48572,48581,48592,48597,48600,48610,48613,48616, + 48619,48619,48620,48637,48652,48676,48683,48692,48698,48704, + 48750,48755,48762,48762,48763,48765,48765,48766,48782,48790, + 48791,48802,48812,48812,48812,48821,48826,48855,48875,48876, + 48890,48892,48900,48901,48909,48911,48924,48931,48943,48953, + 48965,48986,48997,49009,49015,49017,49027,49027,49031,49048, + 49092,49100,49103,49121,49126,49128,49147,49153,49178,49205, + 49211,49216,49219,49229,49233,49235,49251,49253,49258,49305, + 49317,49337,49354,49361,49364,49396,49400,49406,49414,49438, + 49441,49448,49501,49505,49511,49518,49522,49539,49546,49569, + 49577,49593,49601,49604,49605,49613,49621,49657,49664,49669, + 49679,49692,49705,49716,49716,49744,49746,49753,49763,49770, + 49772,49772,49787,49791,49795,49797,49804,49816,49831,49836, + 49837,49837,49844,49869,49879,49889,49895,49901,49936,49938, + 49956,49991,49994,50018,50023,50132,50134,50135,50151,50158, + 50158,50158,50169,50177,50178,50186,50192,50198,50214,50215, + 50220,50241,50250,50263,50273,50275,50285,50294,50325,50339, + 50352,50368,50381,50383,50390,50405,50409,50418,50419,50420, + 50430,50435,50442,50452,50490,50495,50497,50500,50555,50559, + 50570,50578,50578,50581,50604,50611,50613,50620,50644,50656, + 50663,50713,50720,50723,50730,50737,50742,50758,50772,50785, + 50793,50816,50827,50831,50873,50947,50952,50953,50959,50959, + 50965,50970,50970,50975,50988,50999,51001,51013,51019,51029, + 51030,51034,51038,51049,51053,51061,51075,51077,51094,51101, + 51102,51110,51111,51117,51125,51138,51141,51142,51148,51150, + 51153,51167,51173,51186,51238,51238,51257,51263,51277,51281, + 51284,51288,51288,51296,51301,51302,51315,51334,51336,51346, + 51356,51368,51378,51379,51400,51406,51423,51439,51444,51444, + 51449,51464,51465,51466,51500,51522,51534,51549,51549,51569, + 51577,51615,51620,51653,51666,51681,51684,51685,51689,51693, + 51694,51703,51718,51750,51751,51752,51763,51775,51779,51794, + 51846,51852,51854,51868,51898,51901,51910,51921,51929,51963, + 51971,51981,52002,52018,52022,52027,52030,52031,52036,52052, + 52057,52058,52090,52097,52098,52104,52106,52136,52137,52144, + 52145,52147,52153,52157,52161,52162,52164,52167,52171,52188, + 52228,52236,52245,52260,52272,52272,52273,52276,52289,52291, + 52293,52293,52301,52317,52320,52323,52327,52334,52335,52336, + 52351,52360,52370,52404,52416,52433,52435,52456,52459,52469, + 52470,52490,52505,52523,52531,52546,52547,52557,52566,52570, + 52572,52584,52601,52610,52614,52617,52618,52660,52665,52670, + 52674,52683,52697,52713,52714,52724,52728,52728,52729,52741, + 52751,52754,52792,52806,52817,52823,52825,52841,52853,52858, + 52863,52867,52885,52894,52897,52907,52914,52923,52930,52931, + 52934,52939,52961,52967,52975,52977,52978,52984,52985,52989, + 53018,53033,53036,53065,53086,53096,53114,53124,53146,53168, + 53183,53184,53194,53206,53227,53227,53229,53256,53266,53274, + 53283,53289,53293,53295,53301,53304,53306,53353,53355,53360, + 53375,53383,53397,53418,53422,53427,53461,53465,53471,53472, + 53489,53502,53503,53503,53505,53508,53511,53517,53531,53542, + 53561,53564,53573,53591,53602,53604,53615,53622,53647,53648, + 53663,53690,53708,53715,53725,53740,53764,53769,53774,53779, + 53794,53799,53812,53867,53878,53921,53929,53934,53936,53945, + 53949,53954,53967,53973,53978,53982,53996,54001,54014,54027, + 54029,54037,54049,54052,54059,54067,54086,54088,54088,54093, + 54110,54111,54128,54129,54129,54137,54143,54148,54158,54161, + 54166,54196,54199,54211,54211,54217,54256,54257,54272,54279, + 54285,54290,54293,54298,54304,54307,54318,54323,54324,54329, + 54332,54345,54350,54357,54358,54391,54399,54404,54404,54409, + 54426,54444,54454,54463,54464,54476,54481,54494,54502,54538, + 54551,54562,54577,54583,54600,54616,54616,54619,54629,54630, + 54670,54672,54672,54698,54724,54739,54748,54751,54759,54790, + 54791,54792,54794,54801,54810,54812,54831,54842,54858,54860, + 54890,54903,54911,54938,54939,54944,54948,54954,54958,54963, + 54967,54990,54993,54996,55003,55007,55018,55027,55035,55036, + 55051,55051,55065,55079,55088,55090,55091,55098,55101,55160, + 55187,55215,55215,55229,55240,55261,55266,55280,55289,55296, + 55307,55309,55344,55344,55396,55409,55432,55436,55440,55453, + 55462,55466,55472,55472,55481,55497,55500,55512,55520,55564, + 55564,55569,55578,55581,55589,55604,55622,55626,55628,55638, + 55645,55674,55679,55688,55689,55704,55705,55706,55711,55738, + 55772,55772,55797,55800,55815,55843,55849,55857,55864,55867, + 55882,55895,55909,55909,55929,55932,55945,55962,55963,55971, + 55972,56021,56028,56034,56072,56072,56078,56078,56081,56084, + 56086,56090,56095,56102,56103,56108,56108,56117,56138,56151, + 56154,56168,56177,56180,56191,56193,56198,56202,56230,56235, + 56282,56332,56334,56357,56366,56370,56376,56385,56392,56397, + 56408,56427,56431,56437,56453,56456,56459,56461,56465,56468, + 56478,56479,56484,56491,56513,56525,56543,56554,56567,56573, + 56578,56584,56585,56590,56604,56615,56616,56617,56664,56665, + 56690,56695,56714,56755,56759,56768,56769,56776,56776,56796, + 56804,56806,56825,56833,56855,56857,56861,56891,56897,56922, + 56929,56940,56954,56974,56981,56982,57015,57021,57049,57059, + 57067,57085,57102,57102,57114,57117,57120,57126,57132,57132, + 57138,57138,57141,57141,57154,57165,57168,57180,57193,57204, + 57207,57213,57230,57241,57251,57253,57263,57276,57295,57309, + 57314,57332,57340,57340,57347,57352,57355,57367,57377,57410, + 57419,57433,57446,57447,57452,57457,57469,57486,57486,57488, + 57507,57509,57536,57542,57545,57547,57555,57557,57561,57563, + 57577,57590,57605,57613,57619,57631,57641,57652,57667,57672, + 57672,57682,57687,57694,57709,57736,57742,57750,57762,57772, + 57783,57783,57796,57807,57833,57854,57856,57864,57872,57911, + 57924,57938,57943,57949,57970,57978,57982,57995,57997,58006, + 58011,58016,58031,58031,58042,58057,58066,58076,58104,58128, + 58129,58133,58135,58136,58141,58142,58143,58145,58146,58147, + 58200,58205,58209,58210,58218,58220,58237,58251,58272,58273, + 58276,58279,58279,58287,58289,58291,58298,58312,58319,58323, + 58338,58342,58344,58353,58362,58370,58382,58396,58440,58453, + 58461,58468,58482,58505,58515,58524,58530,58547,58567,58581, + 58600,58610,58629,58632,58633,58650,58656,58672,58679,58685, + 58711,58711,58730,58734,58739,58751,58755,58774,58783,58797, + 58806,58864,58876,58880,58893,58920,58929,58947,58948,58949, + 58962,58975,59004,59011,59037,59047,59057,59061,59064,59069, + 59082,59088,59125,59128,59132,59142,59160,59161,59162,59169, + 59170,59179,59186,59207,59216,59219,59222,59228,59237,59277, + 59288,59294,59302,59317,59335,59352,59355,59374,59389,59402, + 59417,59423,59433,59447,59456,59461,59485,59514,59535,59584, + 59593,59604,59616,59618,59649,59678,59679,59687,59689,59694, + 59695,59709,59718,59721,59728,59729,59763,59780,59788,59790, + 59801,59806,59811,59822,59830,59835,59861,59866,59879,59885, + 59887,59891,59906,59915,59933,59936,59950,59952,59976,59986, + 59990,59997,60005,60008,60018,60029,60054,60061,60071,60075, + 60077,60102,60117,60139,60139,60152,60167,60182,60185,60192, + 60202,60234,60242,60247,60257,60258,60265,60290,60290,60316, + 60322,60332,60349,60350,60350,60355,60360,60361,60371,60393, + 60395,60419,60420,60434,60439,60459,60486,60496,60497,60501, + 60507,60515,60539,60555,60570,60624,60624,60629,60631,60632, + 60637,60638,60655,60658,60665,60683,60691,60701,60702,60703, + 60703,60705,60712,60717,60722,60725,60734,60744,60752,60752, + 60756,60769,60780,60786,60793,60796,60797,60803,60805,60831, + 60831,60833,60834,60843,60851,60852,60857,60869,60883,60894, + 60895,60896,60914,60924,60926,60955,60961,60963,60968,60978, + 60984,60990,60993,60999,61007,61008,61015,61019,61021,61040, + 61043,61067,61087,61089,61126,61174,61175,61179,61190,61195, + 61198,61200,61209,61218,61219,61222,61234,61236,61236,61241, + 61251,61255,61261,61278,61291,61297,61302,61302,61313,61315, + 61322,61390,61405,61412,61418,61436,61438,61438,61450,61454, + 61471,61479,61483,61503,61508,61510,61512,61514,61520,61532, + 61561,61565,61568,61588,61589,61589,61600,61610,61641,61662, + 61663,61663,61670,61701,61708,61718,61725,61756,61779,61802, + 61811,61815,61816,61824,61841,61841,61850,61855,61866,61891, + 61894,61901,61903,61903,61904,61908,61918,61936,61944,61959, + 61993,61996,62006,62007,62023,62044,62051,62078,62083,62088, + 62121,62123,62126,62149,62161,62165,62165,62166,62175,62186, + 62187,62187,62194,62245,62250,62252,62256,62262,62290,62296, + 62307,62336,62343,62353,62367,62377,62378,62397,62400,62416, + 62417,62420,62429,62437,62473,62482,62522,62524,62528,62528, + 62530,62541,62545,62557,62563,62569,62596,62616,62617,62617, + 62622,62626,62626,62660,62663,62699,62705,62711,62761,62762, + 62766,62801,62803,62813,62838,62839,62847,62871,62879,62884, + 62889,62899,62935,62935,62935,62936,62940,62942,62942,62943, + 62950,62955,62956,62956,62961,62973,62978,63017,63028,63032, + 63050,63055,63056,63077,63080,63092,63094,63096,63097,63110, + 63126,63161,63168,63184,63205,63228,63232,63233,63238,63239, + 63254,63262,63289,63292,63335,63343,63347,63355,63371,63391, + 63393,63398,63420,63422,63429,63434,63450,63475,63477,63504, + 63511,63518,63519,63523,63531,63551,63555,63556,63561,63567, + 63571,63574,63579,63580,63590,63591,63605,63618,63621,63621, + 63638,63658,63665,63669,63683,63689,63703,63705,63709,63710, + 63730,63735,63739,63740,63743,63751,63754,63769,63787,63792, + 63794,63796,63842,63853,63872,63895,63908,63920,63921,63936, + 63944,63946,63951,64046,64046,64047,64056,64056,64058,64062, + 64071,64097,64115,64173,64176,64177,64179,64188,64192,64215, + 64222,64225,64245,64255,64264,64269,64277,64281,64297,64332, + 64333,64347,64361,64364,64378,64385,64397,64397,64405,64409, + 64424,64434,64449,64453,64462,64462,64468,64475,64520,64521, + 64533,64534,64543,64545,64578,64606,64610,64629,64632,64642, + 64663,64669,64694,64696,64700,64707,64722,64754,64757,64793, + 64811,64830,64857,64859,64860,64863,64880,64895,64905,64907, + 64910,64913,64924,64929,64936,64937,64956,64957,64972,64979, + 64997,65000,65004,65006,65010,65017,65036,65041,65054,65060, + 65090,65093,65097,65099,65101,65130,65131,65143,65145,65149, + 65153,65182,65189,65200,65218,65272,65278,65283,65300,65300, + 65317,65327,65327,65331,65335,65340,65342,65353,65385,65386, + 65403,65409,65409,65413,65421,65422,65427,65430,65491,65491, + 65492,65492,65499,65500,65502,65511,65520,65524,65544,65563, + 65564,65564,65569,65579,65586,65610,65618,65624,65655,65675, + 65689,65691,65691,65693,65702,65711,65728,65730,65738,65741, + 65749,65751,65757,65767,65768,65777,65783,65786,65788,65789, + 65794,65795,65800,65842,65847,65852,65864,65875,65878,65882, + 65890,65914,65923,65928,65930,65931,65934,65946,65966,65980, + 65991,65993,65998,66029,66033,66043,66044,66048,66051,66054, + 66073,66087,66099,66146,66153,66153,66176,66180,66198,66211, + 66237,66245,66254,66257,66267,66281,66282,66287,66298,66299, + 66324,66327,66328,66331,66342,66345,66346,66352,66358,66360, + 66367,66380,66400,66428,66434,66435,66448,66461,66472,66473, + 66493,66495,66516,66521,66525,66548,66575,66591,66594,66600, + 66619,66626,66631,66643,66647,66651,66673,66680,66698,66717, + 66725,66734,66735,66736,66736,66737,66740,66752,66753,66756, + 66757,66762,66763,66775,66779,66803,66818,66820,66824,66846, + 66860,66872,66873,66882,66915,66937,66957,66967,66982,66987, + 66994,67007,67010,67021,67025,67038,67039,67043,67053,67070, + 67075,67087,67094,67098,67104,67138,67138,67139,67147,67152, + 67157,67220,67221,67231,67253,67266,67270,67272,67298,67299, + 67302,67309,67327,67335,67352,67359,67366,67381,67390,67414, + 67416,67428,67430,67438,67456,67470,67478,67508,67513,67520, + 67520,67543,67561,67568,67576,67591,67601,67605,67607,67607, + 67637,67669,67671,67674,67684,67693,67710,67724,67743,67743, + 67748,67762,67774,67805,67820,67822,67833,67855,67859,67860, + 67862,67871,67881,67886,67891,67899,67917,67925,67926,67932, + 67939,67970,67973,67982,67990,67999,68001,68004,68021,68027, + 68028,68031,68032,68041,68049,68056,68064,68088,68096,68109, + 68115,68154,68158,68185,68192,68202,68213,68214,68215,68228, + 68241,68280,68297,68304,68319,68320,68321,68333,68342,68343, + 68419,68424,68427,68454,68470,68479,68482,68483,68487,68496, + 68496,68496,68500,68504,68525,68528,68534,68538,68547,68554, + 68560,68579,68617,68633,68641,68648,68652,68658,68661,68670, + 68675,68699,68705,68748,68749,68750,68751,68752,68760,68785, + 68793,68810,68821,68832,68834,68834,68840,68875,68886,68892, + 68899,68957,68960,68975,69000,69004,69007,69014,69015,69019, + 69037,69045,69048,69053,69060,69075,69081,69124,69142,69156, + 69164,69172,69175,69180,69185,69192,69201,69211,69225,69228, + 69235,69242,69242,69260,69303,69311,69321,69352,69374,69388, + 69392,69415,69429,69451,69453,69460,69460,69473,69487,69497, + 69514,69537,69538,69555,69607,69611,69627,69639,69644,69644, + 69661,69661,69667,69669,69681,69690,69715,69720,69734,69743, + 69757,69757,69774,69783,69792,69808,69809,69834,69838,69843, + 69861,69872,69872,69875,69879,69893,69899,69906,69921,69922, + 69935,69946,69951,69952,69957,69966,69970,69990,70011,70018, + 70024,70037,70060,70068,70075,70076,70097,70115,70117,70151, + 70192,70210,70230,70238,70245,70248,70253,70265,70274,70274, + 70305,70315,70332,70353,70355,70357,70361,70372,70390,70395, + 70399,70400,70400,70407,70433,70447,70455,70461,70486,70493, + 70517,70521,70545,70611,70612,70620,70626,70632,70640,70662, + 70677,70680,70680,70686,70690,70718,70723,70733,70746,70751, + 70754,70757,70770,70771,70777,70793,70797,70800,70803,70809, + 70827,70829,70842,70844,70848,70864,70867,70870,70874,70880, + 70881,70911,70912,70918,70926,70941,70949,70952,70972,70974, + 70976,70989,70991,70992,71015,71020,71026,71038,71044,71045, + 71048,71052,71055,71069,71074,71098,71110,71119,71122,71140, + 71149,71161,71162,71170,71196,71207,71227,71232,71233,71251, + 71259,71262,71270,71294,71298,71305,71309,71312,71314,71316, + 71329,71344,71347,71351,71357,71358,71369,71385,71399,71399, + 71422,71426,71468,71492,71500,71528,71532,71539,71560,71573, + 71577,71587,71590,71594,71608,71620,71621,71623,71631,71671, + 71683,71685,71687,71694,71724,71728,71730,71751,71752,71758, + 71766,71779,71790,71797,71798,71802,71807,71812,71814,71816, + 71818,71823,71841,71858,71860,71862,71870,71882,71903,71903, + 71907,71915,71916,71932,71948,71963,71969,71977,71977,71998, + 72011,72015,72023,72032,72046,72069,72080,72105,72118,72120, + 72121,72127,72140,72162,72191,72196,72209,72213,72216,72221, + 72229,72231,72255,72262,72262,72277,72282,72284,72287,72305, + 72324,72343,72360,72365,72389,72391,72400,72409,72416,72432, + 72441,72446,72449,72456,72459,72465,72472,72475,72478,72489, + 72506,72525,72532,72534,72536,72557,72568,72578,72592,72615, + 72628,72637,72641,72649,72666,72688,72692,72694,72696,72696, + 72709,72725,72737,72748,72760,72769,72790,72806,72817,72819, + 72821,72825,72829,72834,72845,72846,72849,72865,72875,72894, + 72905,72916,72935,72956,72973,73011,73013,73016,73027,73041, + 73045,73065,73079,73084,73084,73086,73092,73145,73155,73188, + 73201,73217,73226,73240,73252,73265,73309,73315,73319,73323, + 73333,73343,73347,73349,73350,73353,73358,73364,73378,73379, + 73379,73384,73389,73391,73412,73427,73438,73445,73448,73450, + 73458,73488,73494,73500,73549,73573,73583,73584,73598,73600, + 73617,73632,73632,73642,73665,73665,73676,73688,73693,73700, + 73712,73728,73756,73770,73777,73803,73811,73828,73834,73836, + 73837,73838,73840,73849,73855,73880,73890,73913,73939,73940, + 73948,73960,73961,73967,73969,73969,73979,73995,74010,74012, + 74016,74017,74019,74036,74038,74071,74087,74097,74101,74117, + 74124,74135,74139,74143,74152,74158,74159,74165,74173,74185, + 74192,74205,74209,74222,74239,74260,74266,74275,74286,74296, + 74300,74303,74305,74308,74309,74313,74324,74335,74338,74348, + 74370,74374,74393,74403,74428,74432,74434,74474,74476,74501, + 74502,74508,74516,74516,74519,74520,74527,74536,74550,74574, + 74582,74587,74601,74620,74627,74635,74638,74651,74680,74685, + 74700,74716,74731,74739,74748,74762,74769,74784,74796,74802, + 74813,74816,74824,74841,74848,74854,74864,74881,74882,74896, + 74899,74907,74911,74935,74957,74958,74962,74972,74988,74996, + 74996,75022,75026,75031,75041,75049,75053,75068,75072,75073, + 75089,75091,75095,75107,75139,75142,75149,75178,75181,75189, + 75203,75247,75282,75290,75314,75330,75365,75381,75390,75413, + 75413,75415,75417,75448,75452,75454,75460,75467,75471,75475, + 75477,75488,75488,75494,75499,75501,75510,75518,75524,75552, + 75554,75557,75557,75578,75580,75595,75610,75628,75633,75638, + 75639,75640,75683,75697,75706,75708,75722,75728,75728,75743, + 75755,75758,75760,75761,75776,75777,75787,75802,75811,75821, + 75847,75859,75859,75866,75879,75884,75886,75887,75889,75900, + 75907,75916,75928,75942,75949,76041,76056,76065,76065,76069, + 76070,76074,76074,76081,76084,76093,76102,76106,76111,76113, + 76118,76136,76137,76140,76141,76144,76149,76158,76196,76198, + 76201,76254,76260,76261,76271,76303,76315,76319,76324,76335, + 76336,76340,76354,76356,76368,76380,76384,76397,76405,76405, + 76408,76416,76417,76430,76435,76437,76442,76450,76463,76470, + 76477,76479,76483,76493,76510,76515,76529,76546,76555,76571, + 76574,76588,76619,76620,76649,76653,76655,76661,76682,76719, + 76725,76726,76740,76746,76754,76781,76795,76820,76825,76832, + 76847,76852,76863,76882,76886,76888,76888,76894,76938,76954, + 76956,76963,76973,77009,77018,77026,77033,77035,77039,77047, + 77048,77052,77055,77062,77071,77077,77095,77107,77110,77118, + 77165,77166,77167,77168,77169,77175,77204,77224,77226,77228, + 77232,77241,77246,77250,77271,77271,77287,77299,77300,77325, + 77361,77382,77389,77395,77406,77420,77424,77447,77468,77472, + 77473,77485,77532,77555,77559,77566,77585,77585,77587,77602, + 77608,77615,77617,77620,77636,77647,77652,77678,77680,77705, + 77713,77713,77727,77750,77750,77760,77781,77797,77800,77802, + 77805,77808,77822,77823,77839,77852,77855,77864,77868,77868, + 77868,77887,77905,77921,77962,77965,77971,77972,77985,77995, + 78004,78016,78042,78042,78048,78050,78051,78052,78062,78066, + 78067,78073,78076,78086,78096,78096,78124,78174,78190,78192, + 78205,78216,78221,78226,78259,78268,78272,78280,78299,78302, + 78324,78348,78358,78362,78374,78399,78412,78416,78429,78446, + 78457,78466,78475,78509,78528,78538,78564,78567,78582,78595, + 78602,78606,78639,78643,78644,78664,78708,78725,78726,78740, + 78744,78775,78866,78875,78881,78887,78888,78893,78900,78909, + 78919,78955,78973,78975,78978,78978,79000,79027,79033,79033, + 79034,79045,79046,79059,79068,79075,79097,79101,79104,79118, + 79119,79126,79126,79134,79143,79146,79155,79160,79161,79168, + 79186,79205,79207,79217,79221,79223,79233,79255,79273,79274, + 79302,79310,79314,79319,79330,79343,79351,79352,79365,79375, + 79377,79397,79397,79411,79418,79420,79420,79430,79432,79432, + 79439,79441,79454,79471,79496,79497,79508,79513,79521,79523, + 79536,79539,79554,79566,79571,79575,79579,79607,79622,79623, + 79627,79632,79633,79648,79659,79661,79678,79704,79706,79707, + 79713,79714,79721,79724,79736,79751,79761,79776,79777,79778, + 79783,79788,79798,79799,79811,79812,79819,79835,79843,79883, + 79910,79918,79941,79951,79959,79969,79980,79986,80044,80049, + 80052,80053,80088,80094,80094,80096,80099,80114,80144,80145, + 80154,80166,80169,80169,80204,80204,80204,80209,80229,80242, + 80287,80345,80373,80391,80391,80419,80504,80516,80532,80547, + 80554,80583,80590,80609,80619,80621,80625,80628,80646,80654, + 80655,80659,80666,80694,80698,80715,80723,80731,80734,80748, + 80776,80780,80787,80793,80797,80817,80827,80828,80833,80848, + 80869,80874,80896,80898,80903,80910,80919,80932,80938,80938, + 80939,80951,80952,80961,80965,80970,80970,80971,80978,81005, + 81022,81030,81043,81052,81059,81066,81066,81076,81093,81098, + 81114,81128,81129,81148,81149,81154,81167,81178,81180,81202, + 81206,81208,81214,81215,81220,81228,81231,81235,81235,81237, + 81252,81254,81265,81267,81290,81295,81314,81319,81323,81325, + 81359,81359,81378,81380,81393,81396,81419,81451,81462,81524, + 81553,81576,81578,81580,81587,81588,81592,81611,81639,81647, + 81648,81650,81685,81691,81704,81718,81726,81733,81735,81740, + 81758,81772,81785,81788,81798,81828,81838,81840,81852,81855, + 81858,81865,81867,81905,81977,81983,81997,81999,82001,82008, + 82027,82029,82032,82041,82067,82070,82075,82101,82105,82106, + 82112,82113,82114,82117,82117,82117,82122,82143,82163,82165, + 82186,82195,82228,82229,82231,82231,82234,82245,82247,82254, + 82254,82268,82271,82298,82299,82300,82300,82302,82321,82323, + 82335,82346,82354,82359,82364,82386,82411,82418,82438,82499, + 82514,82531,82542,82555,82573,82574,82578,82584,82592,82596, + 82615,82615,82650,82660,82684,82689,82690,82698,82704,82717, + 82718,82747,82752,82764,82766,82766,82776,82786,82802,82808, + 82812,82817,82841,82846,82847,82850,82866,82884,82888,82901, + 82902,82902,82912,82912,82933,82934,82953,82965,82985,82988, + 82989,82998,83008,83012,83014,83018,83023,83025,83041,83044, + 83085,83090,83101,83108,83111,83116,83121,83133,83138,83170, + 83172,83186,83192,83193,83193,83204,83236,83241,83266,83280, + 83282,83289,83297,83299,83302,83303,83310,83320,83326,83327, + 83338,83355,83367,83376,83377,83380,83414,83421,83422,83431, + 83449,83450,83462,83469,83496,83500,83527,83541,83545,83573, + 83574,83580,83599,83664,83667,83671,83681,83691,83691,83694, + 83701,83718,83750,83750,83762,83764,83773,83774,83791,83802, + 83804,83809,83826,83826,83829,83847,83852,83859,83875,83881, + 83900,83904,83907,83910,83936,83937,83958,83961,83963,83989, + 83990,84007,84025,84037,84057,84059,84073,84075,84078,84093, + 84105,84116,84129,84133,84136,84142,84148,84148,84171,84185, + 84202,84215,84223,84249,84262,84267,84284,84285,84288,84309, + 84311,84352,84358,84385,84401,84417,84432,84433,84437,84449, + 84467,84469,84471,84473,84478,84487,84491,84502,84507,84524, + 84541,84544,84566,84586,84588,84594,84599,84610,84618,84620, + 84625,84649,84661,84676,84676,84681,84687,84697,84701,84708, + 84708,84708,84709,84713,84718,84723,84748,84761,84763,84784, + 84789,84804,84823,84828,84828,84857,84870,84882,84892,84897, + 84917,84926,84945,84954,84957,84969,84969,84975,84977,84986, + 84988,85013,85016,85019,85020,85030,85034,85052,85062,85066, + 85079,85080,85092,85111,85111,85119,85124,85133,85147,85151, + 85166,85187,85193,85208,85209,85212,85221,85232,85256,85258, + 85267,85268,85298,85298,85298,85311,85330,85333,85341,85347, + 85354,85359,85365,85370,85376,85385,85395,85402,85420,85425, + 85461,85466,85507,85508,85526,85534,85546,85546,85568,85579, + 85597,85599,85609,85615,85646,85648,85657,85663,85671,85689, + 85692,85692,85701,85731,85743,85746,85765,85768,85768,85769, + 85778,85781,85789,85792,85803,85809,85816,85825,85854,85863, + 85871,85874,85880,85884,85890,85895,85923,85924,85951,85987, + 86013,86015,86022,86026,86040,86045,86049,86059,86068,86071, + 86076,86091,86093,86097,86108,86109,86110,86116,86164,86189, + 86195,86200,86208,86221,86224,86230,86231,86239,86240,86240, + 86253,86255,86269,86275,86286,86287,86291,86292,86304,86318, + 86320,86323,86339,86351,86371,86382,86390,86399,86408,86417, + 86419,86435,86451,86463,86475,86496,86504,86509,86509,86532, + 86562,86604,86605,86605,86615,86623,86632,86639,86656,86668, + 86669,86673,86675,86684,86685,86685,86692,86698,86699,86700, + 86719,86720,86720,86720,86729,86730,86733,86737,86740,86745, + 86746,86757,86757,86764,86785,86802,86815,86823,86845,86888, + 86898,86945,86954,86974,86977,86980,86982,86996,87004,87013, + 87034,87037,87041,87048,87049,87057,87081,87082,87129,87134, + 87139,87144,87167,87173,87199,87206,87215,87215,87225,87240, + 87241,87258,87281,87292,87297,87298,87321,87328,87330,87334, + 87356,87360,87382,87386,87404,87408,87413,87413,87413,87431, + 87437,87441,87448,87453,87458,87468,87468,87474,87476,87480, + 87489,87490,87504,87506,87512,87514,87537,87539,87566,87570, + 87575,87577,87577,87580,87595,87599,87601,87612,87619,87635, + 87647,87650,87654,87661,87694,87697,87714,87726,87735,87737, + 87739,87754,87756,87771,87798,87802,87804,87809,87830,87835, + 87840,87846,87846,87851,87867,87873,87876,87889,87907,87916, + 87943,87948,87950,87951,87952,87954,87971,87973,87975,87983, + 87983,87997,87997,88000,88012,88020,88030,88034,88034,88055, + 88077,88078,88083,88088,88103,88114,88119,88134,88142,88149, + 88178,88186,88199,88199,88200,88228,88233,88237,88237,88251, + 88254,88265,88266,88281,88295,88303,88318,88322,88335,88352, + 88357,88386,88424,88427,88430,88441,88442,88446,88449,88449, + 88459,88465,88475,88505,88518,88524,88539,88539,88546,88556, + 88567,88568,88569,88576,88578,88588,88641,88652,88699,88700, + 88704,88708,88710,88718,88733,88752,88764,88784,88787,88802, + 88817,88830,88837,88840,88856,88876,88876,88885,88894,88896, + 88899,88915,88919,88939,88950,88973,88975,88981,88989,88998, + 89006,89021,89028,89050,89093,89099,89100,89128,89130,89133, + 89144,89150,89152,89153,89155,89156,89157,89159,89171,89179, + 89193,89207,89207,89226,89229,89236,89245,89264,89267,89275, + 89284,89290,89291,89327,89328,89328,89338,89340,89342,89350, + 89360,89373,89390,89404,89409,89419,89423,89423,89425,89430, + 89455,89463,89478,89499,89500,89501,89511,89521,89532,89549, + 89556,89561,89563,89568,89568,89592,89605,89611,89612,89618, + 89655,89667,89668,89671,89680,89681,89700,89719,89719,89732, + 89733,89757,89763,89780,89792,89795,89797,89799,89804,89807, + 89815,89823,89833,89836,89837,89840,89853,89863,89875,89875, + 89883,89893,89896,89903,89907,89913,89926,89933,89938,89947, + 89956,89957,89983,89984,89987,89991,90003,90035,90072,90094, + 90103,90112,90112,90113,90114,90118,90127,90129,90136,90151, + 90153,90159,90184,90196,90209,90215,90218,90223,90238,90248, + 90287,90288,90294,90295,90304,90306,90316,90317,90329,90336, + 90361,90362,90385,90386,90394,90408,90410,90415,90416,90425, + 90438,90445,90448,90448,90457,90474,90475,90488,90539,90542, + 90563,90565,90588,90611,90658,90661,90669,90685,90688,90696, + 90707,90715,90720,90732,90752,90766,90768,90772,90786,90796, + 90803,90809,90822,90833,90839,90845,90848,90851,90875,90876, + 90879,90880,90893,90909,90909,90922,90926,90937,90943,90956, + 90976,90980,90983,90983,90987,91006,91006,91032,91055,91078, + 91090,91103,91106,91113,91116,91128,91137,91172,91172,91191, + 91200,91210,91211,91215,91216,91217,91222,91224,91248,91254, + 91274,91275,91277,91280,91288,91298,91309,91321,91328,91335, + 91348,91374,91374,91377,91392,91405,91425,91435,91440,91450, + 91453,91455,91465,91472,91475,91480,91508,91509,91529,91535, + 91536,91537,91546,91546,91551,91581,91596,91603,91606,91606, + 91614,91637,91641,91659,91659,91660,91733,91754,91800,91811, + 91814,91831,91844,91852,91869,91873,91889,91902,91925,91938, + 91969,91985,91988,91990,92001,92004,92009,92014,92027,92046, + 92071,92078,92108,92110,92127,92131,92138,92158,92174,92188, + 92213,92216,92232,92245,92255,92275,92288,92295,92298,92313, + 92317,92341,92354,92356,92359,92369,92371,92399,92407,92412, + 92436,92461,92463,92469,92476,92483,92495,92500,92509,92532, + 92543,92545,92560,92569,92571,92572,92590,92593,92600,92601, + 92625,92643,92663,92668,92676,92677,92691,92697,92703,92704, + 92705,92712,92720,92731,92742,92744,92749,92765,92765,92773, + 92786,92807,92817,92836,92838,92850,92865,92875,92881,92925, + 92932,92933,92936,92946,92949,92950,92958,92963,92976,92985, + 92987,92988,92996,92996,93012,93019,93037,93044,93063,93065, + 93070,93076,93079,93104,93110,93114,93144,93145,93152,93165, + 93171,93187,93196,93208,93215,93217,93228,93232,93237,93247, + 93261,93269,93270,93272,93276,93280,93286,93289,93290,93304, + 93310,93311,93342,93368,93382,93384,93424,93447,93449,93457, + 93460,93470,93487,93496,93515,93520,93526,93564,93572,93585, + 93620,93652,93686,93690,93710,93713,93725,93729,93736,93758, + 93762,93777,93818,93845,93848,93848,93849,93856,93864,93866, + 93870,93874,93890,93914,93925,93941,93948,93973,93973,93989, + 93990,93993,94002,94011,94018,94024,94033,94054,94061,94068, + 94071,94090,94093,94096,94098,94119,94125,94136,94145,94151, + 94160,94173,94183,94203,94213,94236,94257,94267,94267,94276, + 94284,94288,94295,94296,94302,94305,94323,94337,94348,94358, + 94364,94367,94380,94417,94423,94423,94432,94444,94450,94456, + 94479,94495,94495,94506,94508,94508,94514,94518,94520,94527, + 94528,94545,94547,94550,94558,94563,94573,94586,94598,94612, + 94619,94620,94623,94643,94649,94654,94668,94671,94680,94695, + 94704,94711,94717,94724,94724,94727,94753,94759,94774,94789, + 94822,94824,94837,94837,94843,94857,94862,94862,94867,94874, + 94887,94908,94926,94928,94929,94948,94963,94970,94971,94976, + 94982,94982,94988,94992,94994,95011,95017,95039,95078,95079, + 95079,95089,95098,95104,95123,95127,95147,95180,95187,95192, + 95196,95217,95238,95241,95254,95260,95262,95276,95289,95319, + 95320,95323,95346,95387,95408,95408,95421,95423,95442,95449, + 95457,95458,95469,95469,95474,95476,95476,95515,95522,95530, + 95533,95552,95557,95602,95606,95624,95642,95650,95671,95677, + 95688,95690,95697,95702,95707,95710,95723,95723,95723,95730, + 95732,95744,95750,95764,95764,95773,95774,95776,95786,95805, + 95809,95819,95823,95825,95858,95860,95862,95870,95871,95871, + 95871,95882,95885,95894,95914,95915,95921,95922,95931,95937, + 95943,95961,95969,95976,95978,95992,95993,95996,96020,96041, + 96043,96048,96064,96065,96071,96076,96080,96080,96084,96089, + 96097,96098,96131,96152,96161,96171,96196,96200,96220,96236, + 96258,96260,96310,96311,96322,96329,96330,96333,96333,96360, + 96364,96380,96385,96398,96405,96410,96413,96414,96422,96461, + 96488,96490,96500,96511,96514,96535,96543,96553,96559,96573, + 96580,96590,96606,96627,96633,96641,96657,96665,96693,96697, + 96700,96706,96714,96723,96725,96726,96747,96763,96767,96768, + 96783,96784,96785,96791,96816,96834,96840,96845,96853,96854, + 96856,96857,96864,96864,96875,96879,96886,96886,96899,96919, + 96936,96939,96941,96963,96974,96993,97001,97002,97007,97007, + 97052,97072,97091,97097,97107,97109,97132,97149,97152,97166, + 97168,97174,97179,97186,97195,97208,97284,97285,97288,97303, + 97323,97338,97354,97365,97385,97393,97416,97417,97421,97430, + 97438,97447,97447,97466,97471,97481,97497,97498,97502,97506, + 97524,97540,97541,97551,97566,97568,97569,97571,97578,97578, + 97581,97586,97592,97593,97605,97609,97612,97619,97632,97652, + 97654,97662,97669,97690,97694,97704,97711,97760,97762,97770, + 97778,97782,97790,97791,97794,97796,97816,97819,97841,97879, + 97893,97926,97930,97947,97959,97978,97986,97997,98035,98043, + 98044,98066,98111,98116,98127,98128,98133,98138,98147,98156, + 98177,98190,98200,98204,98224,98230,98231,98243,98250,98253, + 98257,98261,98262,98263,98267,98269,98296,98297,98307,98318, + 98323,98335,98346,98350,98368,98371,98378,98379,98398,98399, + 98417,98419,98422,98436,98437,98442,98455,98455,98491,98492, + 98499,98508,98508,98509,98532,98537,98539,98540,98542,98563, + 98582,98593,98615,98633,98634,98644,98646,98648,98654,98678, + 98680,98684,98686,98701,98703,98723,98729,98739,98802,98803, + 98803,98803,98803,98832,98836,98840,98849,98849,98864,98867, + 98894,98906,98908,98915,98918,98934,98948,98963,98964,98980, + 98986,99003,99015,99015,99021,99026,99029,99068,99068,99069, + 99078,99081,99096,99118,99127,99141,99145,99147,99165,99170, + 99176,99198,99198,99199,99236,99242,99256,99263,99268,99270, + 99292,99313,99325,99332,99334,99345,99346,99381,99382,99384, + 99386,99391,99410,99411,99411,99420,99426,99427,99441,99451, + 99459,99462,99469,99485,99490,99494,99497,99498,99504,99525, + 99535,99538,99552,99552,99584,99599,99604,99670,99689,99702, + 99708,99735,99743,99755,99758,99763,99779,99790,99791,99796, + 99798,99801,99803,99806,99810,99841,99842,99845,99862,99871, + 99874,99878,99906,99907,99923,99927,99928,99968,99987,99997]; \ No newline at end of file From 499fe8cb833273cf123bee2237bc75f35b2cd4cf Mon Sep 17 00:00:00 2001 From: Snobeard Date: Sun, 28 Jan 2018 16:11:13 -0800 Subject: [PATCH 2/7] quick insertion functional --- lab-matt/index.js | 40 +++++++++++++++++++++------------- lab-matt/quick-sort.js | 49 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 15 deletions(-) create mode 100644 lab-matt/quick-sort.js diff --git a/lab-matt/index.js b/lab-matt/index.js index 87b6d2e..c35a420 100644 --- a/lab-matt/index.js +++ b/lab-matt/index.js @@ -1,10 +1,10 @@ -// 'use strict'; -// const largeArray = require('./large-array'); -// const sortedLargeArray = require('./sorted-large-array'); +'use strict'; +const largeArray = require('./large-array'); +const sortedLargeArray = require('./sorted-large-array'); +const quickSort = require('./quick-sort'); -// let testArray = [5, 1, 8, 3, 9, 230, -1, -53, 2]; -// // let testArray = [0, 1]; -// let sortedArray = [-53, -1, 1, 2, 3, 5, 8, 9, 230]; +let testArray = [5, 1, 8, 3, 9, 230, -1, -53, 2]; +let sortedArray = [-53, -1, 1, 2, 3, 5, 8, 9, 230]; // // console.log(sortedLargeArray); @@ -26,20 +26,30 @@ -// quickSort(testArray); -let arr = [2, 3, 5, 2, 1, 6, 2, 5, 5]; -persistOrder(arr); +// let arr = [2, 3, 5, 2, 1, 6, 2, 5, 5]; +// persistOrder(arr); -console.log(arr); +// console.log(arr); -function persistOrder(array) { - array.forEach((each, i, arr) => { - arr[i] = { value: each, priority: i}; - }); -} \ No newline at end of file +// function persistOrder(array) { + // array.forEach((each, i, arr) => { + // arr[i] = { value: each, priority: i}; + // }); + // } + + // =========================================================== +quickSort(testArray); +console.log(testArray); + +quickSort(largeArray); +// console.log(largeArray); + +largeArray.forEach((each, i, arr) => { + if (each > arr[i + 1]) throw new Error('bad mojo'); +}); \ No newline at end of file diff --git a/lab-matt/quick-sort.js b/lab-matt/quick-sort.js new file mode 100644 index 0000000..db8158a --- /dev/null +++ b/lab-matt/quick-sort.js @@ -0,0 +1,49 @@ +module.exports = (items) => { + _quickSort(items, 0, items.length-1); +}; + +const _quickSort = (items, leftIndex, rightIndex) => { + if (rightIndex - leftIndex + 1 < 10) { + _insertionSort(items, leftIndex, rightIndex); + } else { + let partitionIndex = _partition(items, leftIndex, rightIndex); + + _quickSort(items, leftIndex, partitionIndex - 1); + _quickSort(items, partitionIndex + 1, rightIndex); + } +}; + +const _partition = (items, leftIndex, rightIndex) => { + let pivotIndex = rightIndex; + let firstHighIndex = leftIndex; + + for (let i = leftIndex; i < rightIndex; i ++) { + if (items[i] < items[pivotIndex]) { + _swap(items, i, firstHighIndex); + firstHighIndex ++; + } + } + + _swap(items, pivotIndex, firstHighIndex); + return firstHighIndex; +}; + +const _swap = (items, indexA, indexB) => { + let helper = items[indexA]; + items[indexA] = items[indexB]; + items[indexB] = helper; +}; + +const _insertionSort = (array, leftIndex, rightIndex) => { + for (let i = leftIndex + 1; i < rightIndex + 1; i ++) { + let temp = array[i]; + let j = i - 1; + + while (j >= leftIndex && array[j] > temp) { + array[j + 1] = array[j]; + j --; + } + array[j + 1] = temp; + } + return array; +}; \ No newline at end of file From 95c734d415c993ee264d57201e407db807f2d9c0 Mon Sep 17 00:00:00 2001 From: Snobeard Date: Sun, 28 Jan 2018 17:10:55 -0800 Subject: [PATCH 3/7] quick-insertion tests passing --- .eslintignore | 5 + .eslintrc | 35 + .gitignore | 153 + lab-matt/large-array.js | 1001 ---- lab-matt/sorted-large-array.js | 1001 ---- lab-matt/src/__test__/lib/create-arrays.js | 39 + lab-matt/src/__test__/quick-insertion.test.js | 71 + lab-matt/{ => src/lib}/quick-sort.js | 0 package-lock.json | 4967 +++++++++++++++++ package.json | 24 + 10 files changed, 5294 insertions(+), 2002 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc create mode 100644 .gitignore delete mode 100644 lab-matt/large-array.js delete mode 100644 lab-matt/sorted-large-array.js create mode 100644 lab-matt/src/__test__/lib/create-arrays.js create mode 100644 lab-matt/src/__test__/quick-insertion.test.js rename lab-matt/{ => src/lib}/quick-sort.js (100%) create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..82ff623 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,5 @@ +**/node_modules/* +**/vendor/* +**/*.min.js +**/coverage/* +**/build/* \ No newline at end of file diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..8f3064c --- /dev/null +++ b/.eslintrc @@ -0,0 +1,35 @@ +{ + "rules": { + "react/prop-types": [0], + "quotes": ["error", "single", { "allowTemplateLiterals": true }], + "comma-dangle": ["error", "always-multiline"], + "no-console": "off", + "no-unused-vars": "off", + "indent": [ "error", 2 , { "SwitchCase": 1 }], + "semi": ["error", "always"] + }, + "plugins": [ "react" ], + "parserOptions": { + "sourceType": "module", + "ecmaFeatures": { + "experimentalObjectRestSpread": true, + "module": true, + "jsx": true + } + }, + "env": { + "es6": true, + "node": true, + "jest": true, + "browser": true + }, + "globals": { + "__API_URI__": false, + "__TITLE__": false, + "__DEBUG__": false + }, + "extends": [ + "eslint:recommended", + "plugin:react/recommended" + ] +} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a0c48f0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,153 @@ + +# Created by https://www.gitignore.io/api/osx,vim,node,linux,windows,visualstudiocode + +# Databases (mongoose) +db/ + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release +build/ + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + + +### OSX ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Vim ### +# swap +[._]*.s[a-v][a-z] +[._]*.sw[a-p] +[._]s[a-v][a-z] +[._]sw[a-p] +# session +Session.vim +# temporary +.netrwhist +# auto-generated tag files +tags + +### VisualStudioCode ### +.vscode/ +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.gitignore.io/api/osx,vim,node,linux,windows,visualstudiocode diff --git a/lab-matt/large-array.js b/lab-matt/large-array.js deleted file mode 100644 index 6768f46..0000000 --- a/lab-matt/large-array.js +++ /dev/null @@ -1,1001 +0,0 @@ -module.exports = - [21574,5580,11126,41602,84309,67309,52153,90685,82106,70117, - 49147,32892,51148,66048,72465,64192,16227,87298,20189,89938, - 25697,92749,35053,7324,87413,52894,37957,4145,68213,78466, - 2439,66548,34801,13870,58600,84892,3889,70770,10372,25445, - 79623,26684,86068,48092,92127,31534,58298,14527,40034,70803, - 32047,56427,40710,88704,76483,47148,25505,87206,39516,42240, - 98864,70210,29175,84676,24687,25180,61218,25533,56616,61894, - 44300,76144,81052,56072,3596,61278,27891,19227,90909,88465, - 25151,67926,69311,42847,95387,57085,32333,38065,14998,88134, - 45642,50018,76882,19781,16250,83910,40125,74338,21244,12507, - 71797,26143,20208,65751,99236,68049,14379,92341,22709,34957, - 41035,90809,28209,26267,5720,54562,87049,23434,32586,61510, - 87004,64378,63254,15953,39691,85816,32890,99145,73948,33465, - 39588,14184,49804,77071,48766,55815,17500,95089,65054,61866, - 66472,40753,77750,5239,48278,12435,65786,69142,93864,34899, - 67070,31654,13573,32829,12954,35359,42530,40608,88588,3062, - 40847,208,60247,42774,72688,34606,71162,58209,78096,59294, - 37725,25379,56940,82615,24404,84491,5363,11508,22088,35153, - 98335,1859,453,47289,95552,63638,84385,56755,37078,50273, - 82070,34388,59064,78973,6744,22926,79439,95289,59222,1610, - 42259,39773,48153,38141,48311,11484,47779,90316,11347,98371, - 71823,19224,20868,95937,20599,87199,70680,54110,28582,65788, - 36388,12612,19092,8292,95423,48704,7930,83580,79648,92255, - 37237,18128,18357,16869,1598,40935,68214,84471,89425,13216, - 75557,73353,42700,97497,29722,86116,33295,87835,69211,15552, - 2084,39296,58128,61568,84059,80659,74432,21352,42975,62626, - 21859,23066,67053,10630,62762,89207,22790,14428,87907,35478, - 26066,19842,80391,53418,50214,57605,89957,89226,98250,53355, - 24469,38869,17963,55738,73458,25307,31614,87954,85792,80951, - 55945,24976,29812,88975,91508,28640,75139,11552,12952,76368, - 11788,66957,68280,89792,47865,2203,19330,95697,15318,90488, - 72916,60993,64895,27729,93941,27341,1961,56193,32142,38793, - 52360,91529,23366,94358,10615,71977,5137,76894,44180,37322, - 29623,36507,54944,82323,56021,62006,87943,43803,85034,39368, - 35608,95602,14401,68004,36104,81030,29802,42927,51439,93044, - 67871,20397,74685,62161,61903,94612,58730,83327,65520,9337, - 8875,68661,87950,25164,12365,99462,98508,19883,35508,30569, - 44956,22835,17036,59160,17968,66434,58279,27022,8811,58632, - 96963,61174,13761,7260,90394,79721,25368,38949,74313,55215, - 64863,47267,89612,66073,70315,97338,15391,9890,70486,87952, - 97619,35267,82247,49031,39737,73837,38535,56981,27185,10564, - 1733,57347,97694,34863,40649,74038,12499,55296,98539,26842, - 8090,15187,14333,9699,36720,88475,64663,25041,44158,92188, - 73811,38867,94563,67025,90922,21756,26493,96840,46212,8785, - 25488,93270,96364,93585,90114,13223,88449,55962,53489,93232, - 17552,77047,16944,80345,93890,7777,38519,61512,18594,50947, - 59990,78268,99968,20096,51038,39313,85066,3769,11857,87215, - 81650,10362,18842,8836,69487,65036,70690,23881,64245,60705, - 62660,52728,13167,97578,90129,30222,57488,34668,32651,60717, - 6639,60434,89144,90223,76158,39183,72692,14491,67743,12526, - 89455,75760,43506,7055,21495,29999,87013,30773,24158,20105, - 71399,636,27374,24984,81314,6491,8411,69935,53295,28452, - 13285,60420,15691,74222,21707,24914,24610,71812,53274,82298, - 50953,25361,9544,4357,67359,17256,7171,4604,97632,97571, - 47555,59037,64857,46850,26308,82032,44982,98296,79761,1232, - 7312,38397,97926,54502,67561,16053,74010,9639,89179,57154, - 81772,42322,89700,23977,48892,15678,12448,71140,20631,39843, - 35567,30848,74117,74209,69004,99498,38675,43983,57641,58273, - 48900,54001,50135,71468,86639,25908,90875,90425,42273,7241, - 1325,89840,92838,92412,17698,76435,96816,10646,20495,52825, - 87037,6340,54629,14990,32661,97174,32124,7816,37085,99165, - 14760,24585,28686,38357,26301,49797,73391,32348,10088,81093, - 41167,77035,6198,8343,72287,284,4745,75049,66400,84857, - 92569,64269,30290,92704,26839,78602,34955,50959,54129,84599, - 10658,62961,44456,39779,11873,48890,53663,1060,91641,22802, - 66237,4313,94011,95819,63842,51852,20533,38511,17471,31505, - 48762,56202,60117,76956,11578,85746,213,17096,72023,14085, - 62663,48911,85895,82888,32944,25033,12892,86504,22911,41718, - 62522,64632,4274,92963,79659,74012,60999,31305,96714,74739, - 69872,28747,63056,96200,78919,16728,79951,43336,46484,65864, - 13274,28316,77864,4885,98263,45358,66631,21883,48931,70355, - 91990,84763,17490,37401,42716,40271,63683,86451,57180,62524, - 64913,40774,2376,54670,27617,32221,52989,31420,54903,77077, - 18909,48875,17537,99735,60139,13099,62420,68343,80833,75089, - 55215,31807,60990,46506,63161,40896,80793,50368,74957,71766, - 54166,59835,47533,12919,32409,37624,12696,80419,26234,86304, - 71608,21758,32776,55101,7642,7835,74019,88919,88077,63475, - 49233,91873,82165,16262,18361,47941,67302,91191,23524,33810, - 50250,58272,82254,4446,96747,99525,26778,1847,39413,15807, - 57367,75413,72536,45386,70037,30958,58220,29468,80044,62711, - 19387,62617,63343,156,61663,77167,53967,54128,99806,37788, - 60744,71623,45784,23702,22802,19998,34491,48855,29476,5658, - 87997,44753,15016,49128,86746,33678,53929,73438,4776,23085, - 22377,84926,19062,44144,94054,5440,44609,27287,87975,77585, - 23226,953,88546,60257,1546,35945,76888,71816,27467,65730, - 96535,8764,27963,34927,40578,30949,92108,24811,83773,9457, - 45942,40666,3821,46808,54404,3923,23896,89732,28743,16377, - 95469,74173,4562,2142,65993,59616,79397,67820,90796,13204, - 90475,27752,83764,62541,94495,42068,8999,26865,42676,99862, - 51141,77271,39987,38177,15686,83367,82101,41307,22317,82346, - 44231,36501,94988,40237,5393,3703,14200,56776,44073,34248, - 27736,48210,54454,20958,54831,36577,78066,30764,78725,87356, - 2393,41296,61508,93152,43443,58929,63205,91217,23012,43075, - 31935,98593,68670,26182,4468,82008,43620,47581,39661,86239, - 42159,40951,58135,35279,68496,12632,8040,51125,80748,15642, - 56034,41163,38186,69053,97760,89423,9535,91224,3386,29055, - 55932,20333,5566,23159,58453,66435,72015,21365,52505,28909, - 76065,28146,18183,63605,81295,37379,18301,71369,59277,69661, - 53934,56929,81148,32268,18086,6860,19683,91392,70357,29760, - 90611,86954,71270,63561,43778,548,31431,4799,32055,43328, - 4301,36226,52984,46367,40198,37744,12181,59162,45534,62367, - 24282,98894,96385,45757,24245,21402,84954,94963,40567,63393, - 19660,74266,92001,84828,29068,90112,8240,40683,80504,90696, - 46418,61418,51620,19677,96697,19625,5966,88352,97816,36823, - 18732,16417,49837,49027,35633,19695,66346,59728,53375,56855, - 34587,94423,17033,74260,7776,66967,46868,2346,13137,29032, - 458,88764,21152,36142,47418,43380,31891,85187,24203,87577, - 60624,28504,48876,60332,16531,99798,94774,65875,27856,85778, - 35967,9343,1507,41104,73309,12348,74527,63292,89342,34731, - 1882,34099,31894,46783,4994,76649,44701,69000,10769,46201, - 99485,53982,4217,93856,6095,88303,24957,34944,45448,77472, - 43938,72277,39544,8550,25200,54357,85020,49705,54111,21377, - 71262,6500,67881,52967,77652,98654,29080,33008,35898,58739, - 83681,88318,75448,64347,5016,77485,2388,68705,89156,98066, - 41656,86496,74159,35994,85825,36518,27939,75887,25807,45689, - 92407,45326,24714,21620,389,11972,83449,5827,93261,31929, - 66736,70677,5566,47660,63735,22377,74434,66267,85256,51288, - 5857,68658,41569,14842,3279,79302,30587,82075,61015,61756, - 88322,25685,20377,55436,92958,30626,15774,10000,83990,91248, - 96919,84823,40512,30924,45838,95320,55280,18754,80952,11701, - 64534,98634,31837,6818,83282,11181,70455,23150,53471,74638, - 83236,62942,45133,15017,32602,97393,27214,81578,968,68158, - 89500,23033,9022,47330,80516,66600,36074,55963,42934,80144, - 85546,57856,2475,97794,41028,21548,69242,553,39833,7279, - 51846,15744,4711,41211,77852,8249,99906,21351,25823,29987, - 86382,8902,68752,66198,72196,27160,32742,71048,66461,22657, - 56922,85809,76620,31062,45773,58783,63080,21484,90909,78564, - 3127,84761,33431,41075,98437,95319,94573,50578,44143,55706, - 91453,32553,41850,78528,35905,43006,62545,90720,98963,6588, - 32593,93520,51901,7848,32983,11218,16423,86730,65093,31611, - 15748,79661,93457,32484,16190,309,77532,41050,94348,42992, - 69951,53647,12535,3956,43292,28627,41352,75068,75722,47499, - 32058,30186,12133,78664,86974,26490,85425,41471,98563,40835, - 88254,11131,7167,89561,14846,28249,96260,8405,59461,29383, - 78067,62889,37179,94518,5981,88295,24290,17631,85951,75417, - 80625,1877,87360,42018,2937,10735,70060,31456,916,22113, - 41403,52404,48507,65693,34987,77107,55622,95871,21382,42868, - 83852,37115,40171,52336,50158,70024,10506,4121,35880,36120, - 37536,47512,75640,13030,63523,65099,29688,84524,93526,11033, - 24846,24801,12718,47346,38518,81154,12227,91274,91535,32089, - 83500,92663,34401,16817,26994,92288,55229,40522,27498,97609, - 58279,84487,42357,53306,77424,26132,77473,70632,84718,24867, - 85030,19780,64056,12087,15599,96845,25003,45511,87846,96322, - 17653,1331,26317,64811,87034,59604,66345,1128,21950,99420, - 66873,13590,62935,58344,34776,35507,10930,71798,15485,26263, - 46053,97704,82953,53503,40431,12504,97893,7371,59433,3083, - 41858,60834,37780,55800,28807,39901,8503,31301,76113,21489, - 32220,72365,12451,20854,9633,95187,21033,13958,66803,82117, - 12997,77822,18718,7998,62194,4485,661,88950,71685,69966, - 57126,4178,49205,44527,31371,77868,26913,16476,8108,63184, - 57807,69861,89933,38028,58210,91844,52714,98648,64297,14461, - 87476,5914,36606,8383,11669,57563,74374,60360,13694,60355, - 66180,40570,21545,14763,69164,69172,25993,24006,52713,97662, - 18463,63739,90408,312,17172,21542,68749,76041,92988,50339, - 54812,51653,23858,26759,51301,95723,16694,71233,30814,64449, - 40298,59801,48283,12879,16383,32653,75557,46871,37616,48387, - 9935,21751,36124,52490,56615,57193,3023,45661,31324,26532, - 53573,22894,36532,21643,54290,34458,16058,34965,18287,53383, - 3515,67669,32531,66448,19013,51238,33012,83847,24624,61815, - 35912,45000,8642,79622,62044,56478,10500,11343,48821,58006, - 36293,28460,55432,5919,61918,94619,43060,8826,34962,94093, - 64056,52236,14169,77617,67859,10466,17185,34486,29027,52531, - 20144,71752,95241,52272,47799,10906,98678,4283,38895,7721, - 33586,359,81267,17595,87537,23623,48477,64277,4999,79751, - 62473,29649,93247,52566,30344,54751,47529,12192,47717,57783, - 95764,11720,50497,63669,99763,51101,29446,99068,46668,52939, - 94976,88228,14756,47188,18119,20409,83541,52459,31868,68241, - 51263,3289,57433,92469,8083,69007,75022,36064,56459,70976, - 36621,15399,3413,35312,47062,56604,90539,46908,74802,30540, - 89360,23261,30961,29271,73079,42357,17744,71694,53725,54672, - 21048,2269,54577,62088,21828,42694,32108,16511,413,95606, - 32109,60419,61198,61241,87458,62165,17095,35388,67743,35747, - 64333,44881,7907,60955,2047,32127,55051,30661,37482,74587, - 86390,89006,18840,42921,89521,26275,1156,24229,19722,11069, - 64222,20795,45756,73011,42972,36077,98398,81202,90851,22963, - 21739,61936,16011,2470,29513,26903,64696,33001,76254,59952, - 8215,98849,76479,47871,6055,12415,42388,54345,18870,63580, - 59695,93272,20658,45408,58323,90880,96606,20057,47042,18219, - 8767,25440,72760,79217,36458,53114,45676,74087,37086,59169, - 74536,21896,21556,91814,68760,31896,51257,89896,58362,88441, - 11364,45807,35096,34487,58237,50430,57997,51117,47804,3952, - 38842,77204,13629,56796,74300,97498,18195,84449,60831,20498, - 39679,74152,52975,9274,61234,31031,31681,25668,56525,28861, - 31557,37484,62528,86632,44022,33699,48924,49448,88088,50158, - 32922,88539,49744,56081,32824,31111,21484,12194,99410,24548, - 79118,26557,19836,70680,34259,84129,12104,89592,20537,21628, - 30219,72905,26848,87873,96693,65300,20943,52018,40929,19960, - 11936,65272,76405,73364,23863,89804,71687,79000,11218,63689, - 89757,85646,94423,64097,64543,52570,9183,62955,99907,25634, - 54790,41630,18421,79778,62616,71631,70265,23424,70353,12318, - 36795,73961,40876,37298,7093,30842,2779,27863,81718,1151, - 8463,66757,97524,63551,92110,82438,11275,7985,70797,33225, - 50452,75247,70517,6140,57447,57762,68547,71015,14370,42886, - 66756,79233,10816,65586,41033,74864,3181,2026,35605,5200, - 73217,44124,63238,29714,51898,82335,45738,67973,67999,11930, - 43532,88034,81740,17241,3731,73384,37432,73855,95870,77962, - 93215,21624,73494,49258,44969,74305,95624,52036,8139,80099, - 93237,16509,30550,38363,6897,68810,49354,27941,66521,94151, - 64046,44117,1001,57132,58685,21632,30991,57049,95871,40384, - 52961,35726,54086,6031,52228,989,10800,77118,4428,18278, - 11355,54037,98491,65499,6131,77985,41496,4984,70400,22091, - 92601,47084,22091,28435,84136,7433,14441,77965,76470,31225, - 94862,72849,47398,78606,17163,13957,32030,16291,38143,81323, - 43953,14493,15817,59142,23319,38161,86292,16526,99538,21875, - 59125,92705,89837,39487,38000,46523,16032,90113,15915,37473, - 97654,38637,86408,41573,81378,84148,48765,97978,26477,9843, - 63096,58547,38805,67456,75802,83859,16171,1875,68875,79314, - 51030,40193,10964,95750,67478,18341,23462,14095,74988,43459, - 60655,32007,82299,1493,7022,79432,19717,34709,18810,86733, - 92817,40157,33132,31360,63289,88652,67416,35668,88802,60539, - 39747,22049,35456,60008,11797,35383,29176,92495,66619,65564, - 26728,31934,17582,93165,79255,3349,86675,98680,76825,77678, - 81098,13988,27465,51034,30381,4698,15603,41146,18733,69048, - 27294,73027,82847,7028,72769,47660,67270,56461,71948,49539, - 46970,2994,42381,99758,64405,71055,92359,91800,13168,76354, - 82846,62563,12864,78955,29274,26255,1659,48046,23367,66525, - 83599,19465,706,93690,60152,13169,95,58581,5710,45018, - 54616,74501,85062,91298,73412,7256,43370,48610,59950,33066, - 5571,53256,69453,3707,36873,81588,67428,64957,8640,41805, - 20785,65500,27585,91754,76515,18798,35110,79633,35242,41764, - 89463,22395,81726,61021,5490,80114,19140,18371,72229,36871, - 80723,14838,84882,54196,5615,84610,96080,26953,97107,36541, - 31157,98262,94288,50620,7909,99803,41377,13256,30018,17663, - 37572,73500,68957,66051,79910,94759,20775,67147,62847,47691, - 25711,32319,5704,51549,65200,54137,71915,47972,64910,71779, - 66575,78446,50169,40551,86982,40028,51075,61322,36095,41272, - 4865,55018,74071,61641,27766,86231,59933,56825,28749,85466, - 99878,85258,78429,22156,17573,77713,43349,16882,6769,51102, - 7668,89130,52320,36481,35311,12770,4197,81840,22792,52885, - 2927,98908,14194,41370,73379,85692,53168,23514,64642,32884, - 1024,87737,21382,95557,78509,62186,59822,11974,5357,87489, - 23426,46181,2570,22037,16603,64521,17184,90926,52188,5664, - 60638,25093,57015,935,65882,94213,45857,89409,19505,84358, - 24132,534,74796,26546,58505,18411,12309,84467,67925,69946, - 35956,33427,59986,36876,60486,26870,83963,13717,46994,6632, - 47872,45189,32193,11592,14362,26183,6688,30021,18205,3649, - 90306,92027,76852,66153,75031,23696,73319,46526,46722,24676, - 65130,4509,53508,92356,83280,50965,87951,56484,24587,76588, - 23007,29820,76619,15848,94928,95671,40898,8876,10767,38282, - 28226,34032,31789,68648,28796,24407,33439,10514,85298,80938, - 38156,99928,93925,62416,8152,72282,44610,95996,27139,51077, - 94908,76340,66594,59885,96941,62956,58146,83193,79101,34359, - 57652,33654,4822,87041,84977,43374,22276,77615,97790,11447, - 60555,21386,8123,80828,35962,28549,64972,50730,23034,80970, - 17580,43843,11307,61908,73379,39722,79471,80978,92996,53591, - 82555,53542,8706,7328,65890,87661,63335,32652,32417,69792, - 63262,81237,83958,70864,89913,34593,95688,81359,35657,36532, - 96853,79045,10473,68192,53708,13766,5419,29305,17536,38334, - 10459,73092,85615,92476,94724,1082,42294,91969,1200,72032, - 53812,42273,650,60968,80154,65502,66680,94623,89128,15221, - 99708,27185,79161,79377,32388,9158,19478,34575,15445,8710, - 21083,64225,71841,8558,85395,67724,53878,23030,79046,88114, - 15721,82531,66882,3664,42695,28047,34514,60265,70974,97592, - 11305,15206,20968,73834,95017,97593,34110,82542,84594,74824, - 79819,26210,42613,97540,67138,53304,78744,48099,48113,67748, - 60702,82615,72845,19055,36987,4302,61251,81022,86323,87514, - 97791,37079,24357,63519,91546,55843,46538,75026,25529,37959, - 60843,39533,5471,81733,81178,59997,98582,9713,93145,46052, - 82228,9631,50785,47694,54217,41298,36517,75777,65385,47518, - 40968,91465,26303,22730,51666,19006,34183,41250,78348,34447, - 87983,88876,32682,21605,49879,20943,81462,42907,53615,24230, - 98422,64533,54409,19062,16434,45015,39131,10989,59179,83527, - 24460,14544,93276,17928,85267,76863,78205,3357,92720,91116, - 13872,45164,36530,92987,40689,3993,77175,14499,49895,91869, - 66054,85526,9044,5216,86720,41151,40067,72262,19858,68056, - 45299,29538,47934,25520,12502,7368,48328,57672,18002,85354, - 80169,54129,60290,74135,16507,14498,63232,70305,46974,94018, - 19111,27440,24573,88142,25566,8,95238,71573,48309,9632, - 73632,8629,60665,79319,42073,53503,22528,3767,1276,13494, - 62353,29245,45702,60497,74192,56397,43255,68027,86351,40552, - 28206,23633,84708,90457,4906,30436,48765,98684,19502,61904, - 3997,42738,17469,92786,99384,36059,14027,65000,15659,74958, - 54211,97568,1321,75,19057,72696,60786,10505,26991,23920, - 48436,61007,19808,57132,35351,19360,80971,5585,23928,97091, - 88430,54616,51302,75847,35006,81325,4843,463,54739,23252, - 21110,20847,600,77062,92765,75787,30744,54538,6622,72819, - 82105,42157,47379,86815,88149,19432,25947,90766,52867,21322, - 92807,57486,9957,7205,64860,73693,89987,54027,52433,22451, - 27405,7382,64397,732,17849,15805,35323,75776,51910,26992, - 87441,49396,45425,13337,94680,80204,1578,37385,86980,41244, - 92500,53561,95922,86668,25699,79274,57352,89267,61850,60182, - 21335,20108,83826,24882,40535,14673,93686,3470,52456,12833, - 61588,96785,75494,80590,65691,15318,79496,96064,15382,98127, - 90336,11127,45778,94717,5604,34851,8640,11679,99068,59689, - 33493,1859,31597,49791,59082,70611,31261,42598,31765,60258, - 15983,70829,47991,26131,38883,41575,76070,43908,50405,13234, - 79941,29045,27751,88876,35992,6501,61670,61959,7030,1060, - 69537,50570,98803,67010,5966,50737,15172,45326,79059,21489, - 16265,17118,93289,20118,85232,61824,36591,64071,34658,29543, - 85092,40165,16537,66493,14415,80554,93304,2280,20515,10150, - 32220,75554,43435,41378,63571,76493,96886,28579,39494,95421, - 14369,14166,28962,25782,71294,7629,95978,30828,14406,65340, - 23562,87756,24749,47949,470,13190,57509,79883,8791,33470, - 74516,81066,99779,99325,95254,52167,22179,33959,12791,80204, - 88539,12305,26621,27857,9833,83090,59687,15631,72592,22298, - 28550,60756,15307,73583,25462,92572,13483,54938,97471,99604, - 75633,67335,79168,42531,36178,7821,87448,5000,73688,73155, - 35857,72709,10013,11156,87382,87408,40732,86684,99381,51336, - 92436,47545,43373,21410,30117,47607,90688,90803,32668,94982, - 45956,47386,27516,43581,59302,82808,3450,83574,78302,29165, - 76661,36042,3761,61901,82841,3228,16464,66673,37424,39338, - 80780,78740,17707,55674,91889,27679,91335,99497,34184,38483, - 76102,96783,11481,71161,36296,31869,8211,36481,4730,42972, - 30521,2390,14249,59879,8234,6920,71110,89799,97669,6225, - 7095,52741,6878,26001,20139,96258,2765,98111,30711,55466, - 79918,68021,81206,27965,82027,59811,51001,30126,94508,36537, - 76510,93989,18452,26971,82117,54672,8400,61471,94236,24040, - 99810,24722,46452,71903,91811,96553,44052,85079,56617,3221, - 40971,10141,24773,77647,69834,66775,96414,66033,34195,16200, - 18421,12497,87468,51153,21118,60851,40258,24846,29554,95530, - 29741,11572,41779,44917,35627,10983,26488,53799,44482,30512, - 96422,25893,96939,3075,34839,32053,85731,37836,85743,96936, - 50613,42422,52978,66994,79104,75290,75928,71751,52985,74550, - 84784,13890,26886,75942,89430,81647,91137,49337,17379,8303, - 84262,37481,45646,3130,81788,25952,27102,8829,11325,6329, - 84133,90833,74516,33740,23956,56897,41846,99268,86604,64058, - 74680,55578,73448,37439,31282,92731,29295,89532,16494,9889, - 16691,20912,80583,28204,70620,67098,7473,47764,38173,97612, - 77995,74716,52136,8705,98116,37550,83750,23429,21211,8507, - 14779,27526,83299,53033,56768,84105,90438,43626,17613,14457, - 99411,70433,3170,94822,92071,46856,6835,50275,17129,53779, - 60658,36966,10143,16596,57486,20700,32973,94724,4055,16293, - 68633,36290,90136,65491,37461,72213,24144,43520,28412,15019, - 67990,9297,10040,86320,28518,97782,6445,96633,1428,80621, - 90565,31025,60361,61008,92399,37651,10991,53740,72262,3175, - 27166,47397,50772,57446,41831,38260,88569,48637,41325,83266, - 45094,3238,48592,44448,76529,612,6163,50713,47627,28232, - 5012,75706,75708,64424,73323,80628,18285,13072,85923,52276, - 89883,58461,75697,36346,50742,96329,79536,21016,19797,85080, - 93311,31961,89719,41688,29458,72725,85546,90416,41534,99334, - 34873,13995,23229,51615,99015,87802,5774,39799,55679,81865, - 58650,89875,1915,74303,91215,9264,29636,45597,6559,69538, - 89926,13497,63398,51868,68785,58133,10013,91006,4578,39218, - 87948,58949,13459,85221,85268,71969,34232,63710,9442,56370, - 56282,17461,37268,65998,7967,71170,5695,2671,85333,58864, - 51334,60796,24138,64462,70076,56180,73084,91480,80373,15691, - 88885,72956,67637,16441,43473,79068,58633,31371,44480,38999, - 40158,70746,52293,9986,2260,22752,7963,26501,73828,12067, - 58200,51296,13334,89093,77325,75107,67039,32789,15324,50435, - 45602,54093,33928,20818,97186,822,67299,10518,87876,52334, - 59906,48676,915,26208,62007,48370,60734,23050,40971,8707, - 62083,31271,13579,31622,44017,60831,65010,45337,86673,33584, - 86013,30908,79539,42546,53602,14304,9269,12363,1588,51173, - 76682,95993,4878,4875,89655,39109,49664,58440,30289,73350, - 52728,52301,3267,66029,12129,47443,69175,90153,72343,92925, - 69388,31569,6287,55261,86110,36673,48826,13902,72221,37923, - 84502,29515,42529,19825,57141,73573,5002,64255,6466,64936, - 1523,82690,21770,28729,25905,19255,82902,21126,33211,46521, - 96333,52260,87334,35310,97109,12643,97072,28303,13106,6148, - 31501,97007,35457,99170,19789,77636,55628,13381,62397,81076, - 64907,61040,65930,96899,65491,22726,82514,99147,5791,4564, - 60797,70332,34026,32458,10330,89511,99270,40896,3565,87082, - 34333,74854,22560,5646,89275,49679,80910,43217,12219,46552, - 57619,31517,71907,80734,55344,10983,3872,53427,45966,7949, - 63730,90385,71045,74124,33931,8159,50500,90987,4490,59061, - 15552,51703,95773,65283,14184,28739,2842,43388,78048,61855, - 99346,89671,83138,40561,67272,82113,31359,99096,10720,55849, - 20341,42336,53936,24425,90196,97438,83907,904,55705,62596, - 42728,48411,49816,77839,62950,36241,81867,8144,212,782, - 17683,56168,30337,64707,12099,36953,56578,57295,82117,40912, - 56590,6439,8694,44043,99689,29030,83791,74474,87575,89681, - 47408,53096,59219,29727,20778,26116,34584,25432,83355,86463, - 58774,17703,12918,25700,63239,58066,71347,13044,89290,82231, - 22424,91988,24844,3695,16127,94090,35051,50723,91472,8449, - 66626,57970,38629,58797,41913,42924,54759,84697,88020,62417, - 92046,67860,65492,45685,52137,43983,43276,31141,96398,90415, - 16066,32156,9248,14144,52858,32091,91222,65145,25968,22745, - 40978,47466,8900,72578,59170,36970,30204,81380,14543,95862, - 65409,45108,94276,74627,2513,14287,27154,1726,23927,27380, - 8447,64409,8350,12245,83172,27912,82245,74635,18254,63017, - 86108,5835,6610,11313,2926,97959,40546,52157,14351,21227, - 38953,97819,71052,16200,97502,47292,92371,88199,61454,82499, - 66299,16189,20703,75610,87580,17617,95894,89207,89618,44234, - 3739,64385,15396,30845,4713,57410,69639,39627,13071,52754, - 59694,41520,81359,1706,73226,77250,49211,8032,16471,70733, - 1468,79627,358,93079,77009,33972,30854,27038,85781,45405, - 89153,84748,27673,37545,65060,54967,82386,46733,57141,1980, - 87512,3327,55500,51423,2422,98840,69774,67508,17429,97152, - 78221,69429,2813,52469,89853,90983,66591,14481,9488,21418, - 81265,24496,15023,82359,75595,42747,93729,44607,9396,91275, - 75879,37174,4696,83044,9972,34366,814,11237,16945,69192, - 51971,2975,42832,18618,33317,72069,41525,39598,70972,79521, - 39064,29565,57251,75886,91852,88030,46825,95079,97288,57114, - 24165,35602,38393,67932,25500,19489,61663,24972,46685,50215, - 83762,75390,51150,93762,83303,9264,39058,56857,41149,99256, - 93280,24516,91425,19083,56376,92298,53531,16945,11518,68109, - 9172,29905,33661,90295,9562,98204,8091,21247,41170,94203, - 83961,17325,20200,38113,27697,9263,96380,84969,99021,28574, - 29702,48337,92483,44716,69809,77299,1295,29197,88012,80209, - 84566,43061,34752,27482,81983,3267,36259,81252,91328,82933, - 25278,93993,34213,24414,76719,24651,93710,64462,31724,87506, - 85508,34121,4060,91659,74308,48581,30256,55909,94302,48060, - 26742,625,91405,42927,76437,57742,48030,67513,8059,51284, - 83774,5182,66367,2187,25030,12454,20984,38195,79033,3446, - 91596,225,64520,35304,96834,78416,25789,23141,5066,16671, - 92933,57555,4556,71858,36316,10759,97421,91537,70192,73960, - 4701,24799,19988,33218,46101,77608,53227,27854,78975,29253, - 3314,10804,36276,40623,6476,13728,46889,22383,85119,47678, - 65741,81128,13758,69734,72806,28558,33275,68534,27,54049, - 54476,92676,57709,50352,3545,9007,18054,70253,74309,26368, - 18463,83025,49613,29531,92461,5725,48600,60752,47179,2335, - 475,29218,3715,33400,33500,36996,91374,68652,58876,33223, - 45257,81231,93076,8304,23041,37493,98156,39751,24102,51049, - 94620,44143,81639,84073,19334,59936,81592,97166,8107,6618, - 84681,29656,2955,81977,17641,41421,36708,15256,2918,31049, - 85111,66352,33301,11034,79707,10427,72834,89668,48207,48003, - 31330,14762,71671,15816,2965,79776,35603,62956,32630,15323, - 63097,8603,1712,51779,30874,42554,87830,94982,57978,95408, - 74296,83012,57911,24626,3131,82850,87809,29909,72409,85124, - 25345,82764,1355,62839,73201,4050,30406,61450,11855,93228, - 20,43192,66753,82901,838,96084,55003,67414,37177,67899, - 86719,78190,26712,5084,69228,21562,68699,21014,97365,26830, - 10114,38648,93777,46311,62290,76450,20133,99841,91603,40202, - 26778,47728,73065,49889,79508,74996,62121,89328,79126,12019, - 45279,2785,35920,25488,59057,82364,80827,56664,76405,27260, - 62165,60803,10184,65327,296,92865,75452,68832,47355,35719, - 56437,59047,28431,16303,83904,48287,82866,25040,16884,89021, - 54161,65655,34051,11350,27252,4381,82195,32758,27990,85689, - 17546,89763,48012,71814,9296,71207,47159,12779,58679,72441, - 19905,22163,63347,78062,76069,57783,12391,63920,19618,34134, - 27907,23888,63853,64397,28385,21611,70918,38579,43076,20539, - 51110,26444,1781,47760,77727,45760,79160,51444,9978,95346, - 44370,20726,23765,31880,79375,40233,68504,81149,10262,54293, - 55035,1929,83881,22055,60350,25759,705,47392,42365,65800, - 98231,21782,86698,47950,80898,51111,33722,4327,55307,23709, - 15327,35286,89284,26435,28595,44441,20508,44924,44278,48613, - 73378,88178,65335,32224,41893,18194,99796,81999,69720,86764, - 75755,30357,58031,74097,17442,36888,38470,12106,4737,2521, - 10214,24464,83450,86275,24769,49601,67568,99198,29663,72120, - 14962,22788,44426,22482,26026,27313,90112,75415,35834,61179, - 25854,4454,78096,56769,1701,86562,1904,19764,11181,25013, - 50442,55581,49772,84007,18887,13395,92295,49716,87281,78475, - 50241,69392,46341,63921,70640,94948,5580,60914,75859,56491, - 83664,75949,34905,67822,101,31431,20018,40698,7249,91733, - 41552,58711,27193,17438,43446,13654,16234,21562,88265,18462, - 76074,26735,66044,56806,55344,32451,94586,98703,77232,17175, - 4379,6753,66872,69661,86040,65430,5744,85597,56366,1072, - 44221,5591,70018,67917,97001,54404,18365,54481,12175,57772, - 47477,89568,89327,89390,23218,10975,4140,31853,20504,77110, - 72641,27292,7092,16448,26273,69922,24270,10018,43341,73450, - 21204,81215,71587,6937,48652,49569,20716,32477,27132,40276, - 50656,34230,40434,1999,77805,11042,74403,99118,85599,23089, - 66380,74370,24994,69644,9796,947,77750,66734,32544,76442, - 84284,52293,68560,39467,35845,59011,28735,32561,98379,65783, - 84116,39286,63371,46672,33740,74139,62530,11932,35507,85609, - 33674,73803,60439,45423,91103,47880,53124,31707,5613,71620, - 88752,58338,18600,38030,45243,94837,78073,71196,91536,86253, - 24089,64606,84401,19889,79706,1281,15581,27739,8336,38475, - 38508,93990,17616,26249,40540,30928,75413,79223,73349,78259, - 72255,42404,43142,68834,16252,14804,37270,97481,32090,87650, - 39105,65403,99494,69843,27617,8859,45309,53461,51466,28816, - 35393,40044,84171,10965,64173,70800,82573,98318,96310,7271, - 43463,43075,45978,45958,42810,12852,98499,4202,14956,61190, - 58251,27452,72432,11941,86419,56695,28742,13782,40735,88427, - 64610,71020,67693,48763,65353,96020,41423,71038,88817,56408, - 62245,91551,77095,2743,7290,70777,61390,27857,95943,3781, - 68185,55589,19130,53505,97168,45975,51794,84828,50381,76725, - 87714,63556,19966,16468,49716,5700,70723,93470,75365,36867, - 39765,41482,20625,21712,98492,6024,82988,13103,60833,54630, - 67762,60978,71790,72875,75628,67007,18135,98243,15895,82776, - 800,16502,13512,87654,15265,30298,58276,67605,75454,84957, - 482,86720,50959,41875,18849,85671,99427,18548,89984,38063, - 11629,85420,50285,29566,66176,51569,98849,55909,83875,73940, - 2104,50132,24982,79143,70274,15801,63355,24813,84433,75499, - 86509,82650,68487,72506,59069,73488,46633,14325,68031,11753, - 25564,79027,72894,40888,84093,53465,88000,44588,35009,7649, - 88576,83170,70274,28592,6923,54256,93310,1962,37438,52977, - 31124,10615,15597,96864,19054,27450,48078,69242,53769,15477, - 1496,66495,54088,49837,29901,34934,34641,3464,61126,60703, - 36857,40803,59584,58291,54211,4530,21058,84478,54318,27173, - 34269,45718,7901,29438,98644,72557,96043,15648,81290,36698, - 50186,47466,91055,98532,45257,43441,8560,94096,12855,67038, - 34872,63055,93114,26958,20846,1021,54993,76260,6359,18451, - 37555,60780,68333,7499,29523,88446,26709,90317,80874,77039, - 73389,30263,46017,21802,1021,21823,72284,99441,60631,31089, - 10860,75889,86699,72046,17196,14457,64937,85385,85166,86240, - 76084,67390,60894,10391,15433,16350,18545,90822,18855,72532, - 13646,27973,25945,27567,90362,48451,80242,1776,58382,27781, - 2913,86091,73840,67352,10206,31472,8898,27145,21993,37540, - 1625,22279,58011,88518,15761,19377,36512,19316,26231,94867, - 28594,11107,68528,76795,80939,21533,55972,66516,4214,78124, - 59389,9206,25225,49092,4762,29226,22400,91321,65610,47435, - 83414,186,92213,78887,54059,77033,84142,81393,46332,83023, - 17150,45816,86269,94550,28111,32581,19148,34190,64997,87048, - 31276,73969,87144,96080,64179,2376,34688,21264,72191,57419, - 59780,92463,8477,22025,7253,47215,97149,84701,79352,83671, - 71802,46013,7359,92949,60895,59763,5925,98948,11821,49787, - 30775,22283,98686,75488,48619,10228,80731,65327,25171,60722, - 9388,19137,91210,60202,9641,18310,75884,48087,25424,88973, - 50999,60769,93845,13375,78004,63555,80609,50970,78358,5913, - 6193,65852,40041,95276,77165,48965,24758,42680,72080,35916, - 42740,50758,68675,65789,37834,8510,84723,23681,32445,97605, - 92881,17532,61255,19858,98803,3283,10614,34505,44570,70793, - 95921,54551,98043,36577,13542,90474,12904,27243,6448,96410, - 22024,1670,97323,92593,79454,81254,98128,64453,62838,65878, - 15755,84432,27408,45427,85701,82802,75041,91475,69352,39359, - 52823,58143,18872,79351,24089,90786,22648,37011,26317,85507, - 72666,19071,8043,7826,70400,60703,60075,62761,31642,97879, - 40539,47136,32319,72825,51775,31831,54801,29932,1067,11525, - 66779,20805,85880,6598,43665,2399,67220,51277,62879,34349, - 93269,49511,77048,23493,90329,12627,60961,86700,88103,32609, - 11508,39609,82114,21683,8206,50975,29731,3435,64361,43021, - 89501,61405,49441,32844,48194,6691,21537,98230,20136,93424, - 56804,7184,15555,64979,54329,41980,35061,73617,65090,66257, - 77389,8604,82411,69497,17664,77713,13330,64046,63511,93063, - 47742,52674,37371,8181,27996,22014,90448,37448,60984,51288, - 15234,4840,84025,2703,14503,17753,89893,33041,27651,86059, - 18636,36488,52370,71399,18617,35712,99504,1150,44785,52416, - 64578,71227,14740,86888,34194,13381,61841,54963,48802,26865, - 54792,18147,83241,48265,45408,6587,98399,88856,83116,98346, - 43623,4418,50390,4077,81129,18834,23952,73084,16856,22354, - 24076,74848,55051,44537,71532,18930,71309,10844,61479,5419, - 28337,13950,48460,29906,80848,75580,67684,13932,93874,51522, - 50325,78299,13241,37965,34975,14494,12186,5217,52907,30549, - 84969,92946,12549,65544,71251,95885,62149,16597,78538,64475, - 80532,97947,69019,72694,45932,85871,56108,83422,49400,40991, - 46164,77226,78978,8816,325,94479,59161,96236,85376,49522, - 50409,74508,80817,48943,29348,36268,63126,91546,58948,68840, - 57507,10476,2673,96196,58947,60691,9644,16121,4151,48812, - 81735,87973,37485,29429,89229,44899,39352,16384,11853,20173, - 4932,56513,76137,64062,96131,73086,7995,45151,23841,896, - 74143,78362,92742,27077,21395,92317,75761,69075,85648,96864, - 51053,47439,29967,39775,85987,18046,36145,1017,48444,64700, - 43629,33059,25408,152,26670,27330,23721,46944,70447,41078, - 36277,56230,88078,95098,59374,44875,28536,12977,12647,209, - 28901,12931,89245,31843,21693,98307,45646,44970,70686,38797, - 86685,74239,12121,27751,65842,90209,40328,74016,42723,75178, - 22926,80903,82067,417,98177,56392,27294,70949,44637,33495, - 51444,86049,91581,66473,56357,54257,81114,11748,38268,6269, - 16639,72821,72534,6236,28043,34880,70881,98803,82122,85890, - 7238,94545,91614,41737,57102,52841,18460,7651,83750,20585, - 41973,33231,28314,51577,62705,20661,85692,32542,83804,88837, - 12096,27800,71259,75149,17441,77800,69156,9401,57102,27075, - 83101,4383,4815,74519,81758,15506,49015,50831,46526,79126, - 70952,27740,55160,63422,51315,9087,62429,72400,82271,28060, - 74882,92158,54391,7421,87480,29993,37664,14876,94643,80698, - 57542,96500,36919,33542,44111,82717,450,10500,26219,82418, - 46685,61662,21118,2596,58515,39046,80145,16825,98253,71098, - 30623,44412,28140,86255,11728,51694,4482,90588,84709,60624, - 95180,80938,21225,97586,76954,36905,45204,81785,46780,72231, - 14664,63590,72324,44531,97285,30905,58656,65757,20029,45521, - 1336,90661,69607,85209,52335,15859,79579,24969,13376,13120, - 36163,30095,89328,93187,75518,29894,28966,34364,85359,50220, - 65711,78192,6418,43562,43415,51167,39924,6475,32214,15488, - 7460,32366,16923,29154,89419,62940,55497,40882,83041,38918, - 2112,85330,36512,1076,25232,45413,15078,96098,76655,32642, - 4938,26823,12146,57276,7165,62935,33566,84588,38491,61589, - 42055,36032,76380,47307,24,31037,88237,53283,81905,53472, - 11718,30190,56090,98540,97303,40830,8019,41721,34220,55772, - 29498,20135,53036,31708,48953,84202,55512,17592,5407,41387, - 49938,99411,21209,29102,22645,1669,77823,29122,40518,43284, - 81214,87739,9059,87804,54958,45374,43664,61532,69952,65097, - 71358,5954,38891,91172,2926,79420,33818,32504,41242,84473, - 67591,50198,79678,47538,65421,45326,46477,51379,86164,51981, - 79986,86417,16667,53227,4575,45979,49009,48493,74017,30803, - 83014,49153,7867,81611,1306,55187,66820,62884,86898,92009, - 77246,9943,96161,74620,80655,13971,20783,31254,52557,85884, - 90943,83573,62978,60371,58468,83310,6617,72568,89499,55266, - 65795,77055,47731,41193,95723,98915,31772,37107,30656,74911, - 82029,63567,15727,6315,13303,35727,9660,88787,87297,37509, - 77781,97711,16734,61236,99459,9138,63621,78280,15372,73598, - 68001,54748,86093,61483,28151,79310,73939,75859,77797,61841, - 74700,38103,47142,20628,55027,75072,30791,58031,27987,58147, - 41180,6546,21070,52660,33015,24469,44429,54298,16186,83718, - 78893,16677,3816,76319,82902,34984,20325,82186,87081,85568, - 14590,74165,66982,39885,41733,48790,27638,38992,24563,56235, - 75282,41609,29210,27419,17521,15568,19964,73265,31680,31145, - 19827,79205,42144,57833,47594,15928,22325,19844,36007,61996, - 47370,8741,58482,12419,34969,84148,89549,93496,10959,44888, - 43310,55772,38306,37732,49753,7405,71426,26880,48144,77905, - 62377,88568,28450,83829,99292,91831,73358,21894,97447,478, - 96488,36162,57309,33992,53266,7200,16742,94727,33550,60290, - 9394,60077,86605,76754,45107,37524,51186,62307,97770,6144, - 82143,52052,12077,5699,67075,45039,28131,86224,5061,8623, - 54494,4361,76384,38147,27046,55971,30362,92976,74520,99426, - 18595,30343,7177,32368,91211,73967,73145,19391,66762,25927, - 96573,72162,40344,1448,25657,86076,31664,2468,95710,89423, - 12213,98035,60725,62166,65728,37680,97986,36823,35805,37907, - 97569,11015,46544,5123,87215,68899,71344,18368,44517,36238, - 36709,97581,56,27176,95914,74996,76056,89823,27860,44340, - 55309,49361,35803,30034,30047,129,58104,803,60701,80169, - 71932,95147,65794,53194,69921,94002,90287,9389,4577,27363, - 74731,70372,72216,16941,12795,1345,38030,85016,6778,94704, - 15269,50418,17402,18945,77018,48997,22716,10481,4678,6899, - 96559,16309,87474,6179,10430,69260,14784,34622,71730,63621, - 18040,82718,54029,76726,19823,51500,85769,51368,90294,86475, - 33399,31506,61195,79411,57213,13350,23359,77169,44110,99081, - 64757,13601,64545,64929,9469,47027,22431,14814,33698,98542, - 88442,2351,5683,3441,41387,48750,62187,27313,72011,27251, - 40403,65691,64264,85402,21427,80869,6394,58672,55065,33636, - 91090,68886,44854,89264,16107,38492,58610,87635,90410,40341, - 37308,96767,76938,40548,68748,42884,10158,47972,57924,55626, - 25918,57872,68892,28140,64694,93447,67520,36136,96784,49577, - 43694,68154,47874,41347,74651,36679,14707,92216,88989,54148, - 18061,17792,1324,78457,69970,65928,86757,22053,51684,79704, - 34942,87726,50644,8369,49251,72105,6191,79441,58711,13398, - 81553,30284,97447,13289,86996,70842,12962,68579,4543,38380, - 78272,82752,84544,73600,52027,89863,80919,793,1850,21569, - 26672,65218,24526,19172,72140,54307,40111,25306,1938,84676, - 96152,32364,39900,11076,26818,98190,16330,147,76416,29118, - 71807,83186,90103,19307,1234,89568,18168,12380,8101,96857, - 4433,64177,99584,16351,2727,19624,94267,59335,52106,17241, - 63228,1353,28204,79397,81587,3156,44502,50158,8946,28684, - 27359,79134,32688,1733,11186,96543,88915,47742,3975,35017, - 7420,86757,59355,69185,22712,79798,89947,29077,49414,89875, - 53206,73712,66915,75728,52934,5035,72615,73665,98964,79835, - 50490,3937,79554,73632,97541,95127,312,31832,61779,65931, - 30285,37864,39322,58076,39024,33434,81235,31777,63429,60029, - 54324,83469,28255,20224,88119,89171,28351,77620,49604,12824, - 26345,51685,71903,63094,41915,47578,15921,48909,80932,85298, - 15584,65386,73549,87840,21136,26214,52751,95449,50263,59186, - 89680,37935,7333,1614,54067,99127,20995,71232,26280,98537, - 67104,69627,79155,68427,3263,70230,18967,68032,45157,84804, - 51465,86740,13465,73584,35537,34826,18226,70911,61903,86737, - 37439,45137,63028,70757,34269,12241,51750,65564,9969,46823, - 14830,855,58370,89983,90238,7267,19566,82766,45096,6205, - 93870,71963,69838,79119,18292,49317,36543,32921,67266,43465, - 16856,43339,46766,42843,47204,60926,89956,99198,31980,86615, - 60683,62626,98836,36743,76356,14036,95882,72478,43965,4174, - 74972,66736,66717,35014,55704,12788,20427,95931,60752,45116, - 24929,45678,63110,91377,31697,44948,29669,78978,66153,56385, - 78051,24671,75477,6449,21658,84285,13234,76149,9044,70941, - 4147,5143,30517,14026,81220,80094,3748,96590,48597,62262, - 38196,77760,10224,98200,15863,49505,44441,66327,71870,1717, - 6464,19480,21953,51689,10216,93736,79420,29397,54810,60501, - 69124,76408,8127,41154,60139,9710,84075,48986,73995,19669, - 9553,4266,6177,94367,78708,82112,11065,26164,50611,25222, - 56833,88186,77808,1127,46,44413,78374,7823,11084,57536, - 5844,74101,73347,99871,95442,33251,45039,57469,82934,41692, - 40184,57120,9016,5533,92703,99176,71998,96065,44829,47578, - 17797,60963,78639,42270,32732,10066,40672,39105,60316,20682, - 72973,25912,73016,5469,60071,87851,69045,24801,662,44867, - 50793,31098,95690,1475,8804,84352,8881,88998,48620,47121, - 46127,32463,99469,75758,43039,10188,56151,27615,7976,13264, - 19611,13775,37003,31746,89193,99755,28086,33794,52272,90983, - 98147,86109,32336,12106,41587,85863,2612,69893,13024,76820, - 3339,34850,81685,4866,97179,79969,23885,27225,61313,43146, - 55240,82989,5617,46612,33255,37309,74348,98419,48068,15151, - 36099,5111,36106,96330,72305,41038,33818,38489,14369,86656, - 48089,96665,69060,27341,94068,40660,86823,90094,30223,34158, - 11237,88237,59485,98906,2391,45863,67438,47883,59237,10738, - 26085,23959,30842,76335,95192,38285,86720,89903,95805,42174, - 88034,16524,84417,37318,9193,15438,26098,28089,35251,44060, - 97762,44564,79330,31558,46055,94323,84185,76477,61261,32424, - 21338,34315,28918,17008,26567,10825,839,92744,48683,52546, - 23170,18372,32299,58524,98980,52057,55645,20423,54842,66099, - 3572,58312,87867,89478,38582,77921,1302,27749,14552,76832, - 52470,87490,35268,21994,93368,73041,92560,56177,93713,4232, - 95408,39324,70991,77868,89404,84661,17017,47667,47971,95260, - 59678,82321,33851,78324,6853,49364,12092,33277,65934,78866, - 20704,57943,28725,71977,19652,94508,7680,3581,79497,86685, - 84311,80088,47048,27890,9931,40408,40223,97430,68454,32739, - 69235,49956,92712,1723,75866,58396,83701,35915,34619,38820, - 30566,28238,96768,50720,33372,67982,48368,33686,36660,44922, - 53996,4186,33811,22057,94061,52002,20792,9831,63936,93848, - 56102,73700,75900,65923,41890,68834,33510,25066,50192,34709, - 22426,77971,70248,93110,3231,52090,86371,7322,66146,8043, - 24865,58042,18387,39234,99026,48149,92697,79097,95732,56084, - 46030,9259,42162,13225,55289,53921,10042,46173,88733,70075, - 79432,82817,76324,87468,69906,80965,69225,49869,91435,66428, - 71500,16893,18574,4472,86802,30099,77166,89152,54014,96097, - 32420,72449,90151,57667,77468,60054,24423,35344,7890,92836, - 17951,97506,62942,78086,43555,89991,61708,60883,82300,45968, - 45443,12838,8012,83376,32619,12760,1534,20457,76963,55867, - 23130,68041,28041,13895,66740,76141,96641,32826,33792,62899, - 40666,86240,59514,31769,73642,83936,62343,68482,86435,82747, - 82231,48359,36180,32229,25088,65017,87404,25686,38897,10296, - 32046,35855,59718,68496,65422,43855,36960,73756,22653,76106, - 27520,80094,47262,83667,68496,90879,89100,49216,57949,71422, - 87735,49994,60395,39450,76201,65980,41068,20777,94257,14557, - 12358,67970,88718,99599,8145,56456,25844,77559,21720,14464, - 67470,94024,27002,89050,17095,51013,75053,6354,29854,64880, - 34731,14960,73880,17658,53715,16382,43247,58319,47915,61503, - 51763,71818,99003,18232,59866,72790,23255,39239,32557,69667, - 32604,98986,49100,46636,69743,22845,45586,7630,99382,2240, - 13369,82766,60852,76653,18498,45135,5145,52523,38676,28150, - 87241,89028,94071,16470,37829,93171,49605,27101,63872,18441, - 60896,95774,25149,48415,96041,66211,10821,72748,83826,76847, - 6844,91216,8921,65006,2628,68975,57557,47429,83192,79273, - 34881,32155,57613,23851,62482,58057,14559,37761,38470,1000, - 214,59915,87566,48045,18597,19343,51094,93286,12768,87971, - 12718,27646,12318,18803,35690,62175,25858,63665,71560,61718, - 20961,27074,44145,13220,54444,56453,54911,17909,19779,2114, - 52670,54794,13539,14195,62256,63591,9068,60061,45964,92600, - 39869,68617,51464,47224,18690,61816,35145,71122,98508,91925, - 62699,31299,62936,29830,36684,23607,87754,70245,38104,79146, - 29759,87173,16225,4527,36804,83108,15868,62187,80096,30506, - 88840,94671,20002,61043,96657,29524,36133,86785,68319,44866, - 54890,45993,46709,63787,9693,41970,42679,43043,95476,15630, - 3623,16954,30477,27902,87771,92138,96048,30069,46413,39331, - 7103,52147,4835,25925,49692,3254,20906,82229,6180,25457, - 54698,67601,4391,29048,2579,97652,49406,68028,75091,5107, - 12908,7381,13849,46530,56465,94528,88556,46964,11678,34911, - 86623,46640,82234,11485,40907,83121,32150,40431,14514,69808, - 57577,65511,76093,82302,11502,29830,85298,41714,31908,1034, - 29885,27628,87846,60712,56086,67774,58129,30832,42715,30958, - 55472,49229,3763,15799,65624,10572,40056,68424,95104,33155, - 47408,3193,9947,90937,77855,151,22418,80776,27096,63032, - 73676,2499,7185,69014,99923,17968,7272,49669,91450,344, - 5214,83204,57263,65278,16604,8187,43287,84897,57561,12894, - 39607,29627,8925,57545,24859,27003,28438,90956,89159,82812, - 61302,72127,72935,74813,13578,85924,95860,66725,98802,72489, - 19063,66245,19031,15250,85133,58530,7290,89338,46798,34875, - 29125,30847,18740,81838,89556,25541,23393,52031,56103,76888, - 20562,46435,20291,20141,52863,75638,14812,5509,9612,44236, - 43179,56479,13472,68751,72391,42681,91659,37107,94789,88784, - 16066,21077,74185,41476,61236,14837,99552,69180,36771,34669, - 46090,16219,82354,69037,45253,29960,9191,48619,2960,53289, - 83545,95323,88357,96071,36736,52030,90752,42332,18745,76973, - 9456,93818,249,74393,96511,83694,75811,14173,29084,97132, - 42618,2515,43281,3227,57138,73343,78888,12096,64115,93948, - 40792,63743,55857,22722,29335,94654,42490,7782,43328,28013, - 42492,71594,73969,45363,6677,28646,10974,64669,1922,37717, - 21826,40360,38935,51693,40700,55481,25499,75203,52930,9038, - 61438,57864,12082,34398,94337,28576,37014,68064,53954,82660, - 73913,19307,80797,55564,24501,50178,1755,20139,28946,15264, - 73252,81451,26824,88449,15147,47626,48456,43525,23228,78900, - 30184,24587,43681,13282,89157,42793,65946,69374,37262,75501, - 55895,3398,99997,96333,86745,55711,84986,35602,86230,24860, - 13333,46782,56072,61993,20955,9485,61200,36085,43948,24783, - 46372,46610,72118,88459,65768,52853,55604,60637,44135,70848, - 86286,93449,59132,33174,79788,94649,95650,99451,66937,63233, - 14066,31510,25825,10332,23296,23846,38976,41513,92078,93290, - 4096,34758,2328,12702,96405,70407,43612,88699,79034,27437, - 67833,18506,18623,5372,51061,40405,77802,16412,39926,69899, - 19983,72209,28706,36625,43985,38344,87431,78050,21295,6534, - 32339,59423,69201,24790,71314,81524,73188,77228,32809,65749, - 90658,2036,51751,76198,49936,22496,4779,79033,72846,7341, - 28039,82884,11540,78399,14783,18079,47830,45008,4770,43878, - 98044,28605,69303,58342,33706,75552,76136,1745,2736,49219, - 57067,54858,49831,3889,83008,92014,34293,42270,17644,9001, - 13653,41992,56567,20397,94992,84057,3657,80666,3846,29228, - 4267,2636,91032,80547,63077,19091,28284,36685,61209,37992, - 49027,73013,14852,96220,12173,8479,18630,46640,57672,80787, - 61565,26872,60234,42801,76065,86977,43424,77602,16941,90707, - 96461,6049,97416,59216,70827,65317,90448,15556,43341,54158, - 6548,60350,5331,94711,98267,54052,62622,48140,57982,6416, - 17740,32625,35725,18708,82998,60515,8143,67327,43239,77566, - 96514,6510,72829,77887,88700,43451,88981,67891,24015,38331, - 74582,74762,94125,84618,99743,78643,90304,70361,18147,32081, - 11558,98509,35244,73445,74816,54724,70844,85765,86692,48762, - 92532,97551,76271,23279,23708,96725,71069,40992,25774,93620, - 94364,25213,85803,42482,45942,91440,9194,49746,16590,18846, - 64859,12675,20265,21328,95961,3296,1992,92275,724,48206, - 62051,52289,44497,5584,90072,97284,85193,53564,99845,56759, - 86026,31539,41903,28938,52058,74324,36477,26020,13273,18896, - 34842,31050,24902,87697,49235,10236,93866,870,17389,95123, - 53353,28432,48546,43416,80715,21431,74881,26147,69690,60322, - 40689,15345,33062,85347,41561,59709,65427,30661,74896,60857, - 12941,37550,68538,1647,63518,84789,90386,10978,82041,96490, - 32537,36029,99702,51929,61438,70151,87057,92773,294,66698, - 70390,92625,11625,78412,1899,3675,72737,22995,65914,95809, - 76196,21046,95702,7669,3156,32829,54350,11094,44349,95825, - 91006,97997,15625,99552,78076,81580,27286,73045,42968,56573, - 22370,96993,35654,31748,99391,66651,94450,48698,24708,90288, - 7517,22064,3210,60005,22148,10295,74899,2813,79959,50383, - 38828,96076,62973,80166,22445,33657,31139,651,11654,57340, - 98739,48782,66846,23943,44689,87798,91902,93012,5212,9353, - 668,34217,93144,37369,51400,5160,46525,57995,34800,72637, - 67043,90563,38126,44113,9012,5660,51752,7007,95457,31397, - 65004,67221,82578,26183,65101,39517,74962,34336,52245,50555, - 79980,4878,87167,70989,69460,92543,5992,16314,8553,89795, - 87129,77271,62078,93849,47879,86015,82786,53293,98224,74286, - 25895,80619,88335,43804,35381,95744,73240,93725,26086,87647, - 40053,12447,62336,8628,71882,28049,4398,95992,88641,7276, - 51029,33914,29346,31469,2445,18614,81855,86071,74205,63796, - 68821,44822,13331,46137,41432,98269,2609,87453,90361,63751, - 57165,75683,4212,21713,5650,65153,10289,49438,36118,38812, - 70771,65182,60242,39128,21251,76303,89733,72389,1829,18280, - 12777,24739,90732,15045,23824,10102,18655,96856,70809,42817, - 71149,81852,53945,38949,28192,98436,51238,60507,61412,41242, - 15476,38174,15896,87612,22018,13259,56543,66763,45853,84620, - 3514,5364,12355,25367,4489,63703,18318,91938,82689,88708, - 13516,49772,4974,81704,58016,26578,9569,9150,93065,30714, - 77868,87292,64830,57457,43400,40274,5480,81235,12798,7421, - 74907,32488,85663,61291,29772,25090,41368,85052,74335,80646, - 21892,59830,83085,95823,23617,15179,97385,36504,57117,7544, - 54426,58218,55036,57590,52806,22723,19387,58920,66860,50151, - 12033,15005,71728,31879,3531,95262,5524,38410,67805,47896, - 42829,20807,93208,68470,16852,54199,94432,63658,23230,16769, - 93515,2317,3219,8663,7573,16950,85854,4212,11604,43284, - 49593,45872,23374,86097,62437,55472,48552,63168,51138,43011, - 6249,23520,58353,57332,9186,46040,63574,59679,50827,23079, - 7156,23387,45391,51281,248,28039,46641,2747,27998,19398, - 81828,85111,59790,15256,75181,49991,45583,22291,75467,96089, - 8429,28940,98701,63579,82584,69473,52618,4351,71316,68321, - 1595,69757,55079,49305,6077,33240,52792,3170,25592,87240, - 61302,8560,27456,94380,78052,55396,40636,22115,27015,52610, - 42675,17531,60018,75381,96627,41820,72865,67671,1769,55882, - 92174,71026,63769,18419,48081,67710,77052,55091,67157,3705, - 45337,72446,23640,37258,44451,65342,97566,52914,93019,80896, - 34986,30341,36936,30447,74841,35172,84437,13504,42311,22778, - 52584,16798,41095,92677,61436,10995,87539,62803,62023,38340, - 49017,34388,72416,94295,34924,17054,31986,43081,67862,97578, - 8574,14016,28206,84249,91348,36249,36307,14598,30190,98417, - 6662,52614,770,42511,86287,93382,52923,32431,80654,38538, - 66824,48092,52145,29539,98133,35723,87619,21185,36548,24969, - 1331,39432,40191,46590,68088,55569,40066,45413,70867,86399, - 24086,81319,86669,89907,79812,1031,78226,66287,14202,33019, - 21145,14241,50177,70399,96763,10469,59417,39448,79811,30462, - 69451,37951,24215,14225,88233,13246,83320,62813,40372,85013, - 93037,79777,99874,48458,4424,61891,92996,55688,75095,48074, - 44067,31926,51019,28602,94495,35203,54619,93070,39918,75189, - 47013,41841,88424,3705,97007,67298,459,99842,3769,61589, - 26971,77395,54600,13962,41737,96886,34398,7002,38948,26376, - 55098,11551,6232,69415,88899,42065,57059,98867,23591,55689, - 33351,75488,38504,13712,17314,42580,24187,66328,57355,48692, - 98442,96311,49518,27833,94824,61725,80391,19962,88939,31400, - 51718,25344,67520,6326,79724,8103,95039,55864,36529,52144, - 22348,26344,37393,86605,47056,86845,43214,11279,34334,37811, - 84708,94862,10024,43560,38475,97417,93758,6802,15889,14682, - 92590,87134,1117,27698,70751,35080,37437,26499,74748,83289, - 87997,61520,18891,2290,68750,10432,19516,9258,70545,69514, - 52022,40516,40483,1576,91288,54358,24218,18662,13525,70097, - 51378,59891,28002,79523,94668,21692,40082,8664,28691,14618, - 94506,54948,45660,65569,29341,51406,20581,50495,24963,71305, - 20542,48812,60629,73333,42401,39611,87570,10939,95730,66987, - 56191,13023,24434,14740,40539,70011,47363,32487,64047,53604, - 37460,88083,4328,97052,3085,87225,40458,15245,3916,41293, - 95642,70926,94305,78775,25370,52291,75460,14170,30601,74036, - 92354,20195,19987,40023,49657,59456,76546,82254,46427,65579, - 53774,41167,52098,62766,78875,92004,36026,20240,86195,25133, - 66331,60805,75314,15185,48315,58145,39382,94173,77447,33206, - 2670,58567,61297,88524,7455,5050,45579,67139,63792,38806, - 21696,89133,77168,6587,23105,83496,65409,38512,49178,99332, - 56138,59317,85874,33178,99313,48078,58893,59128,47156,53622, - 40536,56198,49103,99263,58962,49126,90845,7911,8467,95858, - 65675,37201,759,52897,5765,59088,15549,15920,52097,96791, - 49501,53794,67430,26507,85534,61561,66643,27131,24704,88266, - 47237,54399,40755,12488,62557,28162,46204,4334,71590,3942, - 17717,6444,80287,22811,74158,20754,1666,33922,90715,15468, - 77287,97930,56891,61514,95217,11609,85370,99490,52351,49253, - 1999,91374,41735,92232,14854,70493,33155,49770,74601,13401, - 77300,90003,65149,5685,51681,74769,92545,96360,75475,13897, - 83377,93196,49844,98633,57631,69611,7472,99535,91606,61315, - 29266,2353,44816,14187,35006,23682,23450,21735,69644,59402, - 43454,21182,45992,47808,78726,45324,54954,95476,13120,96726, - 95079,94444,29505,67094,71528,2414,94183,98455,24821,40639, - 79343,37429,30235,40202,27252,69879,94971,18391,28272,55797, - 90184,68483,3861,68320,99069,22039,97097,44480,90893,52572, - 39593,52164,43498,71329,41746,66818,34366,62871,58141,76571, - 46387,93973,16230,22266,1360,32432,36368,16253,94527,65492, - 3296,94296,44550,72817,57168,40430,10659,91606,58751,79843, - 10493,40082,20884,3397,44058,69715,79186,8474,18053,70626, - 1094,95474,35116,57694,60632,53511,7508,93652,68793,82698, - 257,72649,21292,97195,11228,22435,89373,38462,18412,64956, - 57241,52729,558,44649,90159,34307,77026,26715,59729,76315, - 55929,49836,45799,81396,80049,29310,15885,89836,13660,96879, - 6984,56332,86509,1524,83691,370,37376,16366,53360,82300, - 16669,49763,23769,67607,88055,1706,71916,3523,45653,17646, - 18275,85768,48149,59535,84541,40954,47367,42619,76740,64281, - 51356,52161,70662,82268,21970,12047,78567,45629,84988,77585, - 62801,55462,95515,4676,12156,85768,90839,4188,26553,89236, - 91277,15770,87328,96706,92875,24985,77555,94837,68115,34481, - 66647,45220,39270,9033,30165,47212,82985,2948,99791,68096, - 5225,13839,54143,74502,4628,31360,44498,35990,32163,68297, - 2851,36560,24152,94926,25139,59288,56585,21845,56095,4742, - 90248,21690,27078,40339,64754,26561,48791,83338,12255,94598, - 85311,88200,62378,39993,89150,10055,55520,42904,37942,24695, - 56078,2532,15772,13053,8000,81043,6940,89780,58142,72475, - 4521,65524,2790,35149,40788,82001,93848,179,85789,19699, - 81691,85212,41190,24318,89833,67674,49901,30624,1609,29262, - 22135,92668,467,71758,41244,94547,15537,58136,76430,98832, - 12535,98918,42531,86045,38319,22244,43239,71539,25557,74476, - 43455,69015,67087,65966,63391,93973,79513,12705,92643,21014, - 17923,13758,82704,5875,45513,79736,50134,37288,59861,24555, - 79418,6476,77361,9724,79566,15163,83802,96974,11508,24612, - 40910,63895,36238,98323,19054,27849,14775,36976,86208,76574, - 57736,92765,88578,12786,67366,17382,46478,45975,2510,68304, - 74784,33263,65702,42426,37702,64188,87595,36791,7305,91509, - 90976,62252,53183,83111,37354,69555,99987,27773,91106,3084, - 86339,5103,64434,13302,7396,71044,98378,31219,1245,52327, - 34411,35121,22465,47801,77406,40335,9465,86729,46857,52435, - 46566,97841,45220,74574,89611,92985,31212,40203,67607,99790, - 85657,13204,39661,19805,35262,77972,53764,70754,65331,87386, - 85341,98615,75821,95786,89563,9660,52683,98723,14247,39737, - 5622,14710,1404,20390,2606,9576,84945,73979,68525,52817, - 76118,34915,84215,28862,54285,70880,33826,42573,30152,44197, - 61067,23099,91637,20542,65563,59788,21686,19099,12494,48755, - 10122,24742,70874,28512,28565,19361,63740,20324,38193,20540, - 93572,90848,94994,94874,49546,40691,26908,13347,78881,10204, - 87599,45208,53146,3761,89605,34943,63092,66737,91985,53867, - 85461,13317,22801,39444,93460,44736,87258,60192,11577,33742, - 3347,82163,57314,60924,70718,63709,14923,93342,63618,83380, - 98350,73890,76886,7791,59352,81798,60793,69460,86022,66298, - 94160,72456,67021,33485,44244,55090,15790,76140,99029,49048, - 6303,54791,8010,58287,60570,18070,21794,44552,83937,37270, - 16679,46400,53018,3505,30215,65689,32145,10306,50294,16170, - 95011,26908,40475,29531,32616,71312,65738,485,15819,31293, - 4876,73728,24670,57796,43990,1642,86532,69081,17912,35332, - 23557,35448,30585,79607,39735,67152,40631,34973,18112,90127, - 56776,8201,47329,26353,78016,98803,57547,82912,5277,50873, - 8250,56154,92131,64215,97466,22705,41271,36981,26913,43791, - 57938,95533,5327,85147,83018,46535,51534,70461,62296,34757, - 71862,16841,53301,63908,99015,22923,58629,11999,98138,83133, - 18743,50559,99242,19590,90118,83326,92369,66342,57452,62126, - 70992,46826,58806,13629,65189,17411,39585,17675,97778,29394, - 5939,23516,11513,1525,44308,16624,71621,72121,40450,26636, - 37523,39462,17998,48475,64364,1549,29157,27971,91172,43850, - 24447,37663,70912,63477,2218,61019,45075,94929,27200,34601, - 48484,10797,79632,42472,58734,25422,17725,32182,84870,39861, - 98257,65847,56117,90876,52724,61802,27352,37813,33555,13838, - 65413,87601,67939,61089,13073,89099,24315,13026,56468,61811, - 8650,80052,45407,553,99927,47334,95677,68215,7578,88896, - 91200,80053,88894,59721,10614,48404,25800,20783,56974,18694, - 37052,81005,91309,37697,64332,80961,15215,92932,52547,18644, - 53978,16344,34075,47681,69669,83900,63420,60349,50952,43491, - 10584,56982,835,75142,45445,29852,33637,8709,94417,67543, - 66254,48318,92950,65991,17425,17525,18941,50816,74275,96875, - 52104,28996,9282,26506,84586,54279,42431,37213,73315,18097, - 12464,94520,17326,11067,95871,32208,39009,53086,41830,81576, - 20194,15662,62617,70238,31476,2705,19534,33170,80694,79221, - 25498,41542,84687,63794,95196,19641,26125,66752,12674,45437, - 52171,83989,77420,88281,11146,60869,81997,7876,11290,71577, - 62943,78216,12405,39394,94753,31039,47712,28998,56665,54583, - 88251,63450,20471,59618,42717,27805,29117,75510,87577,33926, - 56108,17947,42844,32988,89155,83431,18396,57340,68641,74935, - 48341,83809,93564,50663,58755,59004,83691,74428,92245,79575, - 44561,23782,53184,56554,3795,33628,95723,51854,3385,88505, - 65300,32948,8767,7580,78042,40380,67253,59806,12192,90218, - 86200,51963,91660,95458,38812,2559,9100,95976,53397,89797, - 20278,17104,67576,72472,37095,83302,18875,57207,38682,98934, - 57204,69990,13626,38820,29554,28193,12980,48083,6496,44385, - 28182,6628,68554,51449,1106,83421,17122,72525,12337,58289, - 13115,93487,26280,54463,90768,8723,25255,5120,76555,23944, - 93384,94970,50578,16131,12565,87321,12950,11955,18729,46364, - 3997,56431,42532,66282,55440,62935,26169,98455,1676,17206, - 33665,2965,26582,5784,81419,95969,91254,70395,31135,31890, - 1920,66087,61222,79430,78042,68500,83297,8637,24148,90772, - 46815,33971,49621,44789,68960,47452,87437,20892,19837,70521, - 33222,88567,27393,53648,31285,40211,8741,23136,3391,75330, - 10672,33825,94284,67138,15496,43198,12932,94098,12969,98646, - 92571,47324,17977,42301,60167,17231,3014,54332,57138,51142, - 51921,23882,46742,20891,31537,24859,52317,17234,19492,21903, - 44907,73836,62528,4892,13690,75907,33609,81066,33663,48282, - 11007,37180,19557,11056,97690,25683,7793,94033,13556,27639, - 13849,37312,45530,719,63754,11749,75743,9007,15437,78909, - 29620,31032,1333,26530,42478,62123,20916,85208,73665,16053, - 4904,13505,53065,12075,37757,21156,92691,40326,54860,59228, - 13741,57230,54088,43120,41644,14738,50419,14260,66358,71860, - 75471,58880,5276,84625,95522,55409,71357,90035,93914,85579, - 26810,37518,70612,89340,30745,1671,14527,87139,26341,15792, - 72696,62250,33778,4698,59593,76781,27517,26232,3036,26095, - 5810,56584,48616,29247,26754,69872,3268,84288,42787,80970, - 8872,33402,48243,96413,56078,50581,25511,25447,94267,33183, - 16534,7741,64176,26576,57750,48240,33295,98368,37649,97354, - 27919,62569,71385,10641,17415,69875,76261,77241,78595,15679, - 65041,40578,59207,31244,23907,69957,22693,54996,99078,79714, - 53422,59887,44379,53229,38197,79571,27141,11249,4129,92850, - 41509,42957,6397,71724,12498,94514,69681,11960,6132,26125, - 76081,11924,19520,17878,13495,34776,44974,94695,87983,89291, - 34500,45653,13787,52601,30878,91280,1789,27969,34176,8398, - 26395,59447,1447,90669,65131,76074,15646,11092,81167,30755, - 33880,13663,97002,35088,94119,19013,71683,61944,6055,33626, - 63951,93104,50604,71074,77224,14821,56861,84649,50023,524, - 21746,71298,5152,94456,17095,61600,19528,52697,19157,10487, - 49121,54304,22583,4847,13767,20445,32412,25045,59649,548, - 40984,84708,58975,61175,11533,84507,71492,5268,39849,38275, - 40647,57021,77382,82574,68419,31717,37661,20156,66735,79799, - 81858,19479,72628,47272,677,64905,29953,56334,2881,87504, - 8909,56954,70870,77705,90445,57377,27805,91078,90980,55007, - 4038,8695,41244,43608,54939,28745,11789,16473,53949,63531, - 50420,3762,18544,75073,32487,61610,98261,95776,12443,83193, - 67855,18288,99141,95915,66324,13690,18370,94843,70068,64722, - 72459,87413,60459,42534,87330,76336,57854,42259,41645,52323, - 56028,42454,63944,96854,90215,63946,3273,23130,90542,22355, - 28265,53517,54272,73427,66043,45845,60185,7172,47984,59976, - 68228,48812,22566,43217,80204,61701,15002,97208,23302,39334, - 86945,63434,45238,73770,85365,88710,434,32785,53973,2762, - 79365,63050,86318,72360,19015,6602,84917,9914,84223,67886, - 75639,5406,34295,65618,25995,52931,19405,35375,28880,9207, - 31719,23637,95764,96700,44576,6185,58205,76397,15127,18678, - 85019,3463,13020,47956,14197,45859,97796,13224,89667,56714, - 89815,52665,29777,34739,12783,73777,76746,87694,60496,99670, - 63504,4203,3839,37606,8491,88199,66281,31760,23404,41252, - 36841,96580,48901,29053,95707,17395,91455,34510,21743,1516, - 55564,24101,38347,10233,33447,27259,77680,5959,44112,87916, - 92509,85151,94136,10498,2314,40669,8552,88386,41597,56690, - 11021,82912,15284,78174,3617,32324,52162,53502,89719,96171, - 16528,66360,40711,68342,81059,9729,17255,5617,87889,86291, - 86221,33315,53690,18235,6645,32198,34839,67381,24261,48174, - 6416,36695,81648,55638,55453,1415,10085,5859,79207,94857, - 46201,35092,38991,31768,44423,82684,94558,99345,68479,38998, - 80229,16082,32983,89807,88830,1477,69321,47848,75578,41289, - 86189,50970,35169,83462,65777,14847,19357,39106,61219,62400, - 28075,39290,39179,84037,49795,41488,65143,26470,60393,84975, - 40769,96723,35883,81208,55088,57253,24405,11108,43203,27815, - 26648,18450,47894,54464,82965,22052,92313,52617,15298,89350, - 54990,42247,42873,18251,77587,20294,94887,54323,38903,35233, - 42877,52273,64793,30888,23702,98729,84469,5790,14672,76463, - 71119,38315,1731,78582,36367,22657,94145,79075,65767,43135, - 42092,47551,79783,84713,40569,73838,63705,95078,42185,9582, - 98297,92936,99199,28701,70115,50988,57682,39698,4438,24494, - 93217,35051,27626,13580,60102,82596,76111,43191,23059,91113, - 87413,8709,40614,21093,31916,40121,99386,15841,4582,30043, - 79713,17787,78644,14019,64629,61087,30505,95469,73849,75728, - 75524,82592,69757,64468,64924,34803,76417,71351,36737,75916, - 67231,30207,36167,27477,68202,81228,2498,91128,57687,47314, - 20906,11583,18955,24851,2898,41888,51346,11474,84078,48572, - 40602,81180,51549,30735,12197,69783,39151,31935,99801,84267]; \ No newline at end of file diff --git a/lab-matt/sorted-large-array.js b/lab-matt/sorted-large-array.js deleted file mode 100644 index f03582c..0000000 --- a/lab-matt/sorted-large-array.js +++ /dev/null @@ -1,1001 +0,0 @@ -module.exports = - [8,20,24,27,46,56,75,95,101,129, - 147,151,152,156,179,186,208,209,212,213, - 214,225,248,249,257,284,294,296,309,312, - 312,325,344,358,359,370,389,413,417,434, - 450,453,458,459,463,467,470,475,478,482, - 485,524,534,548,548,553,553,558,600,612, - 625,636,650,651,661,662,668,677,705,706, - 719,724,732,759,770,782,793,800,803,814, - 822,835,838,839,855,870,896,904,915,916, - 935,947,953,968,989,1000,1001,1017,1021,1021, - 1024,1031,1034,1060,1060,1067,1072,1076,1082,1094, - 1106,1117,1127,1128,1150,1151,1156,1200,1232,1234, - 1245,1276,1281,1295,1302,1306,1321,1324,1325,1331, - 1331,1333,1336,1345,1353,1355,1360,1404,1415,1428, - 1447,1448,1468,1475,1477,1493,1496,1507,1516,1523, - 1524,1525,1534,1546,1549,1576,1578,1588,1595,1598, - 1609,1610,1614,1625,1642,1647,1659,1666,1669,1670, - 1671,1676,1701,1706,1706,1712,1717,1723,1726,1731, - 1733,1733,1745,1755,1769,1776,1781,1789,1829,1847, - 1850,1859,1859,1875,1877,1882,1899,1904,1915,1920, - 1922,1929,1938,1961,1962,1980,1992,1999,1999,2026, - 2036,2047,2084,2104,2112,2114,2142,2187,2203,2218, - 2240,2260,2269,2280,2290,2314,2317,2328,2335,2346, - 2351,2353,2376,2376,2388,2390,2391,2393,2399,2414, - 2422,2439,2445,2468,2470,2475,2498,2499,2510,2513, - 2515,2521,2532,2559,2570,2579,2596,2606,2609,2612, - 2628,2636,2670,2671,2673,2703,2705,2727,2736,2743, - 2747,2762,2765,2779,2785,2790,2813,2813,2842,2851, - 2881,2898,2913,2918,2926,2926,2927,2937,2948,2955, - 2960,2965,2965,2975,2994,3014,3023,3036,3062,3075, - 3083,3084,3085,3127,3130,3131,3156,3156,3170,3170, - 3175,3181,3193,3210,3219,3221,3227,3228,3231,3238, - 3254,3263,3267,3267,3268,3273,3279,3283,3289,3296, - 3296,3314,3327,3339,3347,3349,3357,3385,3386,3391, - 3397,3398,3413,3435,3441,3446,3450,3463,3464,3470, - 3505,3514,3515,3523,3531,3545,3565,3572,3581,3596, - 3617,3623,3649,3657,3664,3675,3695,3703,3705,3705, - 3707,3715,3731,3739,3748,3761,3761,3762,3763,3767, - 3769,3769,3781,3795,3816,3821,3839,3846,3861,3872, - 3889,3889,3916,3923,3937,3942,3952,3956,3975,3993, - 3997,3997,4038,4050,4055,4060,4077,4096,4121,4129, - 4140,4145,4147,4151,4174,4178,4186,4188,4197,4202, - 4203,4212,4212,4214,4217,4232,4266,4267,4274,4283, - 4301,4302,4313,4327,4328,4334,4351,4357,4361,4379, - 4381,4383,4391,4398,4418,4424,4428,4433,4438,4446, - 4454,4468,4472,4482,4485,4489,4490,4509,4521,4527, - 4530,4543,4556,4562,4564,4575,4577,4578,4582,4604, - 4628,4676,4678,4696,4698,4698,4701,4711,4713,4730, - 4737,4742,4745,4762,4770,4776,4779,4799,4815,4822, - 4835,4840,4843,4847,4865,4866,4875,4876,4878,4878, - 4885,4892,4904,4906,4932,4938,4974,4984,4994,4999, - 5000,5002,5012,5016,5035,5050,5061,5066,5084,5103, - 5107,5111,5120,5123,5137,5143,5145,5152,5160,5182, - 5200,5212,5214,5216,5217,5225,5239,5268,5276,5277, - 5327,5331,5357,5363,5364,5372,5393,5406,5407,5419, - 5419,5440,5469,5471,5480,5490,5509,5524,5533,5566, - 5566,5571,5580,5580,5584,5585,5591,5604,5613,5615, - 5617,5617,5622,5646,5650,5658,5660,5664,5683,5685, - 5695,5699,5700,5704,5710,5720,5725,5744,5765,5774, - 5784,5790,5791,5810,5827,5835,5844,5857,5859,5875, - 5913,5914,5919,5925,5939,5954,5959,5966,5966,5981, - 5992,6024,6031,6049,6055,6055,6077,6095,6131,6132, - 6140,6144,6148,6163,6177,6179,6180,6185,6191,6193, - 6198,6205,6225,6232,6236,6249,6269,6287,6303,6315, - 6326,6329,6340,6354,6359,6394,6397,6416,6416,6418, - 6439,6444,6445,6448,6449,6464,6466,6475,6476,6476, - 6491,6496,6500,6501,6510,6534,6546,6548,6559,6587, - 6587,6588,6598,6602,6610,6617,6618,6622,6628,6632, - 6639,6645,6662,6677,6688,6691,6744,6753,6769,6778, - 6802,6818,6835,6844,6853,6860,6878,6897,6899,6920, - 6923,6937,6940,6984,7002,7007,7022,7028,7030,7055, - 7092,7093,7095,7103,7156,7165,7167,7171,7172,7177, - 7184,7185,7200,7205,7238,7241,7249,7253,7256,7260, - 7267,7271,7272,7276,7279,7290,7290,7305,7312,7322, - 7324,7328,7333,7341,7359,7368,7371,7381,7382,7396, - 7405,7420,7421,7421,7433,7455,7460,7472,7473,7499, - 7508,7517,7544,7573,7578,7580,7629,7630,7642,7649, - 7651,7668,7669,7680,7721,7741,7776,7777,7782,7791, - 7793,7816,7821,7823,7826,7835,7848,7867,7876,7890, - 7901,7907,7909,7911,7930,7949,7963,7967,7976,7985, - 7995,7998,8000,8010,8012,8019,8032,8040,8043,8043, - 8059,8083,8090,8091,8101,8103,8107,8108,8123,8127, - 8139,8143,8144,8145,8152,8159,8181,8187,8201,8206, - 8211,8215,8234,8240,8249,8250,8292,8303,8304,8336, - 8343,8350,8369,8383,8398,8400,8405,8411,8429,8447, - 8449,8463,8467,8474,8477,8479,8491,8503,8507,8510, - 8550,8552,8553,8558,8560,8560,8574,8603,8604,8623, - 8628,8629,8637,8640,8640,8642,8650,8663,8664,8694, - 8695,8705,8706,8707,8709,8709,8710,8723,8741,8741, - 8764,8767,8767,8785,8791,8804,8811,8816,8826,8829, - 8836,8859,8872,8875,8876,8881,8898,8900,8902,8909, - 8921,8925,8946,8999,9001,9007,9007,9012,9016,9022, - 9033,9038,9044,9044,9059,9068,9087,9100,9138,9150, - 9158,9172,9183,9186,9191,9193,9194,9206,9207,9248, - 9258,9259,9263,9264,9264,9269,9274,9282,9296,9297, - 9337,9343,9353,9388,9389,9394,9396,9401,9442,9456, - 9457,9465,9469,9485,9488,9535,9544,9553,9562,9569, - 9576,9582,9612,9631,9632,9633,9639,9641,9644,9660, - 9660,9693,9699,9710,9713,9724,9729,9796,9831,9833, - 9843,9889,9890,9914,9931,9935,9943,9947,9957,9969, - 9972,9978,9986,10000,10013,10013,10018,10024,10040,10042, - 10055,10066,10085,10088,10102,10114,10122,10141,10143,10150, - 10158,10184,10188,10204,10206,10214,10216,10224,10228,10233, - 10236,10262,10289,10295,10296,10306,10330,10332,10362,10372, - 10391,10427,10430,10432,10459,10466,10469,10473,10476,10481, - 10487,10493,10498,10500,10500,10505,10506,10514,10518,10564, - 10572,10584,10614,10614,10615,10615,10630,10641,10646,10658, - 10659,10672,10720,10735,10738,10759,10767,10769,10797,10800, - 10804,10816,10821,10825,10844,10860,10906,10930,10939,10959, - 10964,10965,10974,10975,10978,10983,10983,10989,10991,10995, - 11007,11015,11021,11033,11034,11042,11056,11065,11067,11069, - 11076,11084,11092,11094,11107,11108,11126,11127,11131,11146, - 11156,11181,11181,11186,11218,11218,11228,11237,11237,11249, - 11275,11279,11290,11305,11307,11313,11325,11343,11347,11350, - 11355,11364,11447,11474,11481,11484,11485,11502,11508,11508, - 11508,11513,11518,11525,11533,11540,11551,11552,11558,11572, - 11577,11578,11583,11592,11604,11609,11625,11629,11654,11669, - 11678,11679,11701,11718,11720,11728,11748,11749,11753,11788, - 11789,11797,11821,11853,11855,11857,11873,11924,11930,11932, - 11936,11941,11955,11960,11972,11974,11999,12019,12033,12047, - 12067,12075,12077,12082,12087,12092,12096,12096,12099,12104, - 12106,12106,12121,12129,12133,12146,12156,12173,12175,12181, - 12186,12192,12192,12194,12197,12213,12219,12227,12241,12245, - 12255,12305,12309,12318,12318,12337,12348,12355,12358,12363, - 12365,12380,12391,12405,12415,12419,12435,12443,12447,12448, - 12451,12454,12464,12488,12494,12497,12498,12499,12502,12504, - 12507,12526,12535,12535,12549,12565,12612,12627,12632,12643, - 12647,12674,12675,12696,12702,12705,12718,12718,12760,12768, - 12770,12777,12779,12783,12786,12788,12791,12795,12798,12824, - 12833,12838,12852,12855,12864,12879,12892,12894,12904,12908, - 12918,12919,12931,12932,12941,12950,12952,12954,12962,12969, - 12977,12980,12997,13020,13023,13024,13026,13030,13044,13053, - 13071,13072,13073,13099,13103,13106,13115,13120,13120,13137, - 13167,13168,13169,13190,13204,13204,13216,13220,13223,13224, - 13225,13234,13234,13241,13246,13256,13259,13264,13273,13274, - 13282,13285,13289,13302,13303,13317,13330,13331,13333,13334, - 13337,13347,13350,13369,13375,13376,13381,13381,13395,13398, - 13401,13459,13465,13472,13483,13494,13495,13497,13504,13505, - 13512,13516,13525,13539,13542,13556,13573,13578,13579,13580, - 13590,13601,13626,13629,13629,13646,13653,13654,13660,13663, - 13690,13690,13694,13712,13717,13728,13741,13758,13758,13761, - 13766,13767,13775,13782,13787,13838,13839,13849,13849,13870, - 13872,13890,13895,13897,13902,13932,13950,13957,13958,13962, - 13971,13988,13995,14016,14019,14026,14027,14036,14066,14085, - 14095,14144,14166,14169,14170,14173,14184,14184,14187,14194, - 14195,14197,14200,14202,14225,14241,14247,14249,14260,14287, - 14304,14325,14333,14351,14362,14369,14369,14370,14379,14401, - 14406,14415,14428,14441,14457,14457,14461,14464,14481,14491, - 14493,14494,14498,14499,14503,14514,14527,14527,14543,14544, - 14552,14557,14559,14590,14598,14618,14664,14672,14673,14682, - 14707,14710,14738,14740,14740,14756,14760,14762,14763,14775, - 14779,14783,14784,14804,14812,14814,14821,14830,14837,14838, - 14842,14846,14847,14852,14854,14876,14923,14956,14960,14962, - 14990,14998,15002,15005,15016,15017,15019,15023,15045,15078, - 15127,15147,15151,15163,15172,15179,15185,15187,15206,15215, - 15221,15234,15245,15250,15256,15256,15264,15265,15269,15284, - 15298,15307,15318,15318,15323,15324,15327,15345,15372,15382, - 15391,15396,15399,15433,15437,15438,15445,15468,15476,15477, - 15485,15488,15496,15506,15537,15549,15552,15552,15555,15556, - 15568,15581,15584,15597,15599,15603,15625,15630,15631,15642, - 15646,15648,15659,15662,15678,15679,15686,15691,15691,15721, - 15727,15744,15748,15755,15761,15770,15772,15774,15790,15792, - 15799,15801,15805,15807,15816,15817,15819,15841,15848,15859, - 15863,15868,15885,15889,15895,15896,15915,15920,15921,15928, - 15953,15983,16011,16032,16053,16053,16058,16066,16066,16082, - 16107,16121,16127,16131,16170,16171,16186,16189,16190,16200, - 16200,16219,16225,16227,16230,16234,16250,16252,16253,16262, - 16265,16291,16293,16303,16309,16314,16330,16344,16350,16351, - 16366,16377,16382,16383,16384,16412,16417,16423,16434,16441, - 16448,16464,16468,16470,16471,16473,16476,16494,16502,16507, - 16509,16511,16524,16526,16528,16531,16534,16537,16590,16596, - 16597,16603,16604,16624,16639,16667,16669,16671,16677,16679, - 16691,16694,16728,16734,16742,16769,16798,16817,16825,16841, - 16852,16856,16856,16869,16882,16884,16893,16923,16941,16941, - 16944,16945,16945,16950,16954,17008,17017,17033,17036,17054, - 17095,17095,17095,17096,17104,17118,17122,17129,17150,17163, - 17172,17175,17184,17185,17196,17206,17231,17234,17241,17241, - 17255,17256,17314,17325,17326,17379,17382,17389,17395,17402, - 17411,17415,17425,17429,17438,17441,17442,17461,17469,17471, - 17490,17500,17521,17525,17531,17532,17536,17537,17546,17552, - 17573,17580,17582,17592,17595,17613,17616,17617,17631,17641, - 17644,17646,17653,17658,17663,17664,17675,17683,17698,17703, - 17707,17717,17725,17740,17744,17753,17787,17792,17797,17849, - 17878,17909,17912,17923,17928,17947,17951,17963,17968,17968, - 17977,17998,18002,18040,18046,18053,18054,18061,18070,18079, - 18086,18097,18112,18119,18128,18135,18147,18147,18168,18183, - 18194,18195,18205,18219,18226,18232,18235,18251,18254,18275, - 18278,18280,18285,18287,18288,18292,18301,18310,18318,18341, - 18357,18361,18365,18368,18370,18371,18372,18387,18391,18396, - 18411,18412,18419,18421,18421,18441,18450,18451,18452,18460, - 18462,18463,18463,18498,18506,18544,18545,18548,18574,18594, - 18595,18597,18600,18614,18617,18618,18623,18630,18636,18644, - 18655,18662,18678,18690,18694,18708,18718,18729,18732,18733, - 18740,18743,18745,18754,18798,18803,18810,18834,18840,18842, - 18846,18849,18855,18870,18872,18875,18887,18891,18896,18909, - 18930,18941,18945,18955,18967,19006,19013,19013,19015,19031, - 19054,19054,19055,19057,19062,19062,19063,19071,19083,19091, - 19092,19099,19111,19130,19137,19140,19148,19157,19172,19224, - 19227,19255,19307,19307,19316,19330,19334,19343,19357,19360, - 19361,19377,19387,19387,19391,19398,19405,19432,19465,19478, - 19479,19480,19489,19492,19502,19505,19516,19520,19528,19534, - 19557,19566,19590,19611,19618,19624,19625,19641,19652,19660, - 19669,19677,19683,19695,19699,19717,19722,19764,19779,19780, - 19781,19789,19797,19805,19808,19823,19825,19827,19836,19837, - 19842,19844,19858,19858,19883,19889,19905,19960,19962,19964, - 19966,19983,19987,19988,19998,20002,20018,20029,20057,20096, - 20105,20108,20118,20133,20135,20136,20139,20139,20141,20144, - 20156,20173,20189,20194,20195,20200,20208,20224,20240,20265, - 20278,20291,20294,20324,20325,20333,20341,20377,20390,20397, - 20397,20409,20423,20427,20445,20457,20471,20495,20498,20504, - 20508,20515,20533,20537,20539,20540,20542,20542,20562,20581, - 20585,20599,20625,20628,20631,20658,20661,20682,20700,20703, - 20704,20716,20726,20754,20775,20777,20778,20783,20783,20785, - 20792,20795,20805,20807,20818,20846,20847,20854,20868,20884, - 20891,20892,20906,20906,20912,20916,20943,20943,20955,20958, - 20961,20968,20984,20995,21014,21014,21016,21033,21046,21048, - 21058,21070,21077,21083,21093,21110,21118,21118,21126,21136, - 21145,21152,21156,21182,21185,21204,21209,21211,21225,21227, - 21244,21247,21251,21264,21292,21295,21322,21328,21335,21338, - 21351,21352,21365,21377,21382,21382,21386,21395,21402,21410, - 21418,21427,21431,21484,21484,21489,21489,21495,21533,21537, - 21542,21545,21548,21556,21562,21562,21569,21574,21605,21611, - 21620,21624,21628,21632,21643,21658,21683,21686,21690,21692, - 21693,21696,21707,21712,21713,21720,21735,21739,21743,21746, - 21751,21756,21758,21770,21782,21794,21802,21823,21826,21828, - 21845,21859,21875,21883,21892,21894,21896,21903,21950,21953, - 21970,21993,21994,22014,22018,22024,22025,22037,22039,22049, - 22052,22053,22055,22057,22064,22088,22091,22091,22113,22115, - 22135,22148,22156,22163,22179,22244,22266,22276,22279,22283, - 22291,22298,22317,22325,22348,22354,22355,22370,22377,22377, - 22383,22395,22400,22418,22424,22426,22431,22435,22445,22451, - 22465,22482,22496,22528,22560,22566,22583,22645,22648,22653, - 22657,22657,22693,22705,22709,22712,22716,22722,22723,22726, - 22730,22745,22752,22778,22788,22790,22792,22801,22802,22802, - 22811,22835,22845,22894,22911,22923,22926,22926,22963,22995, - 23007,23012,23030,23033,23034,23041,23050,23059,23066,23079, - 23085,23089,23099,23105,23130,23130,23136,23141,23150,23159, - 23170,23218,23226,23228,23229,23230,23252,23255,23261,23279, - 23296,23302,23319,23359,23366,23367,23374,23387,23393,23404, - 23424,23426,23429,23434,23450,23462,23493,23514,23516,23520, - 23524,23557,23562,23591,23607,23617,23623,23633,23637,23640, - 23681,23682,23696,23702,23702,23708,23709,23721,23765,23769, - 23782,23824,23841,23846,23851,23858,23863,23881,23882,23885, - 23888,23896,23907,23920,23927,23928,23943,23944,23952,23956, - 23959,23977,24006,24015,24040,24076,24086,24089,24089,24101, - 24102,24132,24138,24144,24148,24152,24158,24165,24187,24203, - 24215,24218,24229,24230,24245,24261,24270,24282,24290,24315, - 24318,24357,24404,24405,24407,24414,24423,24425,24434,24447, - 24460,24464,24469,24469,24494,24496,24501,24516,24526,24548, - 24555,24563,24573,24585,24587,24587,24610,24612,24624,24626, - 24651,24670,24671,24676,24687,24695,24704,24708,24714,24722, - 24739,24742,24749,24758,24769,24773,24783,24790,24799,24801, - 24801,24811,24813,24821,24844,24846,24846,24851,24859,24859, - 24860,24865,24867,24882,24902,24914,24929,24957,24963,24969, - 24969,24972,24976,24982,24984,24985,24994,25003,25013,25030, - 25033,25040,25041,25045,25066,25088,25090,25093,25133,25139, - 25149,25151,25164,25171,25180,25200,25213,25222,25225,25232, - 25255,25278,25306,25307,25344,25345,25361,25367,25368,25370, - 25379,25408,25422,25424,25432,25440,25445,25447,25457,25462, - 25488,25488,25498,25499,25500,25505,25511,25520,25529,25533, - 25541,25557,25564,25566,25592,25634,25657,25668,25683,25685, - 25686,25697,25699,25700,25711,25759,25774,25782,25789,25800, - 25807,25823,25825,25844,25854,25858,25893,25895,25905,25908, - 25912,25918,25925,25927,25945,25947,25952,25968,25993,25995, - 26001,26020,26026,26066,26085,26086,26095,26098,26116,26125, - 26125,26131,26132,26143,26147,26164,26169,26182,26183,26183, - 26208,26210,26214,26219,26231,26232,26234,26249,26255,26263, - 26267,26273,26275,26280,26280,26301,26303,26308,26317,26317, - 26341,26344,26345,26353,26368,26376,26395,26435,26444,26470, - 26477,26488,26490,26493,26499,26501,26506,26507,26530,26532, - 26546,26553,26557,26561,26567,26576,26578,26582,26621,26636, - 26648,26670,26672,26684,26709,26712,26715,26728,26735,26742, - 26754,26759,26778,26778,26810,26818,26823,26824,26830,26839, - 26842,26848,26865,26865,26870,26872,26880,26886,26903,26908, - 26908,26913,26913,26953,26958,26971,26971,26991,26992,26994, - 27002,27003,27015,27022,27038,27046,27074,27075,27077,27078, - 27096,27101,27102,27131,27132,27139,27141,27145,27154,27160, - 27166,27173,27176,27185,27185,27193,27200,27214,27225,27243, - 27251,27252,27252,27259,27260,27286,27287,27292,27294,27294, - 27313,27313,27330,27341,27341,27352,27359,27363,27374,27380, - 27393,27405,27408,27419,27437,27440,27450,27452,27456,27465, - 27467,27477,27482,27498,27516,27517,27520,27526,27567,27585, - 27615,27617,27617,27626,27628,27638,27639,27646,27651,27673, - 27679,27697,27698,27729,27736,27739,27740,27749,27751,27751, - 27752,27766,27773,27781,27800,27805,27805,27815,27833,27849, - 27854,27856,27857,27857,27860,27863,27890,27891,27902,27907, - 27912,27919,27939,27941,27963,27965,27969,27971,27973,27987, - 27990,27996,27998,28002,28013,28039,28039,28041,28043,28047, - 28049,28060,28075,28086,28089,28111,28131,28140,28140,28146, - 28150,28151,28162,28182,28192,28193,28204,28204,28206,28206, - 28209,28226,28232,28238,28249,28255,28265,28272,28284,28303, - 28314,28316,28337,28351,28385,28412,28431,28432,28435,28438, - 28450,28452,28460,28504,28512,28518,28536,28549,28550,28558, - 28565,28574,28576,28579,28582,28592,28594,28595,28602,28605, - 28627,28640,28646,28684,28686,28691,28701,28706,28725,28729, - 28735,28739,28742,28743,28745,28747,28749,28796,28807,28816, - 28861,28862,28880,28901,28909,28918,28938,28940,28946,28962, - 28966,28996,28998,29027,29030,29032,29045,29048,29053,29055, - 29068,29077,29080,29084,29102,29117,29118,29122,29125,29154, - 29157,29165,29175,29176,29197,29210,29218,29226,29228,29245, - 29247,29253,29262,29266,29271,29274,29295,29305,29310,29335, - 29341,29346,29348,29383,29394,29397,29429,29438,29446,29458, - 29468,29476,29498,29505,29513,29515,29523,29524,29531,29531, - 29538,29539,29543,29554,29554,29565,29566,29620,29623,29627, - 29636,29649,29656,29663,29669,29688,29702,29714,29722,29727, - 29731,29741,29759,29760,29772,29777,29802,29812,29820,29830, - 29830,29852,29854,29885,29894,29901,29905,29906,29909,29932, - 29953,29960,29967,29987,29993,29999,30018,30021,30034,30043, - 30047,30069,30095,30099,30117,30126,30152,30165,30184,30186, - 30190,30190,30204,30207,30215,30219,30222,30223,30235,30256, - 30263,30284,30285,30289,30290,30298,30337,30341,30343,30344, - 30357,30362,30381,30406,30436,30447,30462,30477,30505,30506, - 30512,30517,30521,30540,30549,30550,30566,30569,30585,30587, - 30601,30623,30624,30626,30656,30661,30661,30711,30714,30735, - 30744,30745,30755,30764,30773,30775,30791,30803,30814,30828, - 30832,30842,30842,30845,30847,30848,30854,30874,30878,30888, - 30905,30908,30924,30928,30949,30958,30958,30961,30991,31025, - 31031,31032,31037,31039,31049,31050,31062,31089,31098,31111, - 31124,31135,31139,31141,31145,31157,31212,31219,31225,31244, - 31254,31261,31271,31276,31282,31285,31293,31299,31301,31305, - 31324,31330,31359,31360,31360,31371,31371,31397,31400,31420, - 31431,31431,31456,31469,31472,31476,31501,31505,31506,31510, - 31517,31534,31537,31539,31557,31558,31569,31597,31611,31614, - 31622,31642,31654,31664,31680,31681,31697,31707,31708,31717, - 31719,31724,31746,31748,31760,31765,31768,31769,31772,31777, - 31789,31807,31831,31832,31837,31843,31853,31868,31869,31879, - 31880,31890,31891,31894,31896,31908,31916,31926,31929,31934, - 31935,31935,31961,31980,31986,32007,32030,32046,32047,32053, - 32055,32058,32081,32089,32090,32091,32108,32109,32124,32127, - 32142,32145,32150,32155,32156,32163,32182,32193,32198,32208, - 32214,32220,32220,32221,32224,32229,32268,32299,32319,32319, - 32324,32333,32336,32339,32348,32364,32366,32368,32388,32409, - 32412,32417,32420,32424,32431,32432,32445,32451,32458,32463, - 32477,32484,32487,32487,32488,32504,32531,32537,32542,32544, - 32553,32557,32561,32581,32586,32593,32602,32604,32609,32616, - 32619,32625,32630,32642,32651,32652,32653,32661,32668,32682, - 32688,32732,32739,32742,32758,32776,32785,32789,32809,32824, - 32826,32829,32829,32844,32884,32890,32892,32921,32922,32944, - 32948,32973,32983,32983,32988,33001,33008,33012,33015,33019, - 33041,33059,33062,33066,33132,33155,33155,33170,33174,33178, - 33183,33206,33211,33218,33222,33223,33225,33231,33240,33251, - 33255,33263,33275,33277,33295,33295,33301,33315,33317,33351, - 33372,33399,33400,33402,33427,33431,33434,33439,33447,33465, - 33470,33485,33493,33495,33500,33510,33542,33550,33555,33566, - 33584,33586,33609,33626,33628,33636,33637,33654,33657,33661, - 33663,33665,33674,33678,33686,33698,33699,33706,33722,33740, - 33740,33742,33778,33792,33794,33810,33811,33818,33818,33825, - 33826,33851,33880,33914,33922,33926,33928,33931,33959,33971, - 33972,33992,34026,34032,34051,34075,34099,34110,34121,34134, - 34158,34176,34183,34184,34190,34194,34195,34213,34217,34220, - 34230,34232,34248,34259,34269,34269,34293,34295,34307,34315, - 34333,34334,34336,34349,34359,34364,34366,34366,34388,34388, - 34398,34398,34401,34411,34447,34458,34481,34486,34487,34491, - 34500,34505,34510,34514,34575,34584,34587,34593,34601,34606, - 34619,34622,34641,34658,34668,34669,34688,34709,34709,34731, - 34731,34739,34752,34757,34758,34776,34776,34800,34801,34803, - 34826,34839,34839,34842,34850,34851,34863,34872,34873,34875, - 34880,34881,34899,34905,34911,34915,34924,34927,34934,34942, - 34943,34944,34955,34957,34962,34965,34969,34973,34975,34984, - 34986,34987,35006,35006,35009,35014,35017,35051,35051,35053, - 35061,35080,35088,35092,35096,35110,35116,35121,35145,35149, - 35153,35169,35172,35203,35233,35242,35244,35251,35262,35267, - 35268,35279,35286,35304,35310,35311,35312,35323,35332,35344, - 35351,35359,35375,35381,35383,35388,35393,35448,35456,35457, - 35478,35507,35507,35508,35537,35567,35602,35602,35603,35605, - 35608,35627,35633,35654,35657,35668,35690,35712,35719,35723, - 35725,35726,35727,35747,35803,35805,35834,35845,35855,35857, - 35880,35883,35898,35905,35912,35915,35916,35920,35945,35956, - 35962,35967,35990,35992,35994,36007,36026,36029,36032,36042, - 36059,36064,36074,36077,36085,36095,36099,36104,36106,36118, - 36120,36124,36133,36136,36142,36145,36162,36163,36167,36178, - 36180,36226,36238,36238,36241,36249,36259,36268,36276,36277, - 36290,36293,36296,36307,36316,36346,36367,36368,36388,36458, - 36477,36481,36481,36488,36501,36504,36507,36512,36512,36517, - 36518,36529,36530,36532,36532,36537,36541,36543,36548,36560, - 36577,36577,36591,36606,36621,36625,36660,36673,36679,36684, - 36685,36695,36698,36708,36709,36720,36736,36737,36743,36771, - 36791,36795,36804,36823,36823,36841,36857,36867,36871,36873, - 36876,36888,36905,36919,36936,36953,36960,36966,36970,36976, - 36981,36987,36996,37003,37011,37014,37052,37078,37079,37085, - 37086,37095,37107,37107,37115,37174,37177,37179,37180,37201, - 37213,37237,37258,37262,37268,37270,37270,37288,37298,37308, - 37309,37312,37318,37322,37354,37369,37371,37376,37379,37385, - 37393,37401,37424,37429,37432,37437,37438,37439,37439,37448, - 37460,37461,37473,37481,37482,37484,37485,37493,37509,37518, - 37523,37524,37536,37540,37545,37550,37550,37555,37572,37606, - 37616,37624,37649,37651,37661,37663,37664,37680,37697,37702, - 37717,37725,37732,37744,37757,37761,37780,37788,37811,37813, - 37829,37834,37836,37864,37907,37923,37935,37942,37951,37957, - 37959,37965,37992,38000,38028,38030,38030,38063,38065,38103, - 38104,38113,38126,38141,38143,38147,38156,38161,38173,38174, - 38177,38186,38193,38195,38196,38197,38260,38268,38275,38282, - 38285,38306,38315,38319,38331,38334,38340,38344,38347,38357, - 38363,38380,38393,38397,38410,38462,38470,38470,38475,38475, - 38483,38489,38491,38492,38504,38508,38511,38512,38518,38519, - 38535,38538,38579,38582,38629,38637,38648,38675,38676,38682, - 38793,38797,38805,38806,38812,38812,38820,38820,38828,38842, - 38867,38869,38883,38891,38895,38897,38903,38918,38935,38948, - 38949,38949,38953,38976,38991,38992,38998,38999,39009,39024, - 39046,39058,39064,39105,39105,39106,39109,39128,39131,39151, - 39179,39183,39218,39234,39239,39270,39286,39290,39296,39313, - 39322,39324,39331,39334,39338,39352,39359,39368,39382,39394, - 39413,39432,39444,39448,39450,39462,39467,39487,39494,39516, - 39517,39533,39544,39585,39588,39593,39598,39607,39609,39611, - 39627,39661,39661,39679,39691,39698,39722,39735,39737,39737, - 39747,39751,39765,39773,39775,39779,39799,39833,39843,39849, - 39861,39869,39885,39900,39901,39918,39924,39926,39987,39993, - 40023,40028,40034,40041,40044,40053,40056,40066,40067,40082, - 40082,40111,40121,40125,40157,40158,40165,40171,40184,40191, - 40193,40198,40202,40202,40203,40211,40223,40233,40237,40258, - 40271,40274,40276,40298,40326,40328,40335,40339,40341,40344, - 40360,40372,40380,40384,40403,40405,40408,40430,40431,40431, - 40434,40450,40458,40475,40483,40512,40516,40518,40522,40535, - 40536,40539,40539,40540,40546,40548,40551,40552,40561,40567, - 40569,40570,40578,40578,40602,40608,40614,40623,40631,40636, - 40639,40647,40649,40660,40666,40666,40669,40672,40683,40689, - 40689,40691,40698,40700,40710,40711,40732,40735,40753,40755, - 40769,40774,40788,40792,40803,40830,40835,40847,40876,40882, - 40888,40896,40896,40898,40907,40910,40912,40929,40935,40951, - 40954,40968,40971,40971,40978,40984,40991,40992,41028,41033, - 41035,41038,41050,41068,41075,41078,41095,41104,41146,41149, - 41151,41154,41163,41167,41167,41170,41180,41190,41193,41211, - 41242,41242,41244,41244,41244,41250,41252,41271,41272,41289, - 41293,41296,41298,41307,41325,41347,41352,41368,41370,41377, - 41378,41387,41387,41403,41421,41423,41432,41471,41476,41482, - 41488,41496,41509,41513,41520,41525,41534,41542,41552,41561, - 41569,41573,41575,41587,41597,41602,41609,41630,41644,41645, - 41656,41688,41692,41714,41718,41721,41733,41735,41737,41737, - 41746,41764,41779,41805,41820,41830,41831,41841,41846,41850, - 41858,41875,41888,41890,41893,41903,41913,41915,41970,41973, - 41980,41992,42018,42055,42065,42068,42073,42092,42144,42157, - 42159,42162,42174,42185,42240,42247,42259,42259,42270,42270, - 42273,42273,42294,42301,42311,42322,42332,42336,42357,42357, - 42365,42381,42388,42401,42404,42422,42426,42431,42454,42472, - 42478,42482,42490,42492,42511,42529,42530,42531,42531,42532, - 42534,42546,42554,42573,42580,42598,42613,42618,42619,42675, - 42676,42679,42680,42681,42694,42695,42700,42715,42716,42717, - 42723,42728,42738,42740,42747,42774,42787,42793,42801,42810, - 42817,42829,42832,42843,42844,42847,42868,42873,42877,42884, - 42886,42904,42907,42921,42924,42927,42927,42934,42957,42968, - 42972,42972,42975,42992,43006,43011,43021,43039,43043,43060, - 43061,43075,43075,43076,43081,43120,43135,43142,43146,43179, - 43191,43192,43198,43203,43214,43217,43217,43239,43239,43247, - 43255,43276,43281,43284,43284,43287,43292,43310,43328,43328, - 43336,43339,43341,43341,43349,43370,43373,43374,43380,43388, - 43400,43415,43416,43424,43435,43441,43443,43446,43451,43454, - 43455,43459,43463,43465,43473,43491,43498,43506,43520,43525, - 43532,43555,43560,43562,43581,43608,43612,43620,43623,43626, - 43629,43664,43665,43681,43694,43778,43791,43803,43804,43843, - 43850,43855,43878,43908,43938,43948,43953,43965,43983,43983, - 43985,43990,44017,44022,44043,44052,44058,44060,44067,44073, - 44110,44111,44112,44113,44117,44124,44135,44143,44143,44144, - 44145,44158,44180,44197,44221,44231,44234,44236,44244,44278, - 44300,44308,44340,44349,44370,44379,44385,44412,44413,44423, - 44426,44429,44441,44441,44448,44451,44456,44480,44480,44482, - 44497,44498,44502,44517,44527,44531,44537,44550,44552,44561, - 44564,44570,44576,44588,44607,44609,44610,44637,44649,44689, - 44701,44716,44736,44753,44785,44789,44816,44822,44829,44854, - 44866,44867,44875,44881,44888,44899,44907,44917,44922,44924, - 44948,44956,44969,44970,44974,44982,45000,45008,45015,45018, - 45039,45039,45075,45094,45096,45107,45108,45116,45133,45135, - 45137,45151,45157,45164,45189,45204,45208,45220,45220,45238, - 45243,45253,45257,45257,45279,45299,45309,45324,45326,45326, - 45326,45337,45337,45358,45363,45374,45386,45391,45405,45407, - 45408,45408,45413,45413,45423,45425,45427,45437,45443,45445, - 45448,45511,45513,45521,45530,45534,45579,45583,45586,45597, - 45602,45629,45642,45646,45646,45653,45653,45660,45661,45676, - 45678,45685,45689,45702,45718,45738,45756,45757,45760,45773, - 45778,45784,45799,45807,45816,45838,45845,45853,45857,45859, - 45863,45872,45932,45942,45942,45956,45958,45964,45966,45968, - 45975,45975,45978,45979,45992,45993,46013,46017,46030,46040, - 46052,46053,46055,46090,46101,46127,46137,46164,46173,46181, - 46201,46201,46204,46212,46311,46332,46341,46364,46367,46372, - 46387,46400,46413,46418,46427,46435,46452,46477,46478,46484, - 46506,46521,46523,46525,46526,46526,46530,46535,46538,46544, - 46552,46566,46590,46610,46612,46633,46636,46640,46640,46641, - 46668,46672,46685,46685,46709,46722,46733,46742,46766,46780, - 46782,46783,46798,46808,46815,46823,46825,46826,46850,46856, - 46857,46868,46871,46889,46908,46944,46964,46970,46974,46994, - 47013,47027,47042,47048,47056,47062,47084,47121,47136,47142, - 47148,47156,47159,47179,47188,47204,47212,47215,47224,47237, - 47262,47267,47272,47289,47292,47307,47314,47324,47329,47330, - 47334,47346,47355,47363,47367,47370,47379,47386,47392,47397, - 47398,47408,47408,47418,47429,47435,47439,47443,47452,47466, - 47466,47477,47499,47512,47518,47529,47533,47538,47545,47551, - 47555,47578,47578,47581,47594,47607,47626,47627,47660,47660, - 47667,47678,47681,47691,47694,47712,47717,47728,47731,47742, - 47742,47760,47764,47779,47799,47801,47804,47808,47830,47848, - 47865,47871,47872,47874,47879,47880,47883,47894,47896,47915, - 47934,47941,47949,47950,47956,47971,47972,47972,47984,47991, - 48003,48012,48030,48045,48046,48060,48068,48074,48078,48078, - 48081,48083,48087,48089,48092,48092,48099,48113,48140,48144, - 48149,48149,48153,48174,48194,48206,48207,48210,48240,48243, - 48265,48278,48282,48283,48287,48309,48311,48315,48318,48328, - 48337,48341,48359,48368,48370,48387,48404,48411,48415,48436, - 48444,48451,48456,48458,48460,48475,48477,48484,48493,48507, - 48546,48552,48572,48581,48592,48597,48600,48610,48613,48616, - 48619,48619,48620,48637,48652,48676,48683,48692,48698,48704, - 48750,48755,48762,48762,48763,48765,48765,48766,48782,48790, - 48791,48802,48812,48812,48812,48821,48826,48855,48875,48876, - 48890,48892,48900,48901,48909,48911,48924,48931,48943,48953, - 48965,48986,48997,49009,49015,49017,49027,49027,49031,49048, - 49092,49100,49103,49121,49126,49128,49147,49153,49178,49205, - 49211,49216,49219,49229,49233,49235,49251,49253,49258,49305, - 49317,49337,49354,49361,49364,49396,49400,49406,49414,49438, - 49441,49448,49501,49505,49511,49518,49522,49539,49546,49569, - 49577,49593,49601,49604,49605,49613,49621,49657,49664,49669, - 49679,49692,49705,49716,49716,49744,49746,49753,49763,49770, - 49772,49772,49787,49791,49795,49797,49804,49816,49831,49836, - 49837,49837,49844,49869,49879,49889,49895,49901,49936,49938, - 49956,49991,49994,50018,50023,50132,50134,50135,50151,50158, - 50158,50158,50169,50177,50178,50186,50192,50198,50214,50215, - 50220,50241,50250,50263,50273,50275,50285,50294,50325,50339, - 50352,50368,50381,50383,50390,50405,50409,50418,50419,50420, - 50430,50435,50442,50452,50490,50495,50497,50500,50555,50559, - 50570,50578,50578,50581,50604,50611,50613,50620,50644,50656, - 50663,50713,50720,50723,50730,50737,50742,50758,50772,50785, - 50793,50816,50827,50831,50873,50947,50952,50953,50959,50959, - 50965,50970,50970,50975,50988,50999,51001,51013,51019,51029, - 51030,51034,51038,51049,51053,51061,51075,51077,51094,51101, - 51102,51110,51111,51117,51125,51138,51141,51142,51148,51150, - 51153,51167,51173,51186,51238,51238,51257,51263,51277,51281, - 51284,51288,51288,51296,51301,51302,51315,51334,51336,51346, - 51356,51368,51378,51379,51400,51406,51423,51439,51444,51444, - 51449,51464,51465,51466,51500,51522,51534,51549,51549,51569, - 51577,51615,51620,51653,51666,51681,51684,51685,51689,51693, - 51694,51703,51718,51750,51751,51752,51763,51775,51779,51794, - 51846,51852,51854,51868,51898,51901,51910,51921,51929,51963, - 51971,51981,52002,52018,52022,52027,52030,52031,52036,52052, - 52057,52058,52090,52097,52098,52104,52106,52136,52137,52144, - 52145,52147,52153,52157,52161,52162,52164,52167,52171,52188, - 52228,52236,52245,52260,52272,52272,52273,52276,52289,52291, - 52293,52293,52301,52317,52320,52323,52327,52334,52335,52336, - 52351,52360,52370,52404,52416,52433,52435,52456,52459,52469, - 52470,52490,52505,52523,52531,52546,52547,52557,52566,52570, - 52572,52584,52601,52610,52614,52617,52618,52660,52665,52670, - 52674,52683,52697,52713,52714,52724,52728,52728,52729,52741, - 52751,52754,52792,52806,52817,52823,52825,52841,52853,52858, - 52863,52867,52885,52894,52897,52907,52914,52923,52930,52931, - 52934,52939,52961,52967,52975,52977,52978,52984,52985,52989, - 53018,53033,53036,53065,53086,53096,53114,53124,53146,53168, - 53183,53184,53194,53206,53227,53227,53229,53256,53266,53274, - 53283,53289,53293,53295,53301,53304,53306,53353,53355,53360, - 53375,53383,53397,53418,53422,53427,53461,53465,53471,53472, - 53489,53502,53503,53503,53505,53508,53511,53517,53531,53542, - 53561,53564,53573,53591,53602,53604,53615,53622,53647,53648, - 53663,53690,53708,53715,53725,53740,53764,53769,53774,53779, - 53794,53799,53812,53867,53878,53921,53929,53934,53936,53945, - 53949,53954,53967,53973,53978,53982,53996,54001,54014,54027, - 54029,54037,54049,54052,54059,54067,54086,54088,54088,54093, - 54110,54111,54128,54129,54129,54137,54143,54148,54158,54161, - 54166,54196,54199,54211,54211,54217,54256,54257,54272,54279, - 54285,54290,54293,54298,54304,54307,54318,54323,54324,54329, - 54332,54345,54350,54357,54358,54391,54399,54404,54404,54409, - 54426,54444,54454,54463,54464,54476,54481,54494,54502,54538, - 54551,54562,54577,54583,54600,54616,54616,54619,54629,54630, - 54670,54672,54672,54698,54724,54739,54748,54751,54759,54790, - 54791,54792,54794,54801,54810,54812,54831,54842,54858,54860, - 54890,54903,54911,54938,54939,54944,54948,54954,54958,54963, - 54967,54990,54993,54996,55003,55007,55018,55027,55035,55036, - 55051,55051,55065,55079,55088,55090,55091,55098,55101,55160, - 55187,55215,55215,55229,55240,55261,55266,55280,55289,55296, - 55307,55309,55344,55344,55396,55409,55432,55436,55440,55453, - 55462,55466,55472,55472,55481,55497,55500,55512,55520,55564, - 55564,55569,55578,55581,55589,55604,55622,55626,55628,55638, - 55645,55674,55679,55688,55689,55704,55705,55706,55711,55738, - 55772,55772,55797,55800,55815,55843,55849,55857,55864,55867, - 55882,55895,55909,55909,55929,55932,55945,55962,55963,55971, - 55972,56021,56028,56034,56072,56072,56078,56078,56081,56084, - 56086,56090,56095,56102,56103,56108,56108,56117,56138,56151, - 56154,56168,56177,56180,56191,56193,56198,56202,56230,56235, - 56282,56332,56334,56357,56366,56370,56376,56385,56392,56397, - 56408,56427,56431,56437,56453,56456,56459,56461,56465,56468, - 56478,56479,56484,56491,56513,56525,56543,56554,56567,56573, - 56578,56584,56585,56590,56604,56615,56616,56617,56664,56665, - 56690,56695,56714,56755,56759,56768,56769,56776,56776,56796, - 56804,56806,56825,56833,56855,56857,56861,56891,56897,56922, - 56929,56940,56954,56974,56981,56982,57015,57021,57049,57059, - 57067,57085,57102,57102,57114,57117,57120,57126,57132,57132, - 57138,57138,57141,57141,57154,57165,57168,57180,57193,57204, - 57207,57213,57230,57241,57251,57253,57263,57276,57295,57309, - 57314,57332,57340,57340,57347,57352,57355,57367,57377,57410, - 57419,57433,57446,57447,57452,57457,57469,57486,57486,57488, - 57507,57509,57536,57542,57545,57547,57555,57557,57561,57563, - 57577,57590,57605,57613,57619,57631,57641,57652,57667,57672, - 57672,57682,57687,57694,57709,57736,57742,57750,57762,57772, - 57783,57783,57796,57807,57833,57854,57856,57864,57872,57911, - 57924,57938,57943,57949,57970,57978,57982,57995,57997,58006, - 58011,58016,58031,58031,58042,58057,58066,58076,58104,58128, - 58129,58133,58135,58136,58141,58142,58143,58145,58146,58147, - 58200,58205,58209,58210,58218,58220,58237,58251,58272,58273, - 58276,58279,58279,58287,58289,58291,58298,58312,58319,58323, - 58338,58342,58344,58353,58362,58370,58382,58396,58440,58453, - 58461,58468,58482,58505,58515,58524,58530,58547,58567,58581, - 58600,58610,58629,58632,58633,58650,58656,58672,58679,58685, - 58711,58711,58730,58734,58739,58751,58755,58774,58783,58797, - 58806,58864,58876,58880,58893,58920,58929,58947,58948,58949, - 58962,58975,59004,59011,59037,59047,59057,59061,59064,59069, - 59082,59088,59125,59128,59132,59142,59160,59161,59162,59169, - 59170,59179,59186,59207,59216,59219,59222,59228,59237,59277, - 59288,59294,59302,59317,59335,59352,59355,59374,59389,59402, - 59417,59423,59433,59447,59456,59461,59485,59514,59535,59584, - 59593,59604,59616,59618,59649,59678,59679,59687,59689,59694, - 59695,59709,59718,59721,59728,59729,59763,59780,59788,59790, - 59801,59806,59811,59822,59830,59835,59861,59866,59879,59885, - 59887,59891,59906,59915,59933,59936,59950,59952,59976,59986, - 59990,59997,60005,60008,60018,60029,60054,60061,60071,60075, - 60077,60102,60117,60139,60139,60152,60167,60182,60185,60192, - 60202,60234,60242,60247,60257,60258,60265,60290,60290,60316, - 60322,60332,60349,60350,60350,60355,60360,60361,60371,60393, - 60395,60419,60420,60434,60439,60459,60486,60496,60497,60501, - 60507,60515,60539,60555,60570,60624,60624,60629,60631,60632, - 60637,60638,60655,60658,60665,60683,60691,60701,60702,60703, - 60703,60705,60712,60717,60722,60725,60734,60744,60752,60752, - 60756,60769,60780,60786,60793,60796,60797,60803,60805,60831, - 60831,60833,60834,60843,60851,60852,60857,60869,60883,60894, - 60895,60896,60914,60924,60926,60955,60961,60963,60968,60978, - 60984,60990,60993,60999,61007,61008,61015,61019,61021,61040, - 61043,61067,61087,61089,61126,61174,61175,61179,61190,61195, - 61198,61200,61209,61218,61219,61222,61234,61236,61236,61241, - 61251,61255,61261,61278,61291,61297,61302,61302,61313,61315, - 61322,61390,61405,61412,61418,61436,61438,61438,61450,61454, - 61471,61479,61483,61503,61508,61510,61512,61514,61520,61532, - 61561,61565,61568,61588,61589,61589,61600,61610,61641,61662, - 61663,61663,61670,61701,61708,61718,61725,61756,61779,61802, - 61811,61815,61816,61824,61841,61841,61850,61855,61866,61891, - 61894,61901,61903,61903,61904,61908,61918,61936,61944,61959, - 61993,61996,62006,62007,62023,62044,62051,62078,62083,62088, - 62121,62123,62126,62149,62161,62165,62165,62166,62175,62186, - 62187,62187,62194,62245,62250,62252,62256,62262,62290,62296, - 62307,62336,62343,62353,62367,62377,62378,62397,62400,62416, - 62417,62420,62429,62437,62473,62482,62522,62524,62528,62528, - 62530,62541,62545,62557,62563,62569,62596,62616,62617,62617, - 62622,62626,62626,62660,62663,62699,62705,62711,62761,62762, - 62766,62801,62803,62813,62838,62839,62847,62871,62879,62884, - 62889,62899,62935,62935,62935,62936,62940,62942,62942,62943, - 62950,62955,62956,62956,62961,62973,62978,63017,63028,63032, - 63050,63055,63056,63077,63080,63092,63094,63096,63097,63110, - 63126,63161,63168,63184,63205,63228,63232,63233,63238,63239, - 63254,63262,63289,63292,63335,63343,63347,63355,63371,63391, - 63393,63398,63420,63422,63429,63434,63450,63475,63477,63504, - 63511,63518,63519,63523,63531,63551,63555,63556,63561,63567, - 63571,63574,63579,63580,63590,63591,63605,63618,63621,63621, - 63638,63658,63665,63669,63683,63689,63703,63705,63709,63710, - 63730,63735,63739,63740,63743,63751,63754,63769,63787,63792, - 63794,63796,63842,63853,63872,63895,63908,63920,63921,63936, - 63944,63946,63951,64046,64046,64047,64056,64056,64058,64062, - 64071,64097,64115,64173,64176,64177,64179,64188,64192,64215, - 64222,64225,64245,64255,64264,64269,64277,64281,64297,64332, - 64333,64347,64361,64364,64378,64385,64397,64397,64405,64409, - 64424,64434,64449,64453,64462,64462,64468,64475,64520,64521, - 64533,64534,64543,64545,64578,64606,64610,64629,64632,64642, - 64663,64669,64694,64696,64700,64707,64722,64754,64757,64793, - 64811,64830,64857,64859,64860,64863,64880,64895,64905,64907, - 64910,64913,64924,64929,64936,64937,64956,64957,64972,64979, - 64997,65000,65004,65006,65010,65017,65036,65041,65054,65060, - 65090,65093,65097,65099,65101,65130,65131,65143,65145,65149, - 65153,65182,65189,65200,65218,65272,65278,65283,65300,65300, - 65317,65327,65327,65331,65335,65340,65342,65353,65385,65386, - 65403,65409,65409,65413,65421,65422,65427,65430,65491,65491, - 65492,65492,65499,65500,65502,65511,65520,65524,65544,65563, - 65564,65564,65569,65579,65586,65610,65618,65624,65655,65675, - 65689,65691,65691,65693,65702,65711,65728,65730,65738,65741, - 65749,65751,65757,65767,65768,65777,65783,65786,65788,65789, - 65794,65795,65800,65842,65847,65852,65864,65875,65878,65882, - 65890,65914,65923,65928,65930,65931,65934,65946,65966,65980, - 65991,65993,65998,66029,66033,66043,66044,66048,66051,66054, - 66073,66087,66099,66146,66153,66153,66176,66180,66198,66211, - 66237,66245,66254,66257,66267,66281,66282,66287,66298,66299, - 66324,66327,66328,66331,66342,66345,66346,66352,66358,66360, - 66367,66380,66400,66428,66434,66435,66448,66461,66472,66473, - 66493,66495,66516,66521,66525,66548,66575,66591,66594,66600, - 66619,66626,66631,66643,66647,66651,66673,66680,66698,66717, - 66725,66734,66735,66736,66736,66737,66740,66752,66753,66756, - 66757,66762,66763,66775,66779,66803,66818,66820,66824,66846, - 66860,66872,66873,66882,66915,66937,66957,66967,66982,66987, - 66994,67007,67010,67021,67025,67038,67039,67043,67053,67070, - 67075,67087,67094,67098,67104,67138,67138,67139,67147,67152, - 67157,67220,67221,67231,67253,67266,67270,67272,67298,67299, - 67302,67309,67327,67335,67352,67359,67366,67381,67390,67414, - 67416,67428,67430,67438,67456,67470,67478,67508,67513,67520, - 67520,67543,67561,67568,67576,67591,67601,67605,67607,67607, - 67637,67669,67671,67674,67684,67693,67710,67724,67743,67743, - 67748,67762,67774,67805,67820,67822,67833,67855,67859,67860, - 67862,67871,67881,67886,67891,67899,67917,67925,67926,67932, - 67939,67970,67973,67982,67990,67999,68001,68004,68021,68027, - 68028,68031,68032,68041,68049,68056,68064,68088,68096,68109, - 68115,68154,68158,68185,68192,68202,68213,68214,68215,68228, - 68241,68280,68297,68304,68319,68320,68321,68333,68342,68343, - 68419,68424,68427,68454,68470,68479,68482,68483,68487,68496, - 68496,68496,68500,68504,68525,68528,68534,68538,68547,68554, - 68560,68579,68617,68633,68641,68648,68652,68658,68661,68670, - 68675,68699,68705,68748,68749,68750,68751,68752,68760,68785, - 68793,68810,68821,68832,68834,68834,68840,68875,68886,68892, - 68899,68957,68960,68975,69000,69004,69007,69014,69015,69019, - 69037,69045,69048,69053,69060,69075,69081,69124,69142,69156, - 69164,69172,69175,69180,69185,69192,69201,69211,69225,69228, - 69235,69242,69242,69260,69303,69311,69321,69352,69374,69388, - 69392,69415,69429,69451,69453,69460,69460,69473,69487,69497, - 69514,69537,69538,69555,69607,69611,69627,69639,69644,69644, - 69661,69661,69667,69669,69681,69690,69715,69720,69734,69743, - 69757,69757,69774,69783,69792,69808,69809,69834,69838,69843, - 69861,69872,69872,69875,69879,69893,69899,69906,69921,69922, - 69935,69946,69951,69952,69957,69966,69970,69990,70011,70018, - 70024,70037,70060,70068,70075,70076,70097,70115,70117,70151, - 70192,70210,70230,70238,70245,70248,70253,70265,70274,70274, - 70305,70315,70332,70353,70355,70357,70361,70372,70390,70395, - 70399,70400,70400,70407,70433,70447,70455,70461,70486,70493, - 70517,70521,70545,70611,70612,70620,70626,70632,70640,70662, - 70677,70680,70680,70686,70690,70718,70723,70733,70746,70751, - 70754,70757,70770,70771,70777,70793,70797,70800,70803,70809, - 70827,70829,70842,70844,70848,70864,70867,70870,70874,70880, - 70881,70911,70912,70918,70926,70941,70949,70952,70972,70974, - 70976,70989,70991,70992,71015,71020,71026,71038,71044,71045, - 71048,71052,71055,71069,71074,71098,71110,71119,71122,71140, - 71149,71161,71162,71170,71196,71207,71227,71232,71233,71251, - 71259,71262,71270,71294,71298,71305,71309,71312,71314,71316, - 71329,71344,71347,71351,71357,71358,71369,71385,71399,71399, - 71422,71426,71468,71492,71500,71528,71532,71539,71560,71573, - 71577,71587,71590,71594,71608,71620,71621,71623,71631,71671, - 71683,71685,71687,71694,71724,71728,71730,71751,71752,71758, - 71766,71779,71790,71797,71798,71802,71807,71812,71814,71816, - 71818,71823,71841,71858,71860,71862,71870,71882,71903,71903, - 71907,71915,71916,71932,71948,71963,71969,71977,71977,71998, - 72011,72015,72023,72032,72046,72069,72080,72105,72118,72120, - 72121,72127,72140,72162,72191,72196,72209,72213,72216,72221, - 72229,72231,72255,72262,72262,72277,72282,72284,72287,72305, - 72324,72343,72360,72365,72389,72391,72400,72409,72416,72432, - 72441,72446,72449,72456,72459,72465,72472,72475,72478,72489, - 72506,72525,72532,72534,72536,72557,72568,72578,72592,72615, - 72628,72637,72641,72649,72666,72688,72692,72694,72696,72696, - 72709,72725,72737,72748,72760,72769,72790,72806,72817,72819, - 72821,72825,72829,72834,72845,72846,72849,72865,72875,72894, - 72905,72916,72935,72956,72973,73011,73013,73016,73027,73041, - 73045,73065,73079,73084,73084,73086,73092,73145,73155,73188, - 73201,73217,73226,73240,73252,73265,73309,73315,73319,73323, - 73333,73343,73347,73349,73350,73353,73358,73364,73378,73379, - 73379,73384,73389,73391,73412,73427,73438,73445,73448,73450, - 73458,73488,73494,73500,73549,73573,73583,73584,73598,73600, - 73617,73632,73632,73642,73665,73665,73676,73688,73693,73700, - 73712,73728,73756,73770,73777,73803,73811,73828,73834,73836, - 73837,73838,73840,73849,73855,73880,73890,73913,73939,73940, - 73948,73960,73961,73967,73969,73969,73979,73995,74010,74012, - 74016,74017,74019,74036,74038,74071,74087,74097,74101,74117, - 74124,74135,74139,74143,74152,74158,74159,74165,74173,74185, - 74192,74205,74209,74222,74239,74260,74266,74275,74286,74296, - 74300,74303,74305,74308,74309,74313,74324,74335,74338,74348, - 74370,74374,74393,74403,74428,74432,74434,74474,74476,74501, - 74502,74508,74516,74516,74519,74520,74527,74536,74550,74574, - 74582,74587,74601,74620,74627,74635,74638,74651,74680,74685, - 74700,74716,74731,74739,74748,74762,74769,74784,74796,74802, - 74813,74816,74824,74841,74848,74854,74864,74881,74882,74896, - 74899,74907,74911,74935,74957,74958,74962,74972,74988,74996, - 74996,75022,75026,75031,75041,75049,75053,75068,75072,75073, - 75089,75091,75095,75107,75139,75142,75149,75178,75181,75189, - 75203,75247,75282,75290,75314,75330,75365,75381,75390,75413, - 75413,75415,75417,75448,75452,75454,75460,75467,75471,75475, - 75477,75488,75488,75494,75499,75501,75510,75518,75524,75552, - 75554,75557,75557,75578,75580,75595,75610,75628,75633,75638, - 75639,75640,75683,75697,75706,75708,75722,75728,75728,75743, - 75755,75758,75760,75761,75776,75777,75787,75802,75811,75821, - 75847,75859,75859,75866,75879,75884,75886,75887,75889,75900, - 75907,75916,75928,75942,75949,76041,76056,76065,76065,76069, - 76070,76074,76074,76081,76084,76093,76102,76106,76111,76113, - 76118,76136,76137,76140,76141,76144,76149,76158,76196,76198, - 76201,76254,76260,76261,76271,76303,76315,76319,76324,76335, - 76336,76340,76354,76356,76368,76380,76384,76397,76405,76405, - 76408,76416,76417,76430,76435,76437,76442,76450,76463,76470, - 76477,76479,76483,76493,76510,76515,76529,76546,76555,76571, - 76574,76588,76619,76620,76649,76653,76655,76661,76682,76719, - 76725,76726,76740,76746,76754,76781,76795,76820,76825,76832, - 76847,76852,76863,76882,76886,76888,76888,76894,76938,76954, - 76956,76963,76973,77009,77018,77026,77033,77035,77039,77047, - 77048,77052,77055,77062,77071,77077,77095,77107,77110,77118, - 77165,77166,77167,77168,77169,77175,77204,77224,77226,77228, - 77232,77241,77246,77250,77271,77271,77287,77299,77300,77325, - 77361,77382,77389,77395,77406,77420,77424,77447,77468,77472, - 77473,77485,77532,77555,77559,77566,77585,77585,77587,77602, - 77608,77615,77617,77620,77636,77647,77652,77678,77680,77705, - 77713,77713,77727,77750,77750,77760,77781,77797,77800,77802, - 77805,77808,77822,77823,77839,77852,77855,77864,77868,77868, - 77868,77887,77905,77921,77962,77965,77971,77972,77985,77995, - 78004,78016,78042,78042,78048,78050,78051,78052,78062,78066, - 78067,78073,78076,78086,78096,78096,78124,78174,78190,78192, - 78205,78216,78221,78226,78259,78268,78272,78280,78299,78302, - 78324,78348,78358,78362,78374,78399,78412,78416,78429,78446, - 78457,78466,78475,78509,78528,78538,78564,78567,78582,78595, - 78602,78606,78639,78643,78644,78664,78708,78725,78726,78740, - 78744,78775,78866,78875,78881,78887,78888,78893,78900,78909, - 78919,78955,78973,78975,78978,78978,79000,79027,79033,79033, - 79034,79045,79046,79059,79068,79075,79097,79101,79104,79118, - 79119,79126,79126,79134,79143,79146,79155,79160,79161,79168, - 79186,79205,79207,79217,79221,79223,79233,79255,79273,79274, - 79302,79310,79314,79319,79330,79343,79351,79352,79365,79375, - 79377,79397,79397,79411,79418,79420,79420,79430,79432,79432, - 79439,79441,79454,79471,79496,79497,79508,79513,79521,79523, - 79536,79539,79554,79566,79571,79575,79579,79607,79622,79623, - 79627,79632,79633,79648,79659,79661,79678,79704,79706,79707, - 79713,79714,79721,79724,79736,79751,79761,79776,79777,79778, - 79783,79788,79798,79799,79811,79812,79819,79835,79843,79883, - 79910,79918,79941,79951,79959,79969,79980,79986,80044,80049, - 80052,80053,80088,80094,80094,80096,80099,80114,80144,80145, - 80154,80166,80169,80169,80204,80204,80204,80209,80229,80242, - 80287,80345,80373,80391,80391,80419,80504,80516,80532,80547, - 80554,80583,80590,80609,80619,80621,80625,80628,80646,80654, - 80655,80659,80666,80694,80698,80715,80723,80731,80734,80748, - 80776,80780,80787,80793,80797,80817,80827,80828,80833,80848, - 80869,80874,80896,80898,80903,80910,80919,80932,80938,80938, - 80939,80951,80952,80961,80965,80970,80970,80971,80978,81005, - 81022,81030,81043,81052,81059,81066,81066,81076,81093,81098, - 81114,81128,81129,81148,81149,81154,81167,81178,81180,81202, - 81206,81208,81214,81215,81220,81228,81231,81235,81235,81237, - 81252,81254,81265,81267,81290,81295,81314,81319,81323,81325, - 81359,81359,81378,81380,81393,81396,81419,81451,81462,81524, - 81553,81576,81578,81580,81587,81588,81592,81611,81639,81647, - 81648,81650,81685,81691,81704,81718,81726,81733,81735,81740, - 81758,81772,81785,81788,81798,81828,81838,81840,81852,81855, - 81858,81865,81867,81905,81977,81983,81997,81999,82001,82008, - 82027,82029,82032,82041,82067,82070,82075,82101,82105,82106, - 82112,82113,82114,82117,82117,82117,82122,82143,82163,82165, - 82186,82195,82228,82229,82231,82231,82234,82245,82247,82254, - 82254,82268,82271,82298,82299,82300,82300,82302,82321,82323, - 82335,82346,82354,82359,82364,82386,82411,82418,82438,82499, - 82514,82531,82542,82555,82573,82574,82578,82584,82592,82596, - 82615,82615,82650,82660,82684,82689,82690,82698,82704,82717, - 82718,82747,82752,82764,82766,82766,82776,82786,82802,82808, - 82812,82817,82841,82846,82847,82850,82866,82884,82888,82901, - 82902,82902,82912,82912,82933,82934,82953,82965,82985,82988, - 82989,82998,83008,83012,83014,83018,83023,83025,83041,83044, - 83085,83090,83101,83108,83111,83116,83121,83133,83138,83170, - 83172,83186,83192,83193,83193,83204,83236,83241,83266,83280, - 83282,83289,83297,83299,83302,83303,83310,83320,83326,83327, - 83338,83355,83367,83376,83377,83380,83414,83421,83422,83431, - 83449,83450,83462,83469,83496,83500,83527,83541,83545,83573, - 83574,83580,83599,83664,83667,83671,83681,83691,83691,83694, - 83701,83718,83750,83750,83762,83764,83773,83774,83791,83802, - 83804,83809,83826,83826,83829,83847,83852,83859,83875,83881, - 83900,83904,83907,83910,83936,83937,83958,83961,83963,83989, - 83990,84007,84025,84037,84057,84059,84073,84075,84078,84093, - 84105,84116,84129,84133,84136,84142,84148,84148,84171,84185, - 84202,84215,84223,84249,84262,84267,84284,84285,84288,84309, - 84311,84352,84358,84385,84401,84417,84432,84433,84437,84449, - 84467,84469,84471,84473,84478,84487,84491,84502,84507,84524, - 84541,84544,84566,84586,84588,84594,84599,84610,84618,84620, - 84625,84649,84661,84676,84676,84681,84687,84697,84701,84708, - 84708,84708,84709,84713,84718,84723,84748,84761,84763,84784, - 84789,84804,84823,84828,84828,84857,84870,84882,84892,84897, - 84917,84926,84945,84954,84957,84969,84969,84975,84977,84986, - 84988,85013,85016,85019,85020,85030,85034,85052,85062,85066, - 85079,85080,85092,85111,85111,85119,85124,85133,85147,85151, - 85166,85187,85193,85208,85209,85212,85221,85232,85256,85258, - 85267,85268,85298,85298,85298,85311,85330,85333,85341,85347, - 85354,85359,85365,85370,85376,85385,85395,85402,85420,85425, - 85461,85466,85507,85508,85526,85534,85546,85546,85568,85579, - 85597,85599,85609,85615,85646,85648,85657,85663,85671,85689, - 85692,85692,85701,85731,85743,85746,85765,85768,85768,85769, - 85778,85781,85789,85792,85803,85809,85816,85825,85854,85863, - 85871,85874,85880,85884,85890,85895,85923,85924,85951,85987, - 86013,86015,86022,86026,86040,86045,86049,86059,86068,86071, - 86076,86091,86093,86097,86108,86109,86110,86116,86164,86189, - 86195,86200,86208,86221,86224,86230,86231,86239,86240,86240, - 86253,86255,86269,86275,86286,86287,86291,86292,86304,86318, - 86320,86323,86339,86351,86371,86382,86390,86399,86408,86417, - 86419,86435,86451,86463,86475,86496,86504,86509,86509,86532, - 86562,86604,86605,86605,86615,86623,86632,86639,86656,86668, - 86669,86673,86675,86684,86685,86685,86692,86698,86699,86700, - 86719,86720,86720,86720,86729,86730,86733,86737,86740,86745, - 86746,86757,86757,86764,86785,86802,86815,86823,86845,86888, - 86898,86945,86954,86974,86977,86980,86982,86996,87004,87013, - 87034,87037,87041,87048,87049,87057,87081,87082,87129,87134, - 87139,87144,87167,87173,87199,87206,87215,87215,87225,87240, - 87241,87258,87281,87292,87297,87298,87321,87328,87330,87334, - 87356,87360,87382,87386,87404,87408,87413,87413,87413,87431, - 87437,87441,87448,87453,87458,87468,87468,87474,87476,87480, - 87489,87490,87504,87506,87512,87514,87537,87539,87566,87570, - 87575,87577,87577,87580,87595,87599,87601,87612,87619,87635, - 87647,87650,87654,87661,87694,87697,87714,87726,87735,87737, - 87739,87754,87756,87771,87798,87802,87804,87809,87830,87835, - 87840,87846,87846,87851,87867,87873,87876,87889,87907,87916, - 87943,87948,87950,87951,87952,87954,87971,87973,87975,87983, - 87983,87997,87997,88000,88012,88020,88030,88034,88034,88055, - 88077,88078,88083,88088,88103,88114,88119,88134,88142,88149, - 88178,88186,88199,88199,88200,88228,88233,88237,88237,88251, - 88254,88265,88266,88281,88295,88303,88318,88322,88335,88352, - 88357,88386,88424,88427,88430,88441,88442,88446,88449,88449, - 88459,88465,88475,88505,88518,88524,88539,88539,88546,88556, - 88567,88568,88569,88576,88578,88588,88641,88652,88699,88700, - 88704,88708,88710,88718,88733,88752,88764,88784,88787,88802, - 88817,88830,88837,88840,88856,88876,88876,88885,88894,88896, - 88899,88915,88919,88939,88950,88973,88975,88981,88989,88998, - 89006,89021,89028,89050,89093,89099,89100,89128,89130,89133, - 89144,89150,89152,89153,89155,89156,89157,89159,89171,89179, - 89193,89207,89207,89226,89229,89236,89245,89264,89267,89275, - 89284,89290,89291,89327,89328,89328,89338,89340,89342,89350, - 89360,89373,89390,89404,89409,89419,89423,89423,89425,89430, - 89455,89463,89478,89499,89500,89501,89511,89521,89532,89549, - 89556,89561,89563,89568,89568,89592,89605,89611,89612,89618, - 89655,89667,89668,89671,89680,89681,89700,89719,89719,89732, - 89733,89757,89763,89780,89792,89795,89797,89799,89804,89807, - 89815,89823,89833,89836,89837,89840,89853,89863,89875,89875, - 89883,89893,89896,89903,89907,89913,89926,89933,89938,89947, - 89956,89957,89983,89984,89987,89991,90003,90035,90072,90094, - 90103,90112,90112,90113,90114,90118,90127,90129,90136,90151, - 90153,90159,90184,90196,90209,90215,90218,90223,90238,90248, - 90287,90288,90294,90295,90304,90306,90316,90317,90329,90336, - 90361,90362,90385,90386,90394,90408,90410,90415,90416,90425, - 90438,90445,90448,90448,90457,90474,90475,90488,90539,90542, - 90563,90565,90588,90611,90658,90661,90669,90685,90688,90696, - 90707,90715,90720,90732,90752,90766,90768,90772,90786,90796, - 90803,90809,90822,90833,90839,90845,90848,90851,90875,90876, - 90879,90880,90893,90909,90909,90922,90926,90937,90943,90956, - 90976,90980,90983,90983,90987,91006,91006,91032,91055,91078, - 91090,91103,91106,91113,91116,91128,91137,91172,91172,91191, - 91200,91210,91211,91215,91216,91217,91222,91224,91248,91254, - 91274,91275,91277,91280,91288,91298,91309,91321,91328,91335, - 91348,91374,91374,91377,91392,91405,91425,91435,91440,91450, - 91453,91455,91465,91472,91475,91480,91508,91509,91529,91535, - 91536,91537,91546,91546,91551,91581,91596,91603,91606,91606, - 91614,91637,91641,91659,91659,91660,91733,91754,91800,91811, - 91814,91831,91844,91852,91869,91873,91889,91902,91925,91938, - 91969,91985,91988,91990,92001,92004,92009,92014,92027,92046, - 92071,92078,92108,92110,92127,92131,92138,92158,92174,92188, - 92213,92216,92232,92245,92255,92275,92288,92295,92298,92313, - 92317,92341,92354,92356,92359,92369,92371,92399,92407,92412, - 92436,92461,92463,92469,92476,92483,92495,92500,92509,92532, - 92543,92545,92560,92569,92571,92572,92590,92593,92600,92601, - 92625,92643,92663,92668,92676,92677,92691,92697,92703,92704, - 92705,92712,92720,92731,92742,92744,92749,92765,92765,92773, - 92786,92807,92817,92836,92838,92850,92865,92875,92881,92925, - 92932,92933,92936,92946,92949,92950,92958,92963,92976,92985, - 92987,92988,92996,92996,93012,93019,93037,93044,93063,93065, - 93070,93076,93079,93104,93110,93114,93144,93145,93152,93165, - 93171,93187,93196,93208,93215,93217,93228,93232,93237,93247, - 93261,93269,93270,93272,93276,93280,93286,93289,93290,93304, - 93310,93311,93342,93368,93382,93384,93424,93447,93449,93457, - 93460,93470,93487,93496,93515,93520,93526,93564,93572,93585, - 93620,93652,93686,93690,93710,93713,93725,93729,93736,93758, - 93762,93777,93818,93845,93848,93848,93849,93856,93864,93866, - 93870,93874,93890,93914,93925,93941,93948,93973,93973,93989, - 93990,93993,94002,94011,94018,94024,94033,94054,94061,94068, - 94071,94090,94093,94096,94098,94119,94125,94136,94145,94151, - 94160,94173,94183,94203,94213,94236,94257,94267,94267,94276, - 94284,94288,94295,94296,94302,94305,94323,94337,94348,94358, - 94364,94367,94380,94417,94423,94423,94432,94444,94450,94456, - 94479,94495,94495,94506,94508,94508,94514,94518,94520,94527, - 94528,94545,94547,94550,94558,94563,94573,94586,94598,94612, - 94619,94620,94623,94643,94649,94654,94668,94671,94680,94695, - 94704,94711,94717,94724,94724,94727,94753,94759,94774,94789, - 94822,94824,94837,94837,94843,94857,94862,94862,94867,94874, - 94887,94908,94926,94928,94929,94948,94963,94970,94971,94976, - 94982,94982,94988,94992,94994,95011,95017,95039,95078,95079, - 95079,95089,95098,95104,95123,95127,95147,95180,95187,95192, - 95196,95217,95238,95241,95254,95260,95262,95276,95289,95319, - 95320,95323,95346,95387,95408,95408,95421,95423,95442,95449, - 95457,95458,95469,95469,95474,95476,95476,95515,95522,95530, - 95533,95552,95557,95602,95606,95624,95642,95650,95671,95677, - 95688,95690,95697,95702,95707,95710,95723,95723,95723,95730, - 95732,95744,95750,95764,95764,95773,95774,95776,95786,95805, - 95809,95819,95823,95825,95858,95860,95862,95870,95871,95871, - 95871,95882,95885,95894,95914,95915,95921,95922,95931,95937, - 95943,95961,95969,95976,95978,95992,95993,95996,96020,96041, - 96043,96048,96064,96065,96071,96076,96080,96080,96084,96089, - 96097,96098,96131,96152,96161,96171,96196,96200,96220,96236, - 96258,96260,96310,96311,96322,96329,96330,96333,96333,96360, - 96364,96380,96385,96398,96405,96410,96413,96414,96422,96461, - 96488,96490,96500,96511,96514,96535,96543,96553,96559,96573, - 96580,96590,96606,96627,96633,96641,96657,96665,96693,96697, - 96700,96706,96714,96723,96725,96726,96747,96763,96767,96768, - 96783,96784,96785,96791,96816,96834,96840,96845,96853,96854, - 96856,96857,96864,96864,96875,96879,96886,96886,96899,96919, - 96936,96939,96941,96963,96974,96993,97001,97002,97007,97007, - 97052,97072,97091,97097,97107,97109,97132,97149,97152,97166, - 97168,97174,97179,97186,97195,97208,97284,97285,97288,97303, - 97323,97338,97354,97365,97385,97393,97416,97417,97421,97430, - 97438,97447,97447,97466,97471,97481,97497,97498,97502,97506, - 97524,97540,97541,97551,97566,97568,97569,97571,97578,97578, - 97581,97586,97592,97593,97605,97609,97612,97619,97632,97652, - 97654,97662,97669,97690,97694,97704,97711,97760,97762,97770, - 97778,97782,97790,97791,97794,97796,97816,97819,97841,97879, - 97893,97926,97930,97947,97959,97978,97986,97997,98035,98043, - 98044,98066,98111,98116,98127,98128,98133,98138,98147,98156, - 98177,98190,98200,98204,98224,98230,98231,98243,98250,98253, - 98257,98261,98262,98263,98267,98269,98296,98297,98307,98318, - 98323,98335,98346,98350,98368,98371,98378,98379,98398,98399, - 98417,98419,98422,98436,98437,98442,98455,98455,98491,98492, - 98499,98508,98508,98509,98532,98537,98539,98540,98542,98563, - 98582,98593,98615,98633,98634,98644,98646,98648,98654,98678, - 98680,98684,98686,98701,98703,98723,98729,98739,98802,98803, - 98803,98803,98803,98832,98836,98840,98849,98849,98864,98867, - 98894,98906,98908,98915,98918,98934,98948,98963,98964,98980, - 98986,99003,99015,99015,99021,99026,99029,99068,99068,99069, - 99078,99081,99096,99118,99127,99141,99145,99147,99165,99170, - 99176,99198,99198,99199,99236,99242,99256,99263,99268,99270, - 99292,99313,99325,99332,99334,99345,99346,99381,99382,99384, - 99386,99391,99410,99411,99411,99420,99426,99427,99441,99451, - 99459,99462,99469,99485,99490,99494,99497,99498,99504,99525, - 99535,99538,99552,99552,99584,99599,99604,99670,99689,99702, - 99708,99735,99743,99755,99758,99763,99779,99790,99791,99796, - 99798,99801,99803,99806,99810,99841,99842,99845,99862,99871, - 99874,99878,99906,99907,99923,99927,99928,99968,99987,99997]; \ No newline at end of file diff --git a/lab-matt/src/__test__/lib/create-arrays.js b/lab-matt/src/__test__/lib/create-arrays.js new file mode 100644 index 0000000..a143600 --- /dev/null +++ b/lab-matt/src/__test__/lib/create-arrays.js @@ -0,0 +1,39 @@ +const createArray = module.exports = {}; + +createArray.empty = () => { + return []; +}; + +createArray.single = () => { + return [Math.floor(Math.random() * 100000)]; +}; + +createArray.small = () => { + let array = []; + + for (let i = 0; i < 20; i ++) { + array.push(Math.floor(Math.random() * 100000)); + } + + return array; +}; + +createArray.medium = () => { + let array = []; + + for (let i = 0; i < 500; i ++) { + array.push(Math.floor(Math.random() * 100000)); + } + + return array; +}; + +createArray.large = () => { + let array = []; + + for (let i = 0; i < 10000; i ++) { + array.push(Math.floor(Math.random() * 100000)); + } + + return array; +}; \ No newline at end of file diff --git a/lab-matt/src/__test__/quick-insertion.test.js b/lab-matt/src/__test__/quick-insertion.test.js new file mode 100644 index 0000000..baa6cc5 --- /dev/null +++ b/lab-matt/src/__test__/quick-insertion.test.js @@ -0,0 +1,71 @@ +'use strict'; +const createArray = require('./lib/create-arrays'); +const quickSort = require('../lib/quick-sort'); + +describe('quick-sort.js', () => { + test('empty array returns an empty array', () => { + let empty = createArray.empty(); + expect(empty.length).toEqual(0); + + quickSort(empty); + + expect(empty).toEqual([]); + }); + + test('single element array returns single element array', () => { + let single = createArray.single(); + expect(single.length).toEqual(1); + + quickSort(single); + + expect(single.length).toEqual(1); + }); + + test('SMALL array is sorted from minimum to maximum', () => { + let small = createArray.small(); + expect(small.length).toEqual(20); + + quickSort(small); + + expect(small.length).toEqual(20); + small.forEach((each, i, arr) => { + if (i === arr.length - 1) { + expect(each >= arr[i - 1]).toBeTruthy(); + } else { + expect(each <= arr[i + 1]).toBeTruthy(); + } + }); + }); + + test('MEDIUM array is sorted from minimum to maximum', () => { + let medium = createArray.medium(); + expect(medium.length).toEqual(500); + + quickSort(medium); + + expect(medium.length).toEqual(500); + medium.forEach((each, i, arr) => { + if (i === arr.length - 1) { + expect(each >= arr[i - 1]).toBeTruthy(); + } else { + expect(each <= arr[i + 1]).toBeTruthy(); + } + }); + }); + + test('LARGE array is sorted from minimum to maximum', () => { + let large = createArray.large(); + expect(large.length).toEqual(10000); + + quickSort(large); + + expect(large.length).toEqual(10000); + large.forEach((each, i, arr) => { + if (i === arr.length - 1) { + expect(each >= arr[i - 1]).toBeTruthy(); + } else { + expect(each <= arr[i + 1]).toBeTruthy(); + } + }); + }); +}); \ No newline at end of file diff --git a/lab-matt/quick-sort.js b/lab-matt/src/lib/quick-sort.js similarity index 100% rename from lab-matt/quick-sort.js rename to lab-matt/src/lib/quick-sort.js diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a412f3c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4967 @@ +{ + "name": "39-sorting-algorithms", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.38", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.38.tgz", + "integrity": "sha512-JNHofQND7Iiuy3f6RXSillN1uBe87DAp+1ktsBfSxfL3xWeGFyJC9jH5zu2zs7eqVGp2qXWvJZFiJIwOYnaCQw==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + }, + "acorn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", + "dev": true + }, + "acorn-globals": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", + "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", + "dev": true, + "requires": { + "acorn": "5.3.0" + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-jest": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.1.0.tgz", + "integrity": "sha512-5pKRFTlDr+x1JESNRd5leqvxEJk3dRwVvIXikB6Lr4BWZbBppk1Wp+BLUzxWL8tM+EYGLCWgfqkD35Sft8r8Lw==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "4.1.5", + "babel-preset-jest": "22.1.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz", + "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.9.1", + "test-exclude": "4.1.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.1.0.tgz", + "integrity": "sha512-Og5sjbOZc4XUI3njqwYhS6WLTlHQUJ/y5+dOqmst8eHrozYZgT4OMzAaYaxhk75c2fBVYwn7+mNEN97XDO7cOw==", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-preset-jest": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.1.0.tgz", + "integrity": "sha512-ps2UYz7IQpP2IgZ41tJjUuUDTxJioprHXD8fi9DoycKDGNqB3nAX/ggy1S3plaQd43ktBvMS1FkkyGNoBujFpg==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "22.1.0", + "babel-plugin-syntax-object-rest-spread": "6.13.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.3", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.3", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browser-process-hrtime": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "dev": true + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "requires": { + "resolve": "1.1.7" + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "dev": true, + "requires": { + "node-int64": "0.4.0" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "ci-info": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", + "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", + "dev": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, + "requires": { + "cssom": "0.3.2" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "4.0.2" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, + "eslint": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.16.0.tgz", + "integrity": "sha512-YVXV4bDhNoHHcv0qzU4Meof7/P26B4EuaktMi5L1Tnt52Aov85KmYA8c5D+xyZr/BkhvwUqr011jDSD/QTULxg==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.1.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "1.0.0", + "espree": "3.5.2", + "esquery": "1.0.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "11.2.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.1.0", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.5.0", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "dev": true, + "requires": { + "acorn": "5.3.0", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "exec-sh": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", + "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", + "dev": true, + "requires": { + "merge": "1.2.0" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "expect": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-22.1.0.tgz", + "integrity": "sha512-8K+8TjNnZq73KYtqNWKWTbYbN8z4loeL+Pn2bqpmtTdBtLNXJtpz9vkUcQlFsgKMDRA3VM8GXRA6qbV/oBF7Bw==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "jest-diff": "22.1.0", + "jest-get-type": "22.1.0", + "jest-matcher-utils": "22.1.0", + "jest-message-util": "22.1.0", + "jest-regex-util": "22.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "2.0.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "7.1.2", + "minimatch": "3.0.4" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.2.0.tgz", + "integrity": "sha512-RDC7Tj17I/56wpVvCVLSXtnn2Fo6CQZ9vaj+ARn+qlzm/ozbKQZe+j9fvHZCbSq+4JSGjTpKEt7p/AA1IKXRFA==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "1.0.3" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + } + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-ci": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", + "dev": true, + "requires": { + "ci-info": "1.1.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-generator-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", + "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", + "dev": true, + "requires": { + "async": "2.6.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "js-yaml": "3.10.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.5.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + } + }, + "istanbul-reports": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "jest": { + "version": "22.1.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-22.1.4.tgz", + "integrity": "sha512-cIPkn+OFGabazPesbhnYkadPftoO2Fo3w84QjeIP+A8eZ5qj7Zs4PuTemAW8StNMxySJr0KPk/LhYG2GUHLexQ==", + "dev": true, + "requires": { + "jest-cli": "22.1.4" + }, + "dependencies": { + "jest-cli": { + "version": "22.1.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-22.1.4.tgz", + "integrity": "sha512-p7yOu0Q5uuXb3Q93qEg3LE6eNGgAGueakifxXNEqQx4b0lOl2YlC9t6BLQWNOJ+z42VWK/BIdFjf6lxKcTkjFA==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "exit": "0.1.2", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "import-local": "1.0.0", + "is-ci": "1.1.0", + "istanbul-api": "1.2.1", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-source-maps": "1.2.2", + "jest-changed-files": "22.1.4", + "jest-config": "22.1.4", + "jest-environment-jsdom": "22.1.4", + "jest-get-type": "22.1.0", + "jest-haste-map": "22.1.0", + "jest-message-util": "22.1.0", + "jest-regex-util": "22.1.0", + "jest-resolve-dependencies": "22.1.0", + "jest-runner": "22.1.4", + "jest-runtime": "22.1.4", + "jest-snapshot": "22.1.2", + "jest-util": "22.1.4", + "jest-worker": "22.1.0", + "micromatch": "2.3.11", + "node-notifier": "5.2.1", + "realpath-native": "1.0.0", + "rimraf": "2.6.2", + "slash": "1.0.0", + "string-length": "2.0.0", + "strip-ansi": "4.0.0", + "which": "1.3.0", + "yargs": "10.1.2" + } + } + } + }, + "jest-changed-files": { + "version": "22.1.4", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.1.4.tgz", + "integrity": "sha512-EpqJhwt+N/wEHRT+5KrjagVrunduOfMgAb7fjjHkXHFCPRZoVZwl896S7krx7txf5hrMNUkpECnOnO2wBgzJCw==", + "dev": true, + "requires": { + "throat": "4.1.0" + } + }, + "jest-config": { + "version": "22.1.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.1.4.tgz", + "integrity": "sha512-ZImFp7STrUDOgQLW5I5UloCiCRMh6HmMIYIoWqaQkxnR5ws7MuZFG/Ns9sZFyfrnyWCvcW91e+XcEfNeoa4Jew==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "glob": "7.1.2", + "jest-environment-jsdom": "22.1.4", + "jest-environment-node": "22.1.4", + "jest-get-type": "22.1.0", + "jest-jasmine2": "22.1.4", + "jest-regex-util": "22.1.0", + "jest-resolve": "22.1.4", + "jest-util": "22.1.4", + "jest-validate": "22.1.2", + "pretty-format": "22.1.0" + } + }, + "jest-diff": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.1.0.tgz", + "integrity": "sha512-lowdbU/dzXh+2/MR5QcvU5KPNkO4JdAEYw0PkQCbIQIuy5+g3QZBuVhWh8179Fmpg4CQrz1WgoK/yQHDCHbqqw==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "diff": "3.4.0", + "jest-get-type": "22.1.0", + "pretty-format": "22.1.0" + } + }, + "jest-docblock": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.1.0.tgz", + "integrity": "sha512-/+OGgBVRJb5wCbXrB1LQvibQBz2SdrvDdKRNzY1gL+OISQJZCR9MOewbygdT5rVzbbkfhC4AR2x+qWmNUdJfjw==", + "dev": true, + "requires": { + "detect-newline": "2.1.0" + } + }, + "jest-environment-jsdom": { + "version": "22.1.4", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.1.4.tgz", + "integrity": "sha512-YGqFJzei/kq5BgQ8su7igLoCl34ytUffr5ZoqwLrDzCmXUKyIiuwBFbWe3xFMG/crlDb1emhBXdzWM1yDEDw5Q==", + "dev": true, + "requires": { + "jest-mock": "22.1.0", + "jest-util": "22.1.4", + "jsdom": "11.6.1" + } + }, + "jest-environment-node": { + "version": "22.1.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.1.4.tgz", + "integrity": "sha512-rQmtzgZVdyCzeXsE8i7Alw2483KSd2PYjssZWZYeNzonN/lBeUjjaOCgLWp6FspBzSTnYF7x6cN4umGZxYAhow==", + "dev": true, + "requires": { + "jest-mock": "22.1.0", + "jest-util": "22.1.4" + } + }, + "jest-get-type": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.1.0.tgz", + "integrity": "sha512-nD97IVOlNP6fjIN5i7j5XRH+hFsHL7VlauBbzRvueaaUe70uohrkz7pL/N8lx/IAwZRTJ//wOdVgh85OgM7g3w==", + "dev": true + }, + "jest-haste-map": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.1.0.tgz", + "integrity": "sha512-vETdC6GboGlZX6+9SMZkXtYRQSKBbQ47sFF7NGglbMN4eyIZBODply8rlcO01KwBiAeiNCKdjUyfonZzJ93JEg==", + "dev": true, + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "22.1.0", + "jest-worker": "22.1.0", + "micromatch": "2.3.11", + "sane": "2.3.0" + } + }, + "jest-jasmine2": { + "version": "22.1.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.1.4.tgz", + "integrity": "sha512-+KoRiG4PUwURB7UXei2jzxvbCebhXgTYS+xWl3FsSYUn3flcxdcOgAsFolx31Dkk/B1bVf1HIKt/B6Ubucp9aQ==", + "dev": true, + "requires": { + "callsites": "2.0.0", + "chalk": "2.3.0", + "co": "4.6.0", + "expect": "22.1.0", + "graceful-fs": "4.1.11", + "is-generator-fn": "1.0.0", + "jest-diff": "22.1.0", + "jest-matcher-utils": "22.1.0", + "jest-message-util": "22.1.0", + "jest-snapshot": "22.1.2", + "source-map-support": "0.5.3" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "jest-leak-detector": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-22.1.0.tgz", + "integrity": "sha512-8QsCWkncWAqdvrXN4yXQp9vgWF6CT3RkRey+d06SIHX913uXzAJhJdZyo6eE+uHVYMxUbxqW93npbUFhAR0YxA==", + "dev": true, + "requires": { + "pretty-format": "22.1.0" + } + }, + "jest-matcher-utils": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.1.0.tgz", + "integrity": "sha512-Zn1OD9wVjILOdvRxgAnqiCN36OX6KJx+P2FHN+3lzQ0omG2N2OAguxE1QXuJJneG2yndlkXjekXFP254c0cSpw==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "22.1.0", + "pretty-format": "22.1.0" + } + }, + "jest-message-util": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.1.0.tgz", + "integrity": "sha512-kftcoawOeOVUGuGWmMupJt7FGLK1pqOrh02FlJwtImmPGZ2yTWCTx2D+N/g95qD2jCbQ/ntH1goBixhAIIxL+g==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.38", + "chalk": "2.3.0", + "micromatch": "2.3.11", + "slash": "1.0.0", + "stack-utils": "1.0.1" + } + }, + "jest-mock": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.1.0.tgz", + "integrity": "sha512-gL3/C8ds6e1PWiOTsV7sIejPP/ECYQgDbwMzbNCc+ZFPuPH3EpwsVLGmQqPK6okgnDagimbbQnss3kPJ8HCMtA==", + "dev": true + }, + "jest-regex-util": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.1.0.tgz", + "integrity": "sha512-on0LqVS6Xeh69sw3d1RukVnur+lVOl3zkmb0Q54FHj9wHoq6dbtWqb3TSlnVUyx36hqjJhjgs/QLqs07Bzu72Q==", + "dev": true + }, + "jest-resolve": { + "version": "22.1.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.1.4.tgz", + "integrity": "sha512-/HuCMeiTD6YJ+NF15bU1mal1r7Gov0GJozA7232XiYve7cOOnU2JwXBx3EQmcIuG38uNrRPjtgpiXkBqfnk4Og==", + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "chalk": "2.3.0" + } + }, + "jest-resolve-dependencies": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-22.1.0.tgz", + "integrity": "sha512-76Ll61bD/Sus8wK8d+lw891EtiBJGJkWG8OuVDTEX0z3z2+jPujvQqSB2eQ+kCHyCsRwJ2PSjhn3UHqae/oEtA==", + "dev": true, + "requires": { + "jest-regex-util": "22.1.0" + } + }, + "jest-runner": { + "version": "22.1.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.1.4.tgz", + "integrity": "sha512-HAyZ0Q2Fyk7mlbtbSKP75hNs9IP0Md7kzPUN1uNKbvQfZkXA/e7P0ttzAIGQtEbRx656tYwkfWNW+hXvs1i4/g==", + "dev": true, + "requires": { + "exit": "0.1.2", + "jest-config": "22.1.4", + "jest-docblock": "22.1.0", + "jest-haste-map": "22.1.0", + "jest-jasmine2": "22.1.4", + "jest-leak-detector": "22.1.0", + "jest-message-util": "22.1.0", + "jest-runtime": "22.1.4", + "jest-util": "22.1.4", + "jest-worker": "22.1.0", + "throat": "4.1.0" + } + }, + "jest-runtime": { + "version": "22.1.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-22.1.4.tgz", + "integrity": "sha512-r/UjVuQppDRwbUprDlLYdd8MTYY+H8H6BCqRujGjo5/QyIt3b0hppNoOQHF+0bHNtuz/sR9chJ9HJ3A1fiv9Pw==", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-jest": "22.1.0", + "babel-plugin-istanbul": "4.1.5", + "chalk": "2.3.0", + "convert-source-map": "1.5.1", + "exit": "0.1.2", + "graceful-fs": "4.1.11", + "jest-config": "22.1.4", + "jest-haste-map": "22.1.0", + "jest-regex-util": "22.1.0", + "jest-resolve": "22.1.4", + "jest-util": "22.1.4", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "realpath-native": "1.0.0", + "slash": "1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "2.3.0", + "yargs": "10.1.2" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "jest-snapshot": { + "version": "22.1.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.1.2.tgz", + "integrity": "sha512-45co/M0gTe6Y6yHaJLydEZKHOFpFHESLah40jW35DWd3pd7q188bsi0oUY4Kls7PDXUamvTWuTKTZXCtzwSvCw==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-diff": "22.1.0", + "jest-matcher-utils": "22.1.0", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "pretty-format": "22.1.0" + } + }, + "jest-util": { + "version": "22.1.4", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.1.4.tgz", + "integrity": "sha512-zM29idoVBPvmpsGubS7YmywVyPe4/m1wE2YhmKp0vVmrQmuby7ObuMqabp82EYlM0Rdp4GNEtaDamW9jg8lgTg==", + "dev": true, + "requires": { + "callsites": "2.0.0", + "chalk": "2.3.0", + "graceful-fs": "4.1.11", + "is-ci": "1.1.0", + "jest-message-util": "22.1.0", + "jest-validate": "22.1.2", + "mkdirp": "0.5.1" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "jest-validate": { + "version": "22.1.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.1.2.tgz", + "integrity": "sha512-IjvMsV7GW5ghg5PTQvU23zJqTBmnq10eY+4n47awUeXYEGH27N+JajFPOg6tsN+OYvEPsohPquKoqQ5XBVs/ow==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "22.1.0", + "leven": "2.1.0", + "pretty-format": "22.1.0" + } + }, + "jest-worker": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-22.1.0.tgz", + "integrity": "sha512-ezLueYAQowk5N6g2J7bNZfq4NWZvMNB5Qd24EmOZLcM5SXTdiFvxykZIoNiMj9C98cCbPaojX8tfR7b1LJwNig==", + "dev": true, + "requires": { + "merge-stream": "1.0.1" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsdom": { + "version": "11.6.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.6.1.tgz", + "integrity": "sha512-x1vDo5CQuwsuP0w3kuU04vQdem9Q8apRV2PXp8GeSFQpgtYvSwbcypIbNgRrXu82O4TMroGYSAbu9wyVZHcehw==", + "dev": true, + "requires": { + "abab": "1.0.4", + "acorn": "5.3.0", + "acorn-globals": "4.1.0", + "array-equal": "1.0.0", + "browser-process-hrtime": "0.1.2", + "content-type-parser": "1.0.2", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "domexception": "1.0.1", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.2", + "left-pad": "1.2.0", + "nwmatcher": "1.4.3", + "parse5": "4.0.0", + "pn": "1.1.0", + "request": "2.83.0", + "request-promise-native": "1.0.5", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "w3c-hr-time": "1.0.1", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-url": "6.4.0", + "ws": "4.0.0", + "xml-name-validator": "3.0.0" + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "left-pad": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz", + "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.4" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "2.3.3" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true, + "optional": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-notifier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", + "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", + "dev": true, + "requires": { + "growly": "1.3.0", + "semver": "5.5.0", + "shellwords": "0.1.1", + "which": "1.3.0" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.2.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-format": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.1.0.tgz", + "integrity": "sha512-0HHR5hCmjDGU4sez3w5zRDAAwn7V0vT4SgPiYPZ1XDm5sT3Icb+Bh+fsOP3+Y3UwPjMr7TbRj+L7eQyMkPAxAw==", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + } + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + } + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "realpath-native": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz", + "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==", + "dev": true, + "requires": { + "util.promisify": "1.0.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "dev": true, + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "1.1.1", + "tough-cookie": "2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "sane": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.3.0.tgz", + "integrity": "sha512-6GB9zPCsqJqQPAGcvEkUPijM1ZUFI+A/DrscL++dXO3Ltt5q5mPDayGxZtr3cBRkrbb4akbwszVVkTIFefEkcg==", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "exec-sh": "0.2.1", + "fb-watchman": "2.0.0", + "fsevents": "1.1.3", + "minimatch": "3.0.4", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.18.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", + "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", + "dev": true, + "requires": { + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "1.0.0", + "strip-ansi": "4.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + } + }, + "test-exclude": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + } + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "object.getownpropertydescriptors": "2.0.3" + } + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "0.1.2" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.11" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "dev": true, + "requires": { + "exec-sh": "0.2.1", + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "whatwg-url": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.0.tgz", + "integrity": "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==", + "dev": true, + "requires": { + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "ws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.0.0.tgz", + "integrity": "sha512-QYslsH44bH8O7/W2815u5DpnCpXWpEK44FmaHffNwgJI4JMaSZONgPBTOfrxJ29mXKbXak+LsJ2uAkDTYq2ptQ==", + "dev": true, + "requires": { + "async-limiter": "1.0.0", + "safe-buffer": "5.1.1", + "ultron": "1.1.1" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", + "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", + "dev": true, + "requires": { + "cliui": "4.0.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.1.0" + }, + "dependencies": { + "cliui": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + } + } + } + }, + "yargs-parser": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..391e23d --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "39-sorting-algorithms", + "version": "1.0.0", + "description": "Lab 39 - CodeFellows 401d19 JavaScript", + "main": "index.js", + "scripts": { + "test": "jest -i --coverage", + "test-watch": "jest -i --coverage --watch" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Snobeard/39-sorting-algorithms.git" + }, + "author": "Matthew LeBlanc", + "license": "MIT", + "bugs": { + "url": "https://github.com/Snobeard/39-sorting-algorithms/issues" + }, + "homepage": "https://github.com/Snobeard/39-sorting-algorithms#readme", + "devDependencies": { + "eslint": "^4.16.0", + "jest": "^22.1.4" + } +} From 4f65da99e455a84c774350b979ad8f64fbc788dd Mon Sep 17 00:00:00 2001 From: Snobeard Date: Sun, 28 Jan 2018 17:34:38 -0800 Subject: [PATCH 4/7] minToMax test function working --- lab-matt/index.js | 56 +------------------ lab-matt/src/__test__/lib/create-arrays.js | 19 +++++-- lab-matt/src/__test__/quick-insertion.test.js | 48 ++++++++-------- 3 files changed, 36 insertions(+), 87 deletions(-) diff --git a/lab-matt/index.js b/lab-matt/index.js index c35a420..a726efc 100644 --- a/lab-matt/index.js +++ b/lab-matt/index.js @@ -1,55 +1 @@ -'use strict'; -const largeArray = require('./large-array'); -const sortedLargeArray = require('./sorted-large-array'); -const quickSort = require('./quick-sort'); - -let testArray = [5, 1, 8, 3, 9, 230, -1, -53, 2]; -let sortedArray = [-53, -1, 1, 2, 3, 5, 8, 9, 230]; - -// // console.log(sortedLargeArray); - -// // =========================================================== -// const quickSort = (array) => { -// if (array.length < 2) { -// return; -// } -// let half = Math.floor((array.length - 1) / 2); -// let pivot; - - - -// // if () - -// }; - -// // =========================================================== - - - - - -// let arr = [2, 3, 5, 2, 1, 6, 2, 5, 5]; -// persistOrder(arr); - -// console.log(arr); - - - - - -// function persistOrder(array) { - // array.forEach((each, i, arr) => { - // arr[i] = { value: each, priority: i}; - // }); - // } - - // =========================================================== -quickSort(testArray); -console.log(testArray); - -quickSort(largeArray); -// console.log(largeArray); - -largeArray.forEach((each, i, arr) => { - if (each > arr[i + 1]) throw new Error('bad mojo'); -}); \ No newline at end of file +'use strict'; \ No newline at end of file diff --git a/lab-matt/src/__test__/lib/create-arrays.js b/lab-matt/src/__test__/lib/create-arrays.js index a143600..b771a04 100644 --- a/lab-matt/src/__test__/lib/create-arrays.js +++ b/lab-matt/src/__test__/lib/create-arrays.js @@ -10,30 +10,37 @@ createArray.single = () => { createArray.small = () => { let array = []; - for (let i = 0; i < 20; i ++) { array.push(Math.floor(Math.random() * 100000)); } - return array; }; createArray.medium = () => { let array = []; - for (let i = 0; i < 500; i ++) { array.push(Math.floor(Math.random() * 100000)); } - return array; }; createArray.large = () => { let array = []; - for (let i = 0; i < 10000; i ++) { array.push(Math.floor(Math.random() * 100000)); } - return array; +}; + +createArray.testMinToMax = (array) => { + array.forEach((each, i, arr) => { + if (i === arr.length - 1) { + return + } else { + if (each > arr[i + 1]) { + throw new Error(`Test Failed at index: ${i} +${each} is greater than the next element: ${arr[i + 1]}`) + } + } + }); }; \ No newline at end of file diff --git a/lab-matt/src/__test__/quick-insertion.test.js b/lab-matt/src/__test__/quick-insertion.test.js index baa6cc5..01e9987 100644 --- a/lab-matt/src/__test__/quick-insertion.test.js +++ b/lab-matt/src/__test__/quick-insertion.test.js @@ -8,8 +8,9 @@ describe('quick-sort.js', () => { expect(empty.length).toEqual(0); quickSort(empty); - expect(empty).toEqual([]); + + createArray.testMinToMax(empty); }); test('single element array returns single element array', () => { @@ -17,55 +18,50 @@ describe('quick-sort.js', () => { expect(single.length).toEqual(1); quickSort(single); - expect(single.length).toEqual(1); + + createArray.testMinToMax(single); }); test('SMALL array is sorted from minimum to maximum', () => { let small = createArray.small(); expect(small.length).toEqual(20); + expect(() => { + createArray.testMinToMax(small) + }).toThrow(); + quickSort(small); - expect(small.length).toEqual(20); - small.forEach((each, i, arr) => { - if (i === arr.length - 1) { - expect(each >= arr[i - 1]).toBeTruthy(); - } else { - expect(each <= arr[i + 1]).toBeTruthy(); - } - }); + + createArray.testMinToMax(small); }); test('MEDIUM array is sorted from minimum to maximum', () => { let medium = createArray.medium(); expect(medium.length).toEqual(500); + expect(() => { + createArray.testMinToMax(medium) + }).toThrow(); + quickSort(medium); - expect(medium.length).toEqual(500); - medium.forEach((each, i, arr) => { - if (i === arr.length - 1) { - expect(each >= arr[i - 1]).toBeTruthy(); - } else { - expect(each <= arr[i + 1]).toBeTruthy(); - } - }); + + createArray.testMinToMax(medium); }); test('LARGE array is sorted from minimum to maximum', () => { let large = createArray.large(); expect(large.length).toEqual(10000); + expect(() => { + createArray.testMinToMax(large) + }).toThrow(); + quickSort(large); - expect(large.length).toEqual(10000); - large.forEach((each, i, arr) => { - if (i === arr.length - 1) { - expect(each >= arr[i - 1]).toBeTruthy(); - } else { - expect(each <= arr[i + 1]).toBeTruthy(); - } - }); + + createArray.testMinToMax(large); }); }); \ No newline at end of file From 0f73619b79ad371265774a201bf5d47784b179f0 Mon Sep 17 00:00:00 2001 From: Snobeard Date: Sun, 28 Jan 2018 18:39:36 -0800 Subject: [PATCH 5/7] mutable merge-sort functional --- lab-matt/src/__test__/lib/create-arrays.js | 8 ++ .../src/__test__/merge-sort-mutable.test.js | 81 +++++++++++++++++++ lab-matt/src/__test__/quick-insertion.test.js | 14 ++++ lab-matt/src/lib/merge-sort.js | 31 +++++++ 4 files changed, 134 insertions(+) create mode 100644 lab-matt/src/__test__/merge-sort-mutable.test.js create mode 100644 lab-matt/src/lib/merge-sort.js diff --git a/lab-matt/src/__test__/lib/create-arrays.js b/lab-matt/src/__test__/lib/create-arrays.js index b771a04..f4c17ca 100644 --- a/lab-matt/src/__test__/lib/create-arrays.js +++ b/lab-matt/src/__test__/lib/create-arrays.js @@ -32,6 +32,14 @@ createArray.large = () => { return array; }; +createArray.extraLarge = () => { + let array = []; + for (let i = 0; i < 100000; i ++) { + array.push(Math.floor(Math.random() * 100000)); + } + return array; +}; + createArray.testMinToMax = (array) => { array.forEach((each, i, arr) => { if (i === arr.length - 1) { diff --git a/lab-matt/src/__test__/merge-sort-mutable.test.js b/lab-matt/src/__test__/merge-sort-mutable.test.js new file mode 100644 index 0000000..4c9ae50 --- /dev/null +++ b/lab-matt/src/__test__/merge-sort-mutable.test.js @@ -0,0 +1,81 @@ +'use strict'; +const createArray = require('./lib/create-arrays'); +const mergeSort = require('../lib/merge-sort'); + +describe('merge-sort.js', () => { + test('empty array returns an empty array', () => { + let empty = createArray.empty(); + expect(empty.length).toEqual(0); + + mergeSort(empty); + expect(empty).toEqual([]); + + createArray.testMinToMax(empty); + }); + + test('single element array returns single element array', () => { + let single = createArray.single(); + expect(single.length).toEqual(1); + + mergeSort(single); + expect(single.length).toEqual(1); + + createArray.testMinToMax(single); + }); + + test('SMALL array is sorted from minimum to maximum', () => { + let small = createArray.small(); + expect(small.length).toEqual(20); + + expect(() => { + createArray.testMinToMax(small) + }).toThrow(); + + mergeSort(small); + expect(small.length).toEqual(20); + + createArray.testMinToMax(small); + }); + + test('MEDIUM array is sorted from minimum to maximum', () => { + let medium = createArray.medium(); + expect(medium.length).toEqual(500); + + expect(() => { + createArray.testMinToMax(medium) + }).toThrow(); + + mergeSort(medium); + expect(medium.length).toEqual(500); + + createArray.testMinToMax(medium); + }); + + test('LARGE array is sorted from minimum to maximum', () => { + let large = createArray.large(); + expect(large.length).toEqual(10000); + + expect(() => { + createArray.testMinToMax(large) + }).toThrow(); + + mergeSort(large); + expect(large.length).toEqual(10000); + + createArray.testMinToMax(large); + }); + + test('EXTRA-LARGE array is sorted from minimum to maximum', () => { + let extraLarge = createArray.extraLarge(); + expect(extraLarge.length).toEqual(100000); + + expect(() => { + createArray.testMinToMax(extraLarge) + }).toThrow(); + + mergeSort(extraLarge); + expect(extraLarge.length).toEqual(100000); + + createArray.testMinToMax(extraLarge); + }); +}); \ No newline at end of file diff --git a/lab-matt/src/__test__/quick-insertion.test.js b/lab-matt/src/__test__/quick-insertion.test.js index 01e9987..6990e33 100644 --- a/lab-matt/src/__test__/quick-insertion.test.js +++ b/lab-matt/src/__test__/quick-insertion.test.js @@ -64,4 +64,18 @@ describe('quick-sort.js', () => { createArray.testMinToMax(large); }); + + test('EXTRA-LARGE array is sorted from minimum to maximum', () => { + let extraLarge = createArray.extraLarge(); + expect(extraLarge.length).toEqual(100000); + + expect(() => { + createArray.testMinToMax(extraLarge) + }).toThrow(); + + quickSort(extraLarge); + expect(extraLarge.length).toEqual(100000); + + createArray.testMinToMax(extraLarge); + }); }); \ No newline at end of file diff --git a/lab-matt/src/lib/merge-sort.js b/lab-matt/src/lib/merge-sort.js new file mode 100644 index 0000000..74c8f30 --- /dev/null +++ b/lab-matt/src/lib/merge-sort.js @@ -0,0 +1,31 @@ +module.exports = function mergeSort(items) { + if (items.length < 2) { + return items; + } + + if (items.length === 2) { + return items[0] < items[1] ? items : items.reverse(); + } + + let middle = Math.floor(items.length / 2); + let leftSide = mergeSort(items.splice(0, middle)); + let rightSide = mergeSort(items.splice(0)); + + + while (leftSide.length || rightSide.length) { + if (leftSide.length && !rightSide.length) { + items.push(...leftSide); + break; + } + if (!leftSide.length && rightSide.length) { + items.push(...rightSide); + break; + } + if (leftSide[0] <= rightSide[0]) { + items.push(leftSide.shift()); + } else { + items.push(rightSide.shift()); + } + } + return items; +}; \ No newline at end of file From 631876e1e542541ea98bc0a26e6563e5743637da Mon Sep 17 00:00:00 2001 From: Snobeard Date: Sun, 28 Jan 2018 18:49:13 -0800 Subject: [PATCH 6/7] linter clean --- .eslintignore => lab-matt/.eslintignore | 0 .eslintrc => lab-matt/.eslintrc | 0 .gitignore => lab-matt/.gitignore | 0 .../package-lock.json | 127 ++++++++++++++++++ package.json => lab-matt/package.json | 4 +- lab-matt/src/__test__/lib/create-arrays.js | 4 +- .../src/__test__/merge-sort-mutable.test.js | 8 +- lab-matt/src/__test__/quick-insertion.test.js | 8 +- lab-matt/src/lib/quick-sort.js | 2 +- 9 files changed, 141 insertions(+), 12 deletions(-) rename .eslintignore => lab-matt/.eslintignore (100%) rename .eslintrc => lab-matt/.eslintrc (100%) rename .gitignore => lab-matt/.gitignore (100%) rename package-lock.json => lab-matt/package-lock.json (97%) rename package.json => lab-matt/package.json (84%) diff --git a/.eslintignore b/lab-matt/.eslintignore similarity index 100% rename from .eslintignore rename to lab-matt/.eslintignore diff --git a/.eslintrc b/lab-matt/.eslintrc similarity index 100% rename from .eslintrc rename to lab-matt/.eslintrc diff --git a/.gitignore b/lab-matt/.gitignore similarity index 100% rename from .gitignore rename to lab-matt/.gitignore diff --git a/package-lock.json b/lab-matt/package-lock.json similarity index 97% rename from package-lock.json rename to lab-matt/package-lock.json index a412f3c..5db36a8 100644 --- a/package-lock.json +++ b/lab-matt/package-lock.json @@ -155,6 +155,16 @@ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -182,6 +192,12 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", @@ -927,6 +943,15 @@ "jsbn": "0.1.1" } }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", @@ -1032,6 +1057,18 @@ "text-table": "0.2.0" } }, + "eslint-plugin-react": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.6.0.tgz", + "integrity": "sha512-5rTLxuZg8nJnjAVjd6aySU4NrThUNf7spX+eA179B1UJHzcIAvdqLv8Hnv/3OhtfQbtvjvE2DntPrxkSaSLPug==", + "dev": true, + "requires": { + "doctrine": "2.1.0", + "has": "1.0.1", + "jsx-ast-utils": "2.0.1", + "prop-types": "15.6.0" + } + }, "eslint-scope": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", @@ -1227,6 +1264,29 @@ "bser": "2.0.0" } }, + "fbjs": { + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", + "dev": true, + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.17" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + } + } + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -2756,6 +2816,16 @@ "isarray": "1.0.0" } }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "dev": true, + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" + } + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -3327,6 +3397,15 @@ "verror": "1.10.0" } }, + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "3.0.3" + } + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -3558,6 +3637,16 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dev": true, + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -3932,6 +4021,26 @@ "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", "dev": true }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "2.0.6" + } + }, + "prop-types": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", + "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", + "dev": true, + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -4301,6 +4410,12 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -4644,6 +4759,12 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "ua-parser-js": { + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", + "dev": true + }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -4778,6 +4899,12 @@ "iconv-lite": "0.4.19" } }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", + "dev": true + }, "whatwg-url": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.0.tgz", diff --git a/package.json b/lab-matt/package.json similarity index 84% rename from package.json rename to lab-matt/package.json index 391e23d..6651177 100644 --- a/package.json +++ b/lab-matt/package.json @@ -5,7 +5,8 @@ "main": "index.js", "scripts": { "test": "jest -i --coverage", - "test-watch": "jest -i --coverage --watch" + "test-watch": "jest -i --coverage --watch", + "lint": "eslint ./" }, "repository": { "type": "git", @@ -19,6 +20,7 @@ "homepage": "https://github.com/Snobeard/39-sorting-algorithms#readme", "devDependencies": { "eslint": "^4.16.0", + "eslint-plugin-react": "^7.6.0", "jest": "^22.1.4" } } diff --git a/lab-matt/src/__test__/lib/create-arrays.js b/lab-matt/src/__test__/lib/create-arrays.js index f4c17ca..7722533 100644 --- a/lab-matt/src/__test__/lib/create-arrays.js +++ b/lab-matt/src/__test__/lib/create-arrays.js @@ -43,11 +43,11 @@ createArray.extraLarge = () => { createArray.testMinToMax = (array) => { array.forEach((each, i, arr) => { if (i === arr.length - 1) { - return + return; } else { if (each > arr[i + 1]) { throw new Error(`Test Failed at index: ${i} -${each} is greater than the next element: ${arr[i + 1]}`) +${each} is greater than the next element: ${arr[i + 1]}`); } } }); diff --git a/lab-matt/src/__test__/merge-sort-mutable.test.js b/lab-matt/src/__test__/merge-sort-mutable.test.js index 4c9ae50..02e32ad 100644 --- a/lab-matt/src/__test__/merge-sort-mutable.test.js +++ b/lab-matt/src/__test__/merge-sort-mutable.test.js @@ -28,7 +28,7 @@ describe('merge-sort.js', () => { expect(small.length).toEqual(20); expect(() => { - createArray.testMinToMax(small) + createArray.testMinToMax(small); }).toThrow(); mergeSort(small); @@ -42,7 +42,7 @@ describe('merge-sort.js', () => { expect(medium.length).toEqual(500); expect(() => { - createArray.testMinToMax(medium) + createArray.testMinToMax(medium); }).toThrow(); mergeSort(medium); @@ -56,7 +56,7 @@ describe('merge-sort.js', () => { expect(large.length).toEqual(10000); expect(() => { - createArray.testMinToMax(large) + createArray.testMinToMax(large); }).toThrow(); mergeSort(large); @@ -70,7 +70,7 @@ describe('merge-sort.js', () => { expect(extraLarge.length).toEqual(100000); expect(() => { - createArray.testMinToMax(extraLarge) + createArray.testMinToMax(extraLarge); }).toThrow(); mergeSort(extraLarge); diff --git a/lab-matt/src/__test__/quick-insertion.test.js b/lab-matt/src/__test__/quick-insertion.test.js index 6990e33..1d85579 100644 --- a/lab-matt/src/__test__/quick-insertion.test.js +++ b/lab-matt/src/__test__/quick-insertion.test.js @@ -28,7 +28,7 @@ describe('quick-sort.js', () => { expect(small.length).toEqual(20); expect(() => { - createArray.testMinToMax(small) + createArray.testMinToMax(small); }).toThrow(); quickSort(small); @@ -42,7 +42,7 @@ describe('quick-sort.js', () => { expect(medium.length).toEqual(500); expect(() => { - createArray.testMinToMax(medium) + createArray.testMinToMax(medium); }).toThrow(); quickSort(medium); @@ -56,7 +56,7 @@ describe('quick-sort.js', () => { expect(large.length).toEqual(10000); expect(() => { - createArray.testMinToMax(large) + createArray.testMinToMax(large); }).toThrow(); quickSort(large); @@ -70,7 +70,7 @@ describe('quick-sort.js', () => { expect(extraLarge.length).toEqual(100000); expect(() => { - createArray.testMinToMax(extraLarge) + createArray.testMinToMax(extraLarge); }).toThrow(); quickSort(extraLarge); diff --git a/lab-matt/src/lib/quick-sort.js b/lab-matt/src/lib/quick-sort.js index db8158a..1a0a80b 100644 --- a/lab-matt/src/lib/quick-sort.js +++ b/lab-matt/src/lib/quick-sort.js @@ -1,4 +1,4 @@ -module.exports = (items) => { +module.exports = function quickSort(items) { _quickSort(items, 0, items.length-1); }; From fa3057a6ce59a08dc55fad960bf289748bc245d5 Mon Sep 17 00:00:00 2001 From: Snobeard Date: Sun, 28 Jan 2018 18:56:11 -0800 Subject: [PATCH 7/7] readme complete --- lab-matt/README.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 lab-matt/README.md diff --git a/lab-matt/README.md b/lab-matt/README.md new file mode 100644 index 0000000..8dc587a --- /dev/null +++ b/lab-matt/README.md @@ -0,0 +1,25 @@ +# 39: Sorting Algorithms +Description: **Lab 39 of Code Fellows JavaScript 401d19**
+Author: **Matthew LeBlanc**
+Date: **01/28/18** + +## Features +This lab features the implementation of a insertion sort method within a quickSort method to increase sorting speed. +Also a MergeSort method that mutates the original array. + +## Tech/Framework Used +- node.js +- javascript +- Visual Studio Code + +## Usage +1. `cd` into the lab-matt folder +2. `npm install` the required dependency packages +2. `npm run test` to run the test functions +3. `npm run lint` to run the linter + +## Dev-Dependencies +``` +"eslint": "^4.14.0", +"jest": "^22.0.4" +``` \ No newline at end of file