{"_id":"tiebreaker","_rev":"30-074d1d17e6848b44763d9194ee3aa798","name":"tiebreaker","description":"A middle stage tournament that deals with unexpected ties","dist-tags":{"latest":"3.1.0"},"versions":{"0.0.1":{"name":"tiebreaker","description":"A middle stage helper tournament to deal with the complexities of handling ties","author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"version":"0.0.1","repository":{"type":"git","url":"git://github.com/clux/tiebreaker"},"keywords":[],"main":"tiebreaker.js","scripts":{"test":"tap test/*.js"},"dependencies":{},"devDependencies":{"tap":"~0.4.4"},"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","_id":"tiebreaker@0.0.1","dist":{"shasum":"3a71c8090759510fefe4b23f4c65ca08a393828c","tarball":"https://registry.npmjs.org/tiebreaker/-/tiebreaker-0.0.1.tgz","integrity":"sha512-y89jAeZMYr5VoXY6dxWwoXxM/2RuxseIMMRvnGgr56RfQTxq0PA2a+ZUMB9dWhwtL4cH1zrkTEvwPMwIEyk0+A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUMoh4WZLfkC5AoguGv2NfbNVUvevnFjHq27FCNWcjVwIgKelRaX0/AGZeJnqE/Ng6hpUlpsREOVLTlxaqv8mlB3o="}]},"_from":"tiebreaker","_npmVersion":"1.3.11","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{},"deprecated":"tiebreaker 0.0.1 is a namespace capture release only"},"0.1.0":{"name":"tiebreaker","description":"A middle stage tournament that deals with unexpected ties","author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"version":"0.1.0","repository":{"type":"git","url":"git://github.com/clux/tiebreaker"},"keywords":["groupstage","ffa"],"main":"tiebreaker.js","scripts":{"test":"tap test/*.js"},"dependencies":{"interlude":"~1.0.2","tournament":"~0.20.3"},"devDependencies":{"tap":"~0.4.4","groupstage":"~0.6.1","ffa":"~0.5.0"},"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","_id":"tiebreaker@0.1.0","dist":{"shasum":"afe655fa601cb1b1b8f1c998edc5b1046b865da7","tarball":"https://registry.npmjs.org/tiebreaker/-/tiebreaker-0.1.0.tgz","integrity":"sha512-HBWwhj5omieNw3IFnYgPlHDQFs7h8KQL2ed76e8pupPnOlex38WGBuTvar69UKxNXln9HzooWjQMN4R9y4JnVQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBOMshRmB4Sfb6uSgHbuHeDwvnEe/562soYHRil9QBHHAiEA6mF7z/zAXl9jGRHNU5Z5j0lA7JzK2SNmS/fYwyWOu3E="}]},"_from":"tiebreaker","_npmVersion":"1.3.11","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.1.1":{"name":"tiebreaker","description":"A middle stage tournament that deals with unexpected ties","author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"version":"0.1.1","repository":{"type":"git","url":"git://github.com/clux/tiebreaker"},"keywords":["groupstage","ffa"],"main":"tiebreaker.js","scripts":{"test":"tap test/*.js"},"dependencies":{"interlude":"~1.0.2","tournament":"~0.20.3"},"devDependencies":{"tap":"~0.4.4","groupstage":"~0.6.1","ffa":"~0.5.0"},"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","_id":"tiebreaker@0.1.1","dist":{"shasum":"be330771e631e5b4a03a3f842199fc6e41936616","tarball":"https://registry.npmjs.org/tiebreaker/-/tiebreaker-0.1.1.tgz","integrity":"sha512-YXQwTdM32+HQfB3UYNXVzcr0p2IjWvcF42vFGD9QNcVeuHtEbuqOBOO1iUAkWmZov1tTWbauhtAawwwdemupAQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF11lG377s30bIZCW4dkR5kSHWSf0I7Y9cwhWa1fPR23AiEAy+t2L2F0oL4R9Do94uzuZArjMLt3RR81jEiUbhTEFdc="}]},"_from":"tiebreaker","_npmVersion":"1.3.11","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.2.0":{"name":"tiebreaker","description":"A middle stage tournament that deals with unexpected ties","author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"version":"0.2.0","repository":{"type":"git","url":"git://github.com/clux/tiebreaker"},"keywords":["groupstage","ffa"],"main":"tiebreaker.js","scripts":{"test":"tap test/*.js"},"dependencies":{"interlude":"~1.0.2","tournament":"~0.20.3","groupstage":"~0.6.1"},"devDependencies":{"tap":"~0.4.4","ffa":"~0.5.0"},"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","_id":"tiebreaker@0.2.0","dist":{"shasum":"59f6761acf2265cd6d15d558489da8774d1be4eb","tarball":"https://registry.npmjs.org/tiebreaker/-/tiebreaker-0.2.0.tgz","integrity":"sha512-euI7s8SokHWl3CGRBxvdH4QT7ciTdd9v3qpYHZJKprscejzcV4jsSSSNEBJKSe3/kNHYyImGAFWL5oH3DKUe5g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGYnjgkbCfMTHCfp36dD4ZsVeIE7zN1YACoca2+tKGV6AiAINTJjRDvTMTpAM8KiCuodThm+566iwzp9hKrVu3UkxQ=="}]},"_from":"tiebreaker","_npmVersion":"1.3.11","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.2.1":{"name":"tiebreaker","description":"A middle stage tournament that deals with unexpected ties","author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"version":"0.2.1","repository":{"type":"git","url":"git://github.com/clux/tiebreaker"},"keywords":["groupstage","ffa"],"main":"tiebreaker.js","scripts":{"test":"tap test/*.js"},"dependencies":{"interlude":"~1.0.2","tournament":"~0.20.4","groupstage":"~0.6.2"},"devDependencies":{"tap":"~0.4.4","ffa":"~0.5.0"},"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","_id":"tiebreaker@0.2.1","dist":{"shasum":"e38f91bb4109050f4455e4c7e49cb5b77948f6e0","tarball":"https://registry.npmjs.org/tiebreaker/-/tiebreaker-0.2.1.tgz","integrity":"sha512-2BIze2bBsdutInjEB+ta8LbGDLFEcGeCPHVBZCLaqNkNsMQe+uX2vonLS6Yxx7Q4rqRDFPtYzP2SuH+eOtzQeQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAeZVOoqYIETMTWCT6RA6vPoiahq5YCQqCUSBDiAKagIAiEAyYbcDeuGLpzNoZRGD/+e3aMCXTzR8o6rvolm0DmN+7Q="}]},"_from":"tiebreaker","_npmVersion":"1.3.11","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.3.0":{"name":"tiebreaker","description":"A middle stage tournament that deals with unexpected ties","author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"version":"0.3.0","repository":{"type":"git","url":"git://github.com/clux/tiebreaker"},"keywords":["groupstage","ffa"],"main":"tiebreaker.js","scripts":{"test":"tap test/*.js"},"dependencies":{"interlude":"~1.0.2","tournament":"~0.20.4","groupstage":"~0.6.2"},"devDependencies":{"tap":"~0.4.4","ffa":"~0.5.0"},"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","_id":"tiebreaker@0.3.0","dist":{"shasum":"1c402bc7b06361634ba7ea951eb4d86e7f5b0030","tarball":"https://registry.npmjs.org/tiebreaker/-/tiebreaker-0.3.0.tgz","integrity":"sha512-3zhsyxfkSs57JovttRjJRmI22Sv0xzDgqMXGpQD87GFamBFdBRWtUlLuwc/WmeMIdpwiYkFm9kgEgdEkGNPaGg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBLPw7NsA27lt5vHTFN/NEViDR8wHSO96bm7ebuFS3KSAiEA+uWcYrcA8MopW5sTMsUjJaG+rXIl4rrlvgxEVpadwu8="}]},"_from":"tiebreaker","_npmVersion":"1.3.11","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"directories":{}},"0.4.0":{"name":"tiebreaker","description":"A middle stage tournament that deals with unexpected ties","author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"version":"0.4.0","repository":{"type":"git","url":"git://github.com/clux/tiebreaker"},"keywords":["groupstage","ffa"],"main":"tiebreaker.js","scripts":{"test":"tap test/*.js"},"dependencies":{"interlude":"~1.0.2","tournament":"~0.21.0","groupstage":"~0.6.2"},"devDependencies":{"tap":"~0.4.4","ffa":"~0.5.0"},"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","homepage":"https://github.com/clux/tiebreaker","_id":"tiebreaker@0.4.0","dist":{"shasum":"3b8cb21ea4c6a6510532581a46c0e9def001275b","tarball":"https://registry.npmjs.org/tiebreaker/-/tiebreaker-0.4.0.tgz","integrity":"sha512-QtxBOE45vPXzEc6EB7a+LfolCeOYDpX1j/lHi5eRIF8ViCpHDJ/8vHjyX7t9dchIlD8eX9Hl4USi4vJ8I0ZRqg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDNPPKc/W0+FFq/NKhl059lttgkB8RHHSKOCupcX2dQwIgVc+KKobGcLBQ1Wq7wDkI9/ZszS9OhJ7OHzB83NzGfyM="}]},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}]},"0.4.1":{"name":"tiebreaker","description":"A middle stage tournament that deals with unexpected ties","author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"version":"0.4.1","stability":"unstable","repository":{"type":"git","url":"https://github.com/clux/tiebreaker"},"keywords":["groupstage","ffa"],"main":"tiebreaker.js","scripts":{"test":"nodeunit --reporter=verbose test/*.js","coverage":"jscoverage tiebreaker.js && TIEBREAKER_COV=1 nodeunit --reporter=lcov test","coveralls":"npm run coverage | coveralls"},"dependencies":{"interlude":"~1.0.2","tournament":"~0.21.0","groupstage":"~0.7.1"},"devDependencies":{"ffa":"~0.6.0","coveralls":"^2.11.1","nodeunit":"^0.9.0","jscoverage":"^0.5.5"},"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","gitHead":"eb45a015f06d2d7e0e3a4007550f062eb21d1540","homepage":"https://github.com/clux/tiebreaker","_id":"tiebreaker@0.4.1","_shasum":"0a7d12de7e5c84444e975ba14c46905ca1a8dddb","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"dist":{"shasum":"0a7d12de7e5c84444e975ba14c46905ca1a8dddb","tarball":"https://registry.npmjs.org/tiebreaker/-/tiebreaker-0.4.1.tgz","integrity":"sha512-mivk4kPrd/KU7Q6TC3W8EjyzFbGiePakFkGzJHt441f4rS0pgh0GNAamGkGWTg2U8aQPJ4kqIC+6/6EfLIdfxA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFP7AjY8o66klUXSYbSRqgOa+3a7SoDE2Z3RTTOBZ6myAiBDKsoC9yMq7h/b4TEfnUu7dq7h8i0KuMwRz+UQbZEc9w=="}]}},"1.0.0":{"name":"tiebreaker","description":"A middle stage tournament that deals with unexpected ties","author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"version":"1.0.0","stability":"unstable","repository":{"type":"git","url":"https://github.com/clux/tiebreaker"},"keywords":["groupstage","ffa"],"main":"tiebreaker.js","scripts":{"test":"nodeunit --reporter=verbose test/*.js","coverage":"jscoverage tiebreaker.js && TIEBREAKER_COV=1 nodeunit --reporter=lcov test","coveralls":"npm run coverage | coveralls"},"dependencies":{"interlude":"^1.0.2","tournament":"^1.0.0","groupstage":"^1.0.0"},"devDependencies":{"ffa":"^1.0.0","coveralls":"^2.11.1","nodeunit":"^0.9.0","jscoverage":"^0.5.5"},"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","gitHead":"1dec2e1cb9e26aa61fed84e01de57aaae77be80a","homepage":"https://github.com/clux/tiebreaker","_id":"tiebreaker@1.0.0","_shasum":"4a6fbccffcf15ff3c9d3b1a5df889bf22505db92","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"dist":{"shasum":"4a6fbccffcf15ff3c9d3b1a5df889bf22505db92","tarball":"https://registry.npmjs.org/tiebreaker/-/tiebreaker-1.0.0.tgz","integrity":"sha512-QjeAZ0vD1zeF679koA6lAcmS1MUB43a56GQg/8SjS1DPgm9gVy1osRUzisKft1UV2fujnCTxVE04VUglabNn6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDK7M3ymqd+z9EnFfgS1YMZdatd339giVw5RYXi7AkhAAiEAp8vBda21OG0CYFnXlvzc9fL/RxqL2K3eVXtjaGOt6RY="}]}},"2.0.0":{"name":"tiebreaker","description":"A middle stage tournament that deals with unexpected ties","author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"version":"2.0.0","stability":"unstable","repository":{"type":"git","url":"https://github.com/clux/tiebreaker"},"keywords":["groupstage","ffa"],"main":"tiebreaker.js","scripts":{"test":"nodeunit --reporter=verbose test/*.js","coverage":"jscoverage tiebreaker.js && TIEBREAKER_COV=1 nodeunit --reporter=lcov test","coveralls":"npm run coverage | coveralls"},"dependencies":{"interlude":"^1.0.2","tournament":"^2.0.0","groupstage":"^2.0.0"},"devDependencies":{"ffa":"^1.0.0","coveralls":"^2.11.1","nodeunit":"^0.9.0","jscoverage":"^0.5.5"},"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","gitHead":"295e26c46d456057c1edfdffcd2c0d95346f3b10","homepage":"https://github.com/clux/tiebreaker","_id":"tiebreaker@2.0.0","_shasum":"2d067b3dfba94ddea49b4182e8e988847cf30b3d","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"dist":{"shasum":"2d067b3dfba94ddea49b4182e8e988847cf30b3d","tarball":"https://registry.npmjs.org/tiebreaker/-/tiebreaker-2.0.0.tgz","integrity":"sha512-FNKNKSZPa+TY28jHbL+pzVRHxJGGdS7+ZsEPW0vDU04imcg0WRyBM4S6a1ACGob/6osoOVE2Gj+Y0CYFewMsAw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICaxOBidMEYHE2cbA3SE6fpfWo6IvGBHjjTHsNa/Va5cAiBC0dxeNHtTQW/JylTizxzOtuDaNwYPfco+NuzJ30OA6w=="}]}},"2.0.1":{"name":"tiebreaker","description":"A middle stage tournament that deals with unexpected ties","author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"version":"2.0.1","stability":"unstable","repository":{"type":"git","url":"https://github.com/clux/tiebreaker"},"keywords":["groupstage","ffa"],"main":"tiebreaker.js","scripts":{"test":"nodeunit --reporter=verbose test/*.js","coverage":"jscoverage tiebreaker.js && TIEBREAKER_COV=1 nodeunit --reporter=lcov test","coveralls":"npm run coverage | coveralls"},"dependencies":{"interlude":"^1.1.0","tournament":"^2.0.1","groupstage":"^2.0.1"},"devDependencies":{"ffa":"^2.0.1","coveralls":"^2.11.1","nodeunit":"^0.9.0","jscoverage":"^0.5.5"},"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","gitHead":"217dcd61d7729fd0323927c787e723756241aed8","homepage":"https://github.com/clux/tiebreaker","_id":"tiebreaker@2.0.1","_shasum":"311f092164aa642a329f5c37e2c517637cb71e79","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"dist":{"shasum":"311f092164aa642a329f5c37e2c517637cb71e79","tarball":"https://registry.npmjs.org/tiebreaker/-/tiebreaker-2.0.1.tgz","integrity":"sha512-YonnGxYhMUrm/5YqmAzF+z6m6e+mj9aB34UVdekUARQn6xK0ArytnatcVnU3CXqkuChRimZiUGsTHdvVj4BU1g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBYhmDJW0BdalcTP4fU+AxppQlxLf3mvvHZrz3JEU3uAIgHuWirlrEHrh2TNZey+Hdbo3uoU4RhkBjM0zsZeomUqY="}]}},"2.1.0":{"name":"tiebreaker","description":"A middle stage tournament that deals with unexpected ties","author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"version":"2.1.0","stability":"unstable","repository":{"type":"git","url":"https://github.com/clux/tiebreaker"},"keywords":["groupstage","ffa"],"main":"tiebreaker.js","scripts":{"test":"nodeunit --reporter=verbose test/*.js","coverage":"jscoverage tiebreaker.js && TIEBREAKER_COV=1 nodeunit --reporter=lcov test","coveralls":"npm run coverage | coveralls"},"dependencies":{"interlude":"^1.1.0","tournament":"^2.2.0","groupstage":"^2.1.0"},"devDependencies":{"ffa":"^2.1.0","coveralls":"^2.11.1","nodeunit":"^0.9.0","jscoverage":"^0.5.5"},"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","gitHead":"66244319c3e0a140cd7bfb06e43f3fed1595b0fa","homepage":"https://github.com/clux/tiebreaker","_id":"tiebreaker@2.1.0","_shasum":"f27647cb1e635347107132e586d84d811f183434","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"dist":{"shasum":"f27647cb1e635347107132e586d84d811f183434","tarball":"https://registry.npmjs.org/tiebreaker/-/tiebreaker-2.1.0.tgz","integrity":"sha512-AQfnS5oTlmhZFc42mpFeOrE9B5sRAYFnQk9BKDs7ZI/VUSNjVe4HEQs5n1s7eRDh3yUkSuUCYkZe8jlv8ioR/g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6v6JW/dhAm3wtmvBNhjdVKVfI2k089NyQvzqctVm2QAIgUoesShreNq0VVUSKR6yMg6B9YOZYx24SgtmKGFMDwE4="}]}},"3.0.0":{"name":"tiebreaker","description":"A middle stage tournament that deals with unexpected ties","author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"version":"3.0.0","stability":"stable","repository":{"type":"git","url":"https://github.com/clux/tiebreaker"},"keywords":["groupstage","ffa"],"main":"tiebreaker.js","scripts":{"test":"nodeunit --reporter=verbose test/*.js","coverage":"jscoverage tiebreaker.js && TIEBREAKER_COV=1 nodeunit --reporter=lcov test","coveralls":"npm run coverage | coveralls"},"dependencies":{"interlude":"^1.1.0","tournament":"^3.0.0","groupstage":"^3.0.0"},"devDependencies":{"ffa":"^3.0.0","coveralls":"^2.11.1","nodeunit":"^0.9.0","jscoverage":"^0.5.5"},"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","gitHead":"29071c875411c33d4dfe19602e4ba922deed797a","homepage":"https://github.com/clux/tiebreaker","_id":"tiebreaker@3.0.0","_shasum":"4c56efe761238b1435985853ef5f1e0f921b0995","_from":".","_npmVersion":"2.1.2","_nodeVersion":"0.10.32","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"dist":{"shasum":"4c56efe761238b1435985853ef5f1e0f921b0995","tarball":"https://registry.npmjs.org/tiebreaker/-/tiebreaker-3.0.0.tgz","integrity":"sha512-QZLAXztaWpsjHyIHdvZ3zcoDg+403mknvpYTkUcgaTlDgqtS/1ANOImXLQfadkxNWEX7U7VHtkPA0PehXET/6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDexfhaM5feR3yOCPOnB66owtUnblnkm2We2L4F1X2NTAIhAIJnb8MW/pD3JP5ZEbzAO/WQu9rp5kjJICWn5+sUbANE"}]}},"3.1.0":{"name":"tiebreaker","description":"A middle stage tournament that deals with unexpected ties","author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"version":"3.1.0","repository":{"type":"git","url":"git+https://github.com/clux/tiebreaker.git"},"keywords":["groupstage","ffa"],"main":"tiebreaker.js","scripts":{"test":"bndg test/*.js","precoverage":"istanbul cover bndg test/*.test.js","coverage":"cat coverage/lcov.info && rm -rf coverage"},"dependencies":{"interlude":"^1.1.0","tournament":"^3.1.1","groupstage":"^3.1.0"},"devDependencies":{"bandage":"^0.4.0","ffa":"^3.1.0","istanbul":"^0.4.1","smell":"^2.0.6"},"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","gitHead":"a01932535a396b0afb5823cf047822b7dd952504","homepage":"https://github.com/clux/tiebreaker#readme","_id":"tiebreaker@3.1.0","_shasum":"de7feee48dd58ad0f953143b3a0d6a4ed0116488","_from":".","_npmVersion":"3.5.0","_nodeVersion":"5.1.0","_npmUser":{"name":"clux","email":"analsandblaster@gmail.com"},"dist":{"shasum":"de7feee48dd58ad0f953143b3a0d6a4ed0116488","tarball":"https://registry.npmjs.org/tiebreaker/-/tiebreaker-3.1.0.tgz","integrity":"sha512-A6/jXbPiI8kjorGI/lKfJJ1HurKar+d+WigNBk5WM7MiJ8l1vxhpP9tnyuYAsvYn57INORe7N0YE44Tw3Ps+PA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICqRUVvKq68pQdH+TLBsZO6CWxBSzM22QGG2NSmtVuF0AiEA+uY1bjGhdkCL6HmfW2ruox3uaxlvMulTMggB1DTqbws="}]},"maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}]}},"readme":"# TieBreaker\n[![npm status](http://img.shields.io/npm/v/tiebreaker.svg)](https://www.npmjs.org/package/tiebreaker)\n[![build status](https://secure.travis-ci.org/clux/tiebreaker.svg)](http://travis-ci.org/clux/tiebreaker)\n[![dependency status](https://david-dm.org/clux/tiebreaker.svg)](https://david-dm.org/clux/tiebreaker)\n[![coverage status](http://img.shields.io/coveralls/clux/tiebreaker.svg)](https://coveralls.io/r/clux/tiebreaker)\n\n## Overview\nTieBreaker deals within _groups_ ties in tournaments that has group-like equivalents. Such tournaments include:\n\n- [GroupStage](https://npmjs.org/package/groupstage)\n- [FFA](https://npmjs.org/package/ffa) (when using a multiple match final round)\n\nBut `TieBreaker` will break ties for any tournament that implements `rawPositions`, a special method that converts results into a raw array of positions per \"group\".\n\n## Usage\nUnlike every other tournament type, this tournament CAN NOT be created directly. It needs a finished tournament instance to be created from, and the number of players we want to pick from this tournament:\n\n```js\nvar gs = new GroupStage(8, { groupSize: 4 });\n// score groupstage so that we have some ties\ngs.matches.forEach(function (m, i) {\n  if (m.id.s === 1) {\n    gs.score(m.id, i === 2 ? [1,0] : [1, 1]);\n  }\n  if (m.id.s === 2) {\n    gs.score(m.id, ([4].indexOf(m.id.r) >= 0) ? [1, 0] : [0, 1]);\n  }\n});\ngs.isDone(); // true\n```\n\nIn this case the group stage is tied in the following ways:\n\n- group one: 1st: [1], 2nd: [3,8], 4th: [6]\n- group two: 1st: [4,5,7], 4th: [2]\n\nThen, we may create tiebreakers in one of two ways, the simplest creates an `FFA` style match for each group where we need to break it up:\n\n```js\nvar tb = TieBreaker.from(gs, 4); // want the top 4\ntb.matches;\n[ { id: { s: 1, r: 1, m: 1 }, // group 1 tiebreaker\n    p: [ 3, 8 ] },\n  { id: { s: 2, r: 1, m: 1 }, // group 2 tiebreaker\n    p: [ 4, 5, 7 ] } ]\n\ntb.score(tb.matches[0].id, [2,1]);\ntb.score(tb.matches[1].id, [3,2,1]);\nvar top4 = tb.results().slice(0, 4); // will contain results for 1,3,4,5\n```\n\nThe more advanced creates mini groupstages for each group involving the tied players:\n\n```js\nvar tb = TieBreaker.from(gs, 4, { grouped: true });\ntb.matches;\n[ { id: { s: 1, r: 1, m: 1 }, p: [ 3, 8 ] },\n  // group 2 tiebreaker subgroup\n  { id: { s: 2, r: 1, m: 1 }, p: [ 5, 7 ] },\n  { id: { s: 2, r: 2, m: 1 }, p: [ 4, 7 ] },\n  { id: { s: 2, r: 3, m: 1 }, p: [ 4, 5 ] } ]\n```\n\nBecause `tb.matches` is a non-empty array, there were ties that meant isolating the top 4 was impossible. Depending on how many players we request to forward (in this case 4), `TieBreaker` may need more or fewer matches played.\n\n\n## Resolution\nAt the end of the `TieBreaker` tournament, you can call results and get the newly positioned results array. However, unless you were creating the tournament in `strict` mode, the ties may not have been broken fully.\n\n```js\ntb.matches.forEach(function (m) {\n// tie all the tiebreaker matches in group 2 (continuing grouped example)\n  tb.score(m.id, (m.id.s === 2) ? [1,1] : [2,1]);\n});\ntb.isDone(); // true\nTieBreaker.isNecessary(tb, 4); // true\n```\n\nIn this case we would need to recreate the `TieBreaker` from the previous instance. Until the conflict has been resolved, you will need to keep doing this:\n\n```js\n// recreate tiebreaker from partially broken/unbroken tiebreaker instance\nvar tb2 = TieBreaker.from(tb, 4);\ntb2.matches;\n[ { id: { s: 2, r: 1, m: 1 }, p: [ 5, 7 ] },\n  { id: { s: 2, r: 2, m: 1 }, p: [ 4, 7 ] },\n  { id: { s: 2, r: 3, m: 1 }, p: [ 4, 5 ] } ]\n```\n\nRepeating this procedure will eventually lead to a tiebreaker result where `!TieBreaker.isNecessary(prevTb, 4)`. In this case you can pick out the top 4 by slicing the results, or simply using `.from` on your next tournament.\n\n```js\ntb2.isDone(); // true\nTieBreaker.isNecessary(tb2, 4); // false - assume we unbroke group 2 in tb2\nvar top4 = tb2.results().slice(0, 4); // results for top 4\n\n// send the top 4 players from the groupstage to a two-round duel tournament\nvar duel = Duel.from(tb2, 4);\n```\n\n## Why should you use this module\nWithout going into detail, it is fairly easy to end up in a situation where you have many different multi-way ties. The following is a `GroupStage` test case:\n\n- group one: 1sts: [1,2,6], 4ths: [8]\n- group two: 1sts: [5], 2nds: [3,4,7]\n\nIf we get the results from `GroupStage`, it will say that `[1,2,5,6]` are all 1st placers, and thus tie all these four `results[i].pos` attributes at `1`.\nIf we wanted the top 4 to proceed to a different tournament we would end up picking three players from group 1 and one player from group 2.\n\nWhile this seems terrible, `GroupStage` have nonetheless computed the results to the best of its knowledge.\n\nBy specifying the number of players you want to extract, `TieBreaker` can create matches needed to forward the top `n` players ([a multiple of the number of groups](#limitations)) to another tournament _fairly_.\n\n## Example\nUsing the ties outlined above, if we:\n### Require top 4\nThen need to break:\n\n- 1st place cluster [1,2,6] - then pick top 2 to proceed\n- 2nd place cluster [3,4,7] - then pick winner to proceed\n\nThat gives 3 out of the 4 to proceed, and the last is player 5 who won his group alone and is guaranteed through.\n\n### Require top 2\nThen only need to break the 1st place cluster in group 1, because we know 5 is one of the top 2.\n\n### Require top 6\nOnly need to break the 2nd place cluster from group 2, because we know [1,2,6] are all in the top 6.\n\n## Viewing results\nResults out from a `TieBreaker` instance are identical to the results received from the tournament we are breaking. The only difference is that we modify the `pos` attributes in two ways:\n\n- Until the TieBreaker is done - we demote players in the TieBreaker to an assumed worst outcome\n- After TieBreaker is done - we can safely pick the top `n` (fairly) by simply filtering by `r.pos <= n`, or by calling `slice(0, n)`\n- The `gpos` attributes are modified\n- The `pos` attributes are at the end built up like `GroupStage`\n\n## Limitations\n`TieBreaker` only allows a multiple of the number of groups/sections to be chosen, lest unfair inferences about positions between groups needs to be made. See [issue #3](https://github.com/clux/tiebreaker/issues/3).\n\n### Extras\nWhile TieBreaker implements `results` and `from` slightly differently than any other tournament, is still a perfectly valid [tournament](https://npmjs.org/package/tournament). All the methods available on the tournament base class exist on `TieBreaker`. Read the [tournament API](https://github.com/clux/tournament/master/blob/doc/base.md)\n\n## License\nMIT-Licensed. See LICENSE file for details.\n","maintainers":[{"name":"clux","email":"analsandblaster@gmail.com"}],"time":{"modified":"2022-06-27T06:36:37.929Z","created":"2013-11-02T14:07:11.016Z","0.0.1":"2013-11-02T14:07:14.280Z","0.1.0":"2013-11-14T22:08:53.441Z","0.1.1":"2013-11-16T10:55:36.285Z","0.2.0":"2013-11-23T13:48:17.555Z","0.2.1":"2013-11-24T12:58:44.367Z","0.3.0":"2013-11-26T19:24:02.772Z","0.4.0":"2013-12-23T22:34:55.596Z","0.4.1":"2014-08-03T08:10:11.236Z","1.0.0":"2014-09-03T18:18:11.176Z","2.0.0":"2014-09-14T14:44:01.751Z","2.0.1":"2014-09-30T18:46:51.977Z","2.1.0":"2014-10-03T09:35:39.099Z","3.0.0":"2014-10-11T21:08:05.881Z","3.1.0":"2015-12-08T00:32:10.821Z"},"author":{"name":"Eirik Albrigtsen","email":"analsandblaster@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/clux/tiebreaker.git"},"homepage":"https://github.com/clux/tiebreaker#readme","keywords":["groupstage","ffa"],"bugs":{"url":"http://github.com/clux/tiebreaker/issues"},"license":"MIT","readmeFilename":"README.md"}