diff --git a/README.md b/README.md index 3ba17fd..046801d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,33 @@ -compass-web +Compass-Web =========== -Web UI for Compass +**Compass-Web** is a web-based UI consuming the Restful API service provided by [Compass](https://github.com/huawei-cloud/compass) to pragmatically deploy an OpenStack system on to a set of raw physical resources. It is used for demo purpose. It can be used as a base to develop a UI for more sophisticated use cases. + +Compass-Web is based on [JavaScriptMVC](http://v32.javascriptmvc.com/) framework. It has five modules: Servers, Security, Networking, Host Configuration and Deployment. + + 1. *Servers Module*. Discover available servers with switch information and add a subset of the servers to a cluster. + + 2. *Security Module*. Specify credentials for the OpenStack system. + + 3. *Networking Module*. Specify network addresses needed to facilitate the OpenStack cluster you want to use for your OpenStack servers. + + 4. *Host Configuration Module* Configure host names of the servers in the cluster. + + 5. *Deployment Module* Deploy OpenStack onto the servers with the realtime progressbars. + + +Framework +--------- +[JavaScriptMVC v3.2.4](http://v32.javascriptmvc.com/) +JavaScriptMVC is a MIT licensed, client-side, JavaScript framework that builds maintainable, error-free, lightweight applications as quick as possible. + +Third-party Libraries +--------------------- + * [jQueryUI](http://jqueryui.com/) + jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. It is included for widgets such as accordion, tabs, dialog and progressbar. + + * [d3](http://d3js.org/) + D3.js is a JavaScript library for manipulating documents based on data. It is included for the graph-based progress bars in Deployment module to have a collapsible tree layout for switches and servers. + + * [DataTables](http://www.datatables.net/) + DataTables is a plug-in for the jQuery Javascript library to add advanced interaction controls to any HTML table. It is included to have advanced interaction controls to HTML table in Servers and Deployment modules. \ No newline at end of file diff --git a/public/css/base.css b/public/css/base.css new file mode 100644 index 0000000..7bc7e08 --- /dev/null +++ b/public/css/base.css @@ -0,0 +1,278 @@ +.float_left { + float: left; +} + +.float_right { + float: right; +} + +.clear { + clear: both; +} + +.bold { + font-weight: bold; +} + +.underline { + text-decoration:underline; +} + +.italic { + font-style: italic; +} + +.right { + text-align: right; +} + +.left { + text-align: left; +} + +.btn_continue { + /*background gradient*/ + background: rgba(190,223,189,1); + background: -moz-linear-gradient(top, rgba(190,223,189,1) 0%, rgba(0,128,0,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(190,223,189,1)), color-stop(100%, rgba(0,128,0,1))); + background: -webkit-linear-gradient(top, rgba(190,223,189,1) 0%, rgba(0,128,0,1) 100%); + background: -o-linear-gradient(top, rgba(190,223,189,1) 0%, rgba(0,128,0,1) 100%); + background: -ms-linear-gradient(top, rgba(190,223,189,1) 0%, rgba(0,128,0,1) 100%); + background: linear-gradient(to bottom, rgba(190,223,189,1) 0%, rgba(0,128,0,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#bedfbd', endColorstr='#008000', GradientType=0 ); + + /*border*/ + -moz-border-radius:6px; + -webkit-border-radius:6px; + border-radius:6px; + border:1px solid #aaaaaa; + + display:inline-block; + color:#ffffff; + font-family:arial; + font-size:18px; + padding: 8px; + width: 170px; + text-decoration:none; +} + +.btn_continue:hover { + /*background gradient*/ + background: rgba(0,128,0,1); + background: -moz-linear-gradient(top, rgba(0,128,0,1) 0%, rgba(190,223,189,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(0,128,0,1)), color-stop(100%, rgba(190,223,189,1))); + background: -webkit-linear-gradient(top, rgba(0,128,0,1) 0%, rgba(190,223,189,1) 100%); + background: -o-linear-gradient(top, rgba(0,128,0,1) 0%, rgba(190,223,189,1) 100%); + background: -ms-linear-gradient(top, rgba(0,128,0,1) 0%, rgba(190,223,189,1) 100%); + background: linear-gradient(to bottom, rgba(0,128,0,1) 0%, rgba(190,223,189,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#008000', endColorstr='#bedfbd', GradientType=0 ); +} + +.btn_continue:active { + position:relative; + top:1px; +} + +.btn_continue_inactive { + background: rgba(255,255,255,1); + background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(246,246,246,1) 47%, rgba(230,230,230,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255,255,255,1)), color-stop(47%, rgba(246,246,246,1)), color-stop(100%, rgba(230,230,230,1))); + background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(246,246,246,1) 47%, rgba(230,230,230,1) 100%); + background: -o-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(246,246,246,1) 47%, rgba(230,230,230,1) 100%); + background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(246,246,246,1) 47%, rgba(230,230,230,1) 100%); + background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(246,246,246,1) 47%, rgba(230,230,230,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0 ); + + /*border*/ + -moz-border-radius:6px; + -webkit-border-radius:6px; + border-radius:6px; + border:1px solid #c0c0c0; + + display:inline-block; + color:#969696; + font-family:arial; + font-size:18px; + padding: 8px; + width: 170px; + text-decoration:none; +} + +.btn_find { + /*background gradient*/ + background: rgba(141,146,251,1); + background: -moz-linear-gradient(top, rgba(141,146,251,1) 0%, rgba(50,54,162,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(141,146,251,1)), color-stop(100%, rgba(50,54,162,1))); + background: -webkit-linear-gradient(top, rgba(141,146,251,1) 0%, rgba(50,54,162,1) 100%); + background: -o-linear-gradient(top, rgba(141,146,251,1) 0%, rgba(50,54,162,1) 100%); + background: -ms-linear-gradient(top, rgba(141,146,251,1) 0%, rgba(50,54,162,1) 100%); + background: linear-gradient(to bottom, rgba(141,146,251,1) 0%, rgba(50,54,162,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#8d92fb', endColorstr='#3236a2', GradientType=0 ); + + /*border*/ + -moz-border-radius:4px; + -webkit-border-radius:4px; + border-radius:4px; + border:1px solid #808080; + + display:inline-block; + color:#ffffff; + font-family:arial; + font-size:12px; + padding: 3px 20px; + text-decoration:none; +} +.btn_find:hover { + background: rgba(50,54,162,1); + background: -moz-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(50,54,162,1)), color-stop(100%, rgba(141,146,251,1))); + background: -webkit-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%); + background: -o-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%); + background: -ms-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%); + background: linear-gradient(to bottom, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3236a2', endColorstr='#8d92fb', GradientType=0 ); +} + +.btn_find_inactive { + /*background gradient*/ + background: rgba(249,249,249,1); + background: -moz-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(249,249,249,1)), color-stop(47%, rgba(246,246,246,1)), color-stop(100%, rgba(227,227,227,1))); + background: -webkit-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: -o-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: -ms-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: linear-gradient(to bottom, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f9f9f9', endColorstr='#e3e3e3', GradientType=0 ); + + /*border*/ + -moz-border-radius:4px; + -webkit-border-radius:4px; + border-radius:4px; + border:1px solid #c0c0c0; + + display:inline-block; + color:#3f3f3f; + font-family:arial; + font-size:12px; + padding: 3px 20px; + text-decoration:none; +} + +.rounded { + border: 1px solid #aaaaaa; + + background-color: rgb(255, 255, 255); + padding: 20px; + + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + + color:#3f3f3f; + font-family:arial; + font-size:14px; +} + +div.gradient { + background: rgba(249,249,249,1); + background: -moz-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(249,249,249,1)), color-stop(47%, rgba(246,246,246,1)), color-stop(100%, rgba(227,227,227,1))); + background: -webkit-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: -o-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: -ms-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + background: linear-gradient(to bottom, rgba(249,249,249,1) 0%, rgba(246,246,246,1) 47%, rgba(227,227,227,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f9f9f9', endColorstr='#e3e3e3', GradientType=0 ); +} + +input.rounded { + border: 1px solid #c0c0c0; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + + -webkit-box-shadow: inset 0px 0px 5px 0px rgba(215,211,207,0.75); + -moz-box-shadow: inset 0px 0px 5px 0px rgba(215,211,207,0.75); + box-shadow: inset 0px 0px 5px 0px rgba(215,211,207,0.75); + + padding: 4px 7px; + outline: 0; + -webkit-appearance: none; +} + +input.rounded:focus { + border-color: #3A01DF; +} + +.tab_nav { + /*background gradient*/ + background: rgba(249,249,249,1); + background: -moz-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(227,227,227,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(249,249,249,1)), color-stop(100%, rgba(227,227,227,1))); + background: -webkit-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(227,227,227,1) 100%); + background: -o-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(227,227,227,1) 100%); + background: -ms-linear-gradient(top, rgba(249,249,249,1) 0%, rgba(227,227,227,1) 100%); + background: linear-gradient(to bottom, rgba(249,249,249,1) 0%, rgba(227,227,227,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f9f9f9', endColorstr='#e3e3e3', GradientType=0 ); + + /*border*/ + border-radius: 4px 0px 0px 4px; + -moz-border-radius: 4px 0px 0px 4px; + -webkit-border-radius: 4px 0px 0px 4px; + border-left: 1px solid #c0c0c0; + border-top: 1px solid #c0c0c0; + border-bottom: 1px solid #c0c0c0; + + display:inline-block; + color:#3f3f3f; + font-family:arial; + font-size:12px; + padding: 1px 5px; + text-decoration:none; +} + +.tab_nav:hover { + cursor: pointer; +} + +.tab_nav_active { + /*background gradient*/ + background: rgba(50,54,162,1) !important; + background: -moz-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%) !important; + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(50,54,162,1)), color-stop(100%, rgba(141,146,251,1))) !important; + background: -webkit-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%) !important; + background: -o-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%) !important; + background: -ms-linear-gradient(top, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%) !important; + background: linear-gradient(to bottom, rgba(50,54,162,1) 0%, rgba(141,146,251,1) 100%) !important; + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3236a2', endColorstr='#8d92fb', GradientType=0 ) !important; + + /*border*/ + border-radius: 4px 0px 0px 4px; + -moz-border-radius: 4px 0px 0px 4px; + -webkit-border-radius: 4px 0px 0px 4px; + border-left: 1px solid #c0c0c0; + border-top: 1px solid #c0c0c0; + border-bottom: 1px solid #c0c0c0; + + display:inline-block; + color:#ffffff !important; + font-family:arial; + font-size:12px; + padding: 1px 5px; + text-decoration:none; +} + +.error { + background-color: #FFE6E6 !important; + border-color: red !important; +} + +.errhint { + border: 1px solid red; + padding: 4px 8px; + background-color: white; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + color: red; + font-weight: bold; +} \ No newline at end of file diff --git a/public/css/github.css b/public/css/github.css new file mode 100644 index 0000000..9b64d40 --- /dev/null +++ b/public/css/github.css @@ -0,0 +1 @@ +@charset "UTF-8";.container{width:980px;margin-left:auto;margin-right:auto;-moz-box-sizing:border-box;box-sizing:border-box}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}.wider .container{width:960px}#site-container>.container:first-child{margin-top:20px}.columns:before,.columns:after{content:" ";display:table}.columns:after{clear:both}.columns.typical .main{float:left;width:620px}.columns.typical .sidebar{float:right;width:330px}.columns.typical.compact-sidebar .main{width:650px}.columns.typical.compact-sidebar .sidebar{width:230px}.columns.dashcols .main{float:left;width:620px}.columns.dashcols .sidebar{float:right;width:337px}.columns.equacols .column{width:470px;float:left}.columns.equacols .secondary{float:right}.columns.equacols.bordered{border-top:1px solid #ddd;border-bottom:1px solid #ddd;background:url("/images/modules/global/column_separator.gif?3e3a799f") 50% 0 repeat-y}.contactcols .first{float:left;width:620px}.contactcols .last{float:right;width:320px}.columns.hooks .sidebar{float:left;width:210px}.columns.hooks .main{float:right;width:470px}.columns.browser{position:relative}.columns.browser .sidebar{float:left;width:220px;padding:0}.columns.browser .sidebar .button{text-align:center;display:block}.columns.browser .sidebar h3:first-child{margin-top:0}.columns.browser .main{margin-left:240px;padding:0;float:none}.columns.browser.right-sidebar .main{margin-left:0;margin-right:240px}.columns.browser.right-sidebar .sidebar{float:right}.columns.content-left .main{float:left;width:730px}.columns.content-left .sidebar{float:right;width:240px}.columns.fourcols .column{float:left;margin-left:20px;width:215px}.columns.fourcols .column.leftmost{margin-left:0}.wider .columns.content-left .main{float:left;width:670px}.wider .columns.content-left .sidebar{float:right;width:248px}.wider .feature-content{padding:0 5px}.wider .columns.equacols .first{float:left;width:460px}.wider .columns.equacols .last{float:right;width:460px}.wider .columns.threecols .column{float:left;width:300px;margin-left:24px}.wider .columns.threecols .column.first{margin-left:0}.content-sec,.content-main{position:relative;float:left}.content-sec{width:200px}.content-main{width:720px;margin-left:60px}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:0.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace, serif;font-size:1em}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}h1,h2,h3,h4,h5,h6{margin-top:15px;margin-bottom:15px;line-height:1.1}h1{font-size:30px}h2{font-size:21px}h3{font-size:16px}h4{font-size:14px}h5{font-size:12px}h6{font-size:11px}small{font-size:90%}blockquote{margin:0}.lead{margin-bottom:30px;font-size:20px;font-weight:300;color:#555}ul,ol{padding:0;margin-top:0;margin-bottom:0}dd{margin-left:0}tt,code,pre{font-family:Consolas, "Liberation Mono", Courier, monospace;font-size:12px}pre{margin-top:0;margin-bottom:0}.user-mention,.team-mention{font-weight:bold;color:#333}a.book{display:inline-block;margin-left:-2px;padding:0 5px 5px 0;background:url("/images/modules/books/background-effect.gif?2ddfe490") 0 0 no-repeat}a.book>img{width:100px;height:130px;box-shadow:inset 1px 1px 0 rgba(0,0,0,0.1)}.callout{margin:15px 0;padding:10px;font-size:13px;color:#8d8d6d;background:#fffef1;border:1px solid #e5e2c8;border-radius:4px}.callout strong{font-weight:bold;color:#000}.callout h2{margin:0;font-size:16px;font-weight:300}.callout p:last-child{margin-bottom:0}.callout hr{margin:10px 0 10px -10px;width:100%;padding:0 10px;background:transparent;border-top:1px solid #e5e2c8;border-bottom:1px solid #fff}.callout.subdued{margin:10px 0;color:#666;border-color:#ddd;background:#f8f8f8}p.subdued{font-size:13px;color:#666}.featured-callout{margin:15px 0;padding:10px;font-size:12px;color:#333;background:#e8f0f5;border:1px solid #d2d9de;border-right-color:#e5e9ed;border-bottom-color:#e5e9ed;border-radius:3px}.featured-callout .rule{width:100%;padding:0 10px;margin:10px 0 10px -10px;border-top:1px solid #c6d5df;border-bottom:1px solid #fff}.featured-callout h2{margin:0;font-size:14px;font-weight:bold;line-height:20px;color:#000}.featured-callout ol,.featured-callout ul{margin-left:20px}.featured-callout ol li,.featured-callout ul li{margin:5px 0}.featured-callout p:last-child{margin-bottom:0}.featured-callout p.more{font-weight:bold}.featured-callout pre.console{padding:5px;color:#eee;background:#333;border:1px solid #000;border-right-color:#222;border-bottom-color:#222;border-radius:3px}.featured-callout pre.console code{font-size:11px}.featured-callout .diagram{margin:15px 0;text-align:center}.featured-callout .screenshot{margin:15px 0;padding:1px;background:#fff;border:1px solid #b4cad8}.featured-callout .screenshot img{width:100%}.mini-callout{margin:15px 0;padding:10px;color:#5d5900;border:1px solid #e7e7ce;border-radius:5px;background-color:#fffde3;background-image:-moz-linear-gradient(#fffff6, #fffde3);background-image:-webkit-linear-gradient(#fffff6, #fffde3);background-image:linear-gradient(#fffff6, #fffde3);background-repeat:repeat-x}.mini-callout img{position:relative;top:-2px;vertical-align:middle;margin-right:5px}.inset-callout{margin:15px 0;padding:10px;font-size:12px;color:#333;background:#eee;border:1px solid #d5d5d5;border-right-color:#e5e5e5;border-bottom-color:#e5e5e5;border-radius:3px}.help-callout{font-size:11px}.help-callout p:last-child{margin-bottom:0}.help-callout h2{margin-top:20px}.help-callout h2:first-child{margin:0}.help-callout code{word-wrap:break-word}.featured-callout .mega-octicon{vertical-align:middle}.infotip{margin:15px 0;padding:10px;font-size:12px;color:#6d6d4b;background:#ffffde;border:1px solid #e4e4c6;border-right-color:#eff2c7;border-bottom-color:#eff2c7;border-radius:3px}.infotip p{margin:0}.infotip p+p{margin-top:15px}.dashboard-notice{position:relative;margin:0 0 20px 0;padding:13px;font-size:12px;color:#333;border:1px solid #e7e7ce;border-radius:5px;background-color:#fffde3;background-image:-moz-linear-gradient(#fffff6, #fffde3);background-image:-webkit-linear-gradient(#fffff6, #fffde3);background-image:linear-gradient(#fffff6, #fffde3);background-repeat:repeat-x}.dashboard-notice .dismiss{position:absolute;display:block;top:5px;right:5px;width:16px;height:16px;cursor:pointer;color:#ceceb8}.dashboard-notice .dismiss:hover{color:#c60000}.dashboard-notice .title{margin-left:-13px;margin-bottom:13px;width:100%;padding:0 13px 13px;border-bottom:1px solid #e7e7ce}.dashboard-notice .title p{margin:0;font-size:14px;color:#666}.dashboard-notice h2{margin:0;font-size:16px;font-weight:normal;color:#000}.dashboard-notice p{margin-top:0}.dashboard-notice p:last-child{margin-bottom:0}.dashboard-notice p.no-title{margin-top:0;padding-right:5px}.dashboard-notice .inset-figure{margin:0 0 10px 15px;float:right;clear:right;padding:6px;background:#fff;border:1px solid #e4e4e4;border-right-color:#f4f4f4;border-bottom-color:#fff;border-radius:3px}.dashboard-notice .inset-comment{margin:15px 0;padding:6px;background:#fff;color:#444;border:1px solid #e4e4e4;border-right-color:#f4f4f4;border-bottom-color:#fff;border-radius:3px}.dashboard-notice ul{margin-left:25px}.dashboard-notice .coupon{margin:15px 0;padding:10px;text-align:center;font-weight:bold;font-size:20px;background:#fff;border:1px dashed #d1e5ff}.dashboard-notice.org-newbie .fancytitle .octicon-organization{position:relative;float:left;color:#dddb8e;margin-right:10px}.org-newbie .inset-figure{margin-top:1px;margin-bottom:0}.octotip{position:relative;margin:10px 0;padding:10px 10px 10px 32px;color:#25494f;font-size:13px;background:#e5f8fc;border:1px solid #b1ecf8;border-radius:3px;box-shadow:inset 0 0 8px rgba(0,0,0,0.08)}.octotip p{margin:0}.octotip .tip-flag{float:left;margin-top:2px;margin-left:-22px;color:rgba(37,73,79,0.15)}.octotip .dismiss{position:absolute;display:block;top:50%;right:5px;margin-top:-9px;cursor:pointer}.octotip .dismiss:hover{color:#000}.frame .octotip{margin-top:0}.kbd{display:inline-block;padding:3px 5px;color:#000;font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:11px;background-color:#e7e7e7;background-image:-moz-linear-gradient(#fefefe, #e7e7e7);background-image:-webkit-linear-gradient(#fefefe, #e7e7e7);background-image:linear-gradient(#fefefe, #e7e7e7);background-repeat:repeat-x;border:1px solid #cfcfcf;border-radius:2px}#facebox .badmono,.kbd.badmono{font-family:sans-serif;font-weight:bold}fieldset{margin:0;padding:0;border:0}label,input[type="text"],#adv_code_search .search-page-label,input[type="password"],input[type="email"],input[type="number"],input[type="tel"],input[type="url"],textarea{font-size:13px}label{font-weight:bold}input[type="text"],#adv_code_search .search-page-label,input[type="password"],input[type="email"],input[type="number"],input[type="tel"],input[type="url"],textarea{min-height:34px;padding:7px 8px;outline:none;color:#333;background-color:#fff;background-repeat:no-repeat;background-position:right center;border:1px solid #ccc;border-radius:3px;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075);-moz-box-sizing:border-box;box-sizing:border-box;transition:all 0.15s ease-in;-webkit-transition:all 0.15s ease-in 0;vertical-align:middle}input[type="text"].focus,#adv_code_search .focus.search-page-label,input[type="text"]:focus,.focused .drag-and-drop,#adv_code_search .search-page-label:focus,input[type="password"].focus,input[type="password"]:focus,input[type="email"].focus,input[type="email"]:focus,input[type="number"].focus,input[type="number"]:focus,input[type="tel"].focus,input[type="tel"]:focus,input[type="url"].focus,input[type="url"]:focus,textarea.focus,textarea:focus{border-color:#51a7e8;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(81,167,232,0.5)}::-webkit-input-placeholder,:-moz-placeholder{color:#aaa}::-webkit-validation-bubble-message{color:#fff;background:#9c2400;border:0;border-radius:3px;font-size:12px;-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.1)}input::-webkit-validation-bubble-icon{display:none}::-webkit-validation-bubble-arrow{background-color:#9c2400;border:solid 1px #9c2400;-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.1)}input.input-mini{min-height:24px;padding-top:4px;padding-bottom:4px;font-size:12px}.input-block{display:block;width:100%}dl.form{margin:15px 0}dl.form input[type="text"],dl.form #adv_code_search .search-page-label,#adv_code_search dl.form .search-page-label,dl.form input[type="password"],dl.form input[type="email"],dl.form textarea{background-color:#fafafa}dl.form input[type="text"]:focus,dl.form .focused .drag-and-drop,.focused dl.form .drag-and-drop,dl.form #adv_code_search .search-page-label:focus,#adv_code_search dl.form .search-page-label:focus,dl.form input[type="password"]:focus,dl.form input[type="email"]:focus,dl.form textarea:focus{background-color:#fff}dl.form>dt{margin:0 0 6px 0}dl.form>dt label{position:relative}dl.form.flattened>dt{float:left;line-height:32px;margin:0}dl.form.flattened>dd{line-height:32px}dl.form>dd input[type="text"],dl.form>dd #adv_code_search .search-page-label,#adv_code_search dl.form>dd .search-page-label,dl.form>dd input[type="password"],dl.form>dd input[type="email"]{margin-right:5px;width:440px;max-width:100%;background-position-x:98%}dl.form>dd input[type="text"].short,dl.form>dd #adv_code_search .short.search-page-label,#adv_code_search dl.form>dd .short.search-page-label,dl.form>dd input[type="password"].short,dl.form>dd input[type="email"].short{width:250px}dl.form>dd input[type="text"].shorter,dl.form>dd #adv_code_search .shorter.search-page-label,#adv_code_search dl.form>dd .shorter.search-page-label,dl.form>dd input[type="password"].shorter,dl.form>dd input[type="email"].shorter{width:130px}dl.form>dd input[type="text"].long,dl.form>dd #adv_code_search .long.search-page-label,#adv_code_search dl.form>dd .long.search-page-label,dl.form>dd input[type="password"].long,dl.form>dd input[type="email"].long{width:100%}dl.form>dd input[type="text"].is-autocheck-loading,dl.form>dd #adv_code_search .is-autocheck-loading.search-page-label,#adv_code_search dl.form>dd .is-autocheck-loading.search-page-label,dl.form>dd input[type="password"].is-autocheck-loading,dl.form>dd input[type="email"].is-autocheck-loading{background-image:url("/images/spinners/octocat-spinner-32.gif?ca28a0dd");background-size:16px}dl.form>dd input[type="text"].is-autocheck-successful,dl.form>dd #adv_code_search .is-autocheck-successful.search-page-label,#adv_code_search dl.form>dd .is-autocheck-successful.search-page-label,dl.form>dd input[type="password"].is-autocheck-successful,dl.form>dd input[type="email"].is-autocheck-successful{background-image:url("/images/modules/ajax/success.png?0fe289ae")}dl.form>dd input[type="text"].is-autocheck-errored,dl.form>dd #adv_code_search .is-autocheck-errored.search-page-label,#adv_code_search dl.form>dd .is-autocheck-errored.search-page-label,dl.form>dd input[type="password"].is-autocheck-errored,dl.form>dd input[type="email"].is-autocheck-errored{background-image:url("/images/modules/ajax/error.png?ac4dcc78")}dl.form>dd textarea{width:100%;height:200px;min-height:200px}dl.form>dd textarea.short{height:50px;min-height:50px}dl.form>dd p.note{margin:4px 0 2px 0;font-size:12px;min-height:17px;color:#777}dl.form>dd p.note .spinner{vertical-align:middle;margin-right:3px}dl.form>dd h4{margin:4px 0 0 0}dl.form>dd h4.is-error{color:#bd2c00}dl.form>dd h4.is-success{color:#6cc644}dl.form>dd h4+p.note{margin-top:0}dl.form.required>dt>label:after{content:"*";color:#9f1006;padding-left:5px}.form-checkbox{margin:15px 0;padding-left:20px;vertical-align:middle}.form-checkbox label em.highlight{position:relative;left:-4px;padding:2px 4px;font-style:normal;background:#fffbdc;border-radius:3px}.form-checkbox input[type=checkbox],.form-checkbox input[type=radio]{float:left;margin:2px 0 0 -20px;vertical-align:middle}.form-checkbox .note{margin:0;display:block;font-size:12px;font-weight:normal;color:#666}.form-cards{margin:0 0 15px;height:31px}.form-cards>.cards{margin:0}.form-cards>.cards>li{list-style-type:none;float:left;margin:0 4px 0 0}.form-cards>.cards>li.text{font-size:11px;color:#999;line-height:31px}.form-cards>.cards .card{float:left;width:47px;height:31px;text-indent:-9999px;background-position:0 0;background-image:url("/images/modules/pricing/credit-cards-@1x.png?cd91cbfa")}.form-cards>.cards .card.visa{background-position:0 0}.form-cards>.cards .card.american_express{background-position:-50px 0}.form-cards>.cards .card.master{background-position:-100px 0}.form-cards>.cards .card.discover{background-position:-150px 0}.form-cards>.cards .card.jcb{background-position:-200px 0}.form-cards>.cards .card.diners_club{background-position:-250px 0}.form-cards>.cards .card.disabled{opacity:.3}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.form-cards>.cards .card{background-image:url("/images/modules/pricing/credit-cards-@2x.png?68bc3c82");background-size:300px 31px}}dl.form .success,dl.form .error,dl.form .indicator{display:none;font-size:12px;font-weight:bold}dl.form.loading{opacity:0.5}dl.form.loading .indicator{display:inline}dl.form.successful .success{display:inline;color:#339900}dl.form.errored>dt label{color:#990000}dl.form.errored .error{display:inline;color:#990000}dl.form.errored dd.error,dl.form.errored dd.warning{display:inline-block;padding:5px;font-size:11px;color:#494620;background:#f7ea57;border:1px solid #c0b536;border-top-color:#fff;border-bottom-right-radius:3px;border-bottom-left-radius:3px}dl.form.warn .warning{display:inline;color:#990000}dl.form.warn dd.warning{display:inline-block;padding:5px;font-size:11px;color:#494620;background:#f7ea57;border:1px solid #c0b536;border-top-color:#fff;border-bottom-right-radius:3px;border-bottom-left-radius:3px}dl.form .form-note{margin-top:-1px;display:inline-block;padding:5px;font-size:11px;color:#494620;background:#f7ea57;border:1px solid #c0b536;border-top-color:#fff;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.hfields{margin:15px 0}.hfields:before,.hfields:after{content:" ";display:table}.hfields:after{clear:both}.hfields dl.form{float:left;margin:0 30px 0 0}.hfields dl.form>dt label{display:inline-block;margin:5px 0 0 0;color:#666}.hfields dl.form>dt label img{position:relative;top:-2px}.hfields .button{float:left;margin:23px 25px 0 -20px}.hfields select{margin-top:5px}.fieldgroup .fields dl.form:first-child{margin-top:0}html.no-dnd-uploads .drag-and-drop{display:none}html.no-dnd-uploads .upload-enabled textarea{border-bottom:1px solid #ddd}.drag-and-drop{margin:0;padding:7px 10px;color:#aaa;font-size:13px;line-height:16px;background-color:#fafafa;border:1px solid #ccc;border-top:0;border-bottom-left-radius:3px;border-bottom-right-radius:3px;transition:all 0.15s ease-in;-webkit-transition:all 0.15s ease-in 0;-moz-box-sizing:border-box;box-sizing:border-box}.drag-and-drop .manual-file-chooser{position:absolute;width:240px;margin-left:-80px;opacity:0.0001;cursor:pointer}.drag-and-drop .manual-file-chooser:hover+.manual-file-chooser-text{text-decoration:underline}.drag-and-drop .default,.drag-and-drop .loading,.drag-and-drop .error{display:none}.drag-and-drop .error{color:#bd2c00}.is-default .drag-and-drop .default{display:inline-block}.is-uploading .drag-and-drop .loading{display:inline-block}.is-uploading .drag-and-drop .loading img{vertical-align:top}.is-bad-file .drag-and-drop .bad-file{display:inline-block}.is-too-big .drag-and-drop .too-big{display:inline-block}.is-failed .drag-and-drop .failed-request{display:inline-block}.upload-enabled textarea{border-bottom:1px dashed #ddd;border-bottom-left-radius:0;border-bottom-right-radius:0;display:block}.focused .drag-and-drop{box-shadow:rgba(81,167,232,0.5) 0 0 3px}.dragover textarea,.dragover .drag-and-drop{box-shadow:#c9ff00 0 0 3px}.previewable-comment-form{position:relative}.previewable-comment-form .tabnav{position:relative;padding:10px 10px 0}.previewable-comment-form .comment{border:1px solid #CACACA}.previewable-comment-form .comment-header .comment-header-actions{display:none}.previewable-comment-form .comment-form-error{margin-bottom:10px}.previewable-comment-form .write-content,.previewable-comment-form .preview-content{display:none;padding:0 10px 10px}.previewable-comment-form.write-selected .write-content,.previewable-comment-form.preview-selected .preview-content{display:block}.previewable-comment-form textarea{display:block;width:100%;min-height:100px;max-height:500px;padding:10px;resize:vertical}.previewable-comment-form textarea#fullscreen-contents:focus{border:none;box-shadow:none}div.composer{margin-top:0}div.composer input[type="text"],div.composer #adv_code_search .search-page-label,#adv_code_search div.composer .search-page-label{display:block;width:100%;max-width:100%}div.composer dl.form{margin:0}div.composer dl.form input[type="text"],div.composer dl.form #adv_code_search .search-page-label,#adv_code_search div.composer dl.form .search-page-label{width:100%}div.composer .contributing{margin:0;padding:10px 0;font-weight:bold;text-align:center;border-bottom:1px solid #ddd;background:#ffc}div.composer .discussion-bubble{margin-top:0}div.composer .comment-content{background:inherit}div.composer .comment-header{display:none}div.composer .comment-body{padding:4px 6px}div.composer .comment{border:0}div.composer .composer-infobar{height:35px;border-bottom:1px solid #ddd;padding:0 10px;margin-bottom:10px}div.composer .tabnav{margin:0 0 10px}.infobar-widget.milestone{position:relative;float:right}.infobar-widget.milestone .select-menu-modal-holder{right:0}.infobar-widget.assignee{float:left}.infobar-widget.assignee .css-truncate-target{max-width:110px}.infobar-widget .text,.infobar-widget .avatar,.infobar-widget .select-menu{display:inline-block;vertical-align:top}.infobar-widget .text{margin-top:3px}.infobar-widget .text a{color:#333;font-weight:bold}.infobar-widget .progress-bar{width:200px;line-height:18px;overflow:hidden}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.input-group{display:table}.input-group input{width:100%;position:relative}.input-group input:focus{z-index:2}.input-group input[type="text"]+.minibutton,.input-group #adv_code_search .search-page-label+.minibutton,#adv_code_search .input-group .search-page-label+.minibutton{margin-left:0}.input-group input,.input-group-button{display:table-cell}.input-group-button{width:1%;vertical-align:middle}.input-group input:first-child,.input-group-button:first-child .button,.input-group-button:first-child .minibutton{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-button:first-child .button,.input-group-button:first-child .minibutton{margin-right:-1px}.input-group input:last-child,.input-group-button:last-child .button,.input-group-button:last-child .minibutton{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-button:last-child .button,.input-group-button:last-child .minibutton{margin-left:-1px}.fieldgroup{position:relative;margin-top:10px}.sidebar .fieldgroup+.fieldgroup{margin-top:40px}.fieldgroup h2,h2.account{margin:15px 0 0 0;font-size:18px;font-weight:normal;color:#666}p.explain{font-size:12px;color:#666;position:relative}p.explain strong{color:#333}p.explain .octicon{margin-right:5px;color:#bbb}p.explain .minibutton{float:right;top:-4px}.fieldgroup p.explain{margin:0}.options-content p.explain{margin-top:0;border-top:1px solid #ddd;padding:10px 10px 0 10px}.fieldgroup .fields{margin:10px 0 0 0}.fieldgroup p.addlink{margin:15px 0;font-size:14px;font-weight:bold}.fieldgroup p.checkbox label{margin-left:5px}.fieldgroup p.checkbox .succeed{margin-left:10px;font-weight:normal;color:#33cc00}.fieldgroup p.danger{margin:15px 0;font-weight:bold;color:#cc0000}.fieldgroup p:first-child{margin-top:0}.fieldgroup p.extra{margin:-8px 0 15px 0;font-size:12px;color:#666}.fieldgroup p.legal{margin:15px 0;font-size:14px;font-weight:bold}.fieldgroup div.error{margin:10px 0 0 0;padding:10px;color:#fff;font-weight:bold;background:#aa0000;border-radius:4px;-webkit-font-smoothing:antialiased}.fieldgroup div.error p{margin:0}.fieldgroup div.error p+p{margin-top:10px}ul.fieldpills{position:relative;margin:0}ul.fieldpills li{position:relative;list-style-type:none;margin:3px 0;min-height:24px;line-height:24px;padding:4px 5px;background:#eee;font-size:12px;font-weight:bold;color:#333;border:1px solid #ddd;border-radius:3px}ul.fieldpills li:first-child{margin-top:0}ul.fieldpills li:hover{background-color:#f5f5f5;border-color:#ccc}ul.fieldpills li .remove-close{position:absolute;top:50%;right:10px;margin-top:-9px;text-decoration:none;color:#666}ul.fieldpills li .remove-close:hover{color:#333}ul.fieldpills li img.remove{background:none}ul.fieldpills li .dingus{position:absolute;top:50%;right:10px;margin-top:-9px;text-indent:-9999px;text-decoration:none}.add-pill-form{margin:15px 0;padding:4px 5px;background:#f5f5f5;font-size:12px;color:#333;border:1px solid #ddd;border-radius:5px}.add-pill-form input[type=text]{font-size:14px;width:350px;padding:2px 5px;color:#666}.equacols .add-pill-form input[type=text]{width:332px}.add-pill-form img{vertical-align:middle;margin:0 5px}.add-pill-form .error_box{margin:5px 0 0 0;padding:0;border:none;background:transparent;color:#cc0000;font-size:12px}.add-pill-form label{margin:12px 0 2px 0;display:block;font-weight:bold;color:#333}.add-pill-form label:first-child{margin-top:0}.add-pill-form textarea.key_value{font-size:11px;font-family:Monaco, "Liberation Mono", Courier, monospace;width:95%;height:120px}.add-pill-form .form-actions{margin-top:10px;text-align:left}.tabnav{margin:0 0 15px 0;border-bottom:1px solid #ddd;-moz-box-sizing:border-box;box-sizing:border-box}.tabnav .tabnav-tabs{display:inline-block}.tabnav .tabnav-tabs>li{display:inline-block;margin-bottom:-1px}.tabnav-tab{display:inline-block;padding:8px 12px 7px;border:1px solid transparent;border-bottom:0;font-size:14px;line-height:20px;color:#666;text-decoration:none}.tabnav-tab.selected{border-color:#ddd;border-radius:3px 3px 0 0;background-color:#fff;color:#333}.tabnav-tab:hover{text-decoration:none}.tabnav .counter{display:inline-block;margin:0 0 0 5px;padding:2px 5px 3px 5px;font-size:10px;font-weight:bold;line-height:1;color:#666;background-color:#e5e5e5;border-radius:10px}.tabnav .counter.blank{display:none}.dashboard-tabs{position:relative;margin-bottom:20px;font-size:12px;font-weight:bold;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border:1px solid #eaeaea;border-bottom-color:#cacaca;border-radius:3px}.dashboard-tabs li{list-style-type:none;margin:0;display:table-cell;width:1%}.dashboard-tabs li:first-child a{border-left:none;border-bottom-left-radius:3px}.dashboard-tabs li:first-child a:hover,.dashboard-tabs li:first-child a.selected{border-top-left-radius:3px}.dashboard-tabs li:last-child a{border-right:none;border-bottom-right-radius:3px}.dashboard-tabs li:last-child a:hover,.dashboard-tabs li:last-child a.selected{border-top-right-radius:3px}.dashboard-tabs a{display:block;text-align:center;line-height:35px;font-size:12px;color:#777;text-decoration:none;text-shadow:0 1px 0 white;border-right:1px solid #eee;border-right-color:rgba(0,0,0,0.04);border-left:1px solid #fcfcfc;border-left-color:rgba(255,255,255,0.7);border-bottom:2px solid #DADADA}.dashboard-tabs a:hover{color:#4183c4;border-bottom:2px solid #CFDCE8;background-color:#dce6ef;background-image:-moz-linear-gradient(#fafbfd, #dce6ef);background-image:-webkit-linear-gradient(#fafbfd, #dce6ef);background-image:linear-gradient(#fafbfd, #dce6ef);background-repeat:repeat-x}.dashboard-tabs a.selected,.dashboard-tabs a.selected:hover{color:#000;background-color:#ebebeb;background-image:-moz-linear-gradient(#fcfcfc, #ebebeb);background-image:-webkit-linear-gradient(#fcfcfc, #ebebeb);background-image:linear-gradient(#fcfcfc, #ebebeb);background-repeat:repeat-x;border-bottom:2px solid #D26911}.dashboard-tabs a .counter{position:relative;top:-1px;display:inline-block;margin:0 0 0 5px;padding:0 8px 1px 8px;height:auto;font-family:Helvetica, arial, freesans, clean, sans-serif;font-size:10px;line-height:14px;text-align:center;vertical-align:text-top;color:#777;background:#fff;border-top:1px solid #ccc;border-radius:8px}.tabnav-right{position:relative;display:block;float:right}.tabnav-widget{display:inline-block;vertical-align:top}.tabnav-widget+ul.tabnav-tabs{margin-left:10px}.tabnav-widget.text{margin-top:12px;font-size:11px;color:#666}.tabnav-widget.search .spinner{vertical-align:middle;position:absolute;top:7px;left:-22px;margin-right:8px}.tabnav-widget.search .search-link{display:inline-block;height:26px;padding-right:5px;line-height:26px;font-weight:200;font-size:13px;color:#666;vertical-align:top}.tabnav-widget.search .fieldwrap{display:inline-block;height:26px;border-radius:4px}.tabnav-widget.search .fieldwrap>input,.tabnav-widget.search .fieldwrap>button{display:inline-block}.tabnav-widget.search input{padding:0 4px 0 4px;font-size:12px;min-height:26px;border-radius:3px 0 0 3px;vertical-align:top}.tabnav-widget.search .minibutton{position:relative;margin-left:0;height:24px;vertical-align:top;padding:0 8px;border-left:none;border-radius:0 3px 3px 0;-moz-box-sizing:content-box;box-sizing:content-box}.tabnav-widget.search .minibutton:hover{color:#fff}ul.filter-list{list-style-type:none}ul.filter-list.small .filter-item{font-size:12px;padding:4px 10px;margin:0 0 2px 0}ul.filter-list .filter-item{display:block;padding:8px 10px;margin:0 0 5px 0;font-size:14px;border-radius:3px;text-decoration:none;color:#777;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}ul.filter-list .filter-item:hover{background:#eee}ul.filter-list .filter-item.selected{color:#fff;background:#4183c4}ul.filter-list .filter-item.selected .octicon-remove-close{float:right;opacity:0.8;display:inline-block}ul.filter-list .filter-item .count{font-weight:bold;float:right}ul.filter-list.pjax-active .filter-item{color:#777;background:transparent}ul.filter-list.pjax-active .filter-item.pjax-active{color:#fff;background:#4183c4}ul.color-label-list.editable .color{width:14px}ul.color-label-list.editable .color:hover{background:transparent url("/images/icons/arrow-down.png?595b5c55") 1px 2px no-repeat}ul.color-label-list.editable .octicon-remove-close{display:inline-block;color:#AAA}ul.color-label-list.editable .octicon-remove-close:hover{color:#ba3d37}ul.color-label-list .color-label{line-height:16px}ul.color-label-list .color-label:hover .octicon-remove-close{opacity:1}ul.color-label-list .color-label.selected{background:98% 5px no-repeat transparent;-webkit-font-smoothing:antialiased}ul.color-label-list .color-label.selected .count,ul.color-label-list .color-label.selected .color{display:none}ul.color-label-list .color-label.selected .octicon-remove-close{display:inline-block}ul.color-label-list .color-label.zeroed,ul.color-label-list .color-label.zeroed .count{color:#999}ul.color-label-list .count{color:#333}ul.color-label-list .name a{color:#333}ul.color-label-list .color{display:block;float:left;margin-left:-5px;margin-right:4px;width:6px;height:14px;border-radius:2px}ul.color-label-list .octicon-remove-close{display:none;float:right;opacity:0.8}ul.color-label-list .nolabels{margin:10px 0;font-size:11px;color:#666}.section-heading{margin-top:20px;margin-bottom:20px}.section-heading:before,.section-heading:after{content:" ";display:table}.section-heading:after{clear:both}.section-heading-title{margin-top:0;margin-bottom:0;font-size:18px;font-weight:normal;line-height:1.444}.section-heading-title .separator{color:#999}.section-heading-title a.selected{color:#333;text-decoration:none;cursor:pointer}.section-heading-back{font-weight:normal;color:#777}.section-heading-back:hover{text-decoration:none;color:#4183c4}.section-heading-back .octicon{vertical-align:1px}.section-actions{float:right}.section-heading-search{float:right}.section-heading-search .input-group{width:200px;margin-left:10px}.section-heading-search .input-group .minibutton .octicon{margin-right:0}.plans-next{list-style:none;width:655px}.plans-next .plan{float:left;width:121px;padding:0;margin:0;border:0}.plans-next .plan h3{font-size:15px;text-align:center;padding:29px 0 10px 0;margin:0 0 10px 0;border-bottom:1px solid #ddd}.plans-next .plan.active{border-radius:3px;width:158px;border:1px solid #dedede;box-shadow:0 0 8px rgba(120,163,193,0.2)}.plans-next .plan.active h3{margin:0.5em 0;padding:0;font-family:"Helvetica-Light";font-weight:300;font-size:18px;border-bottom:none;font-weight:normal}.plans-next .plan.active ul{margin:0 0 2em 0}.plans-next ul{list-style:none}.plans-next ul li{text-align:center;margin:1em 0;color:#444}.plans-next ul strong{color:#222;font-weight:bold;font-size:16px}.plans-next ul small{font-size:12px;color:#999}.plans-next ul small strong{font-size:18px;color:#999}.plans-next .current-plan{position:relative;left:-1px;top:-1px;width:160px;background-color:#226fbb;background-image:-moz-linear-gradient(#329ed1, #226fbb);background-image:-webkit-linear-gradient(#329ed1, #226fbb);background-image:linear-gradient(#329ed1, #226fbb);background-repeat:repeat-x;border-top-left-radius:3px;border-top-right-radius:3px;display:block;padding:3px 0;margin:0 0 5px 0;border-bottom:1px solid #194a7b;color:#fff;font-weight:bold;font-size:10px;text-align:center;text-transform:uppercase;text-shadow:0 -1px 0 #105095}.payment{border-radius:3px;padding:10px;background:#f8f8f8;text-align:center;margin:0 0 20px 0;border:1px solid #ddd}.payment p{margin:0 0 5px 0}.payment ul{list-style:none}.payment ul li{display:inline-block;margin:0 10px 0 0}ul.notification-routing strong{color:#000}ul.notification-routing .notification-email{float:right}ul.notification-routing .notification-email .edit-link{margin-right:10px;font-weight:bold}ul.notification-routing .notification-email input[type=text]{width:200px;padding:2px;color:#444}ul.notification-routing .notification-email form{display:none}ul.notification-routing .notification-email form .minibutton{float:none;margin:0}ul.notification-routing .notification-email.open form{display:block}ul.notification-routing .notification-email.open .email-display{display:none}table.notifications{margin:0 0 15px 0;width:100%;border-spacing:0;border-collapse:collapse;font-size:12px;color:#666}table.notifications th{padding:15px 0 5px 0;text-align:left;font-size:11px;text-transform:uppercase;color:#000;border-bottom:1px solid #ccc}table.notifications td{padding:2px 0;border-bottom:1px solid #ddd}table.notifications td.checkbox{width:1%;text-align:center}p.notification-settings{margin:15px 0;font-size:12px;color:#333}p.notification-settings.on .octicon-radio-tower{color:#fa9e00}p.notification-settings strong{font-weight:bold}p.notification-settings em{font-style:normal;color:#666}p.notification-settings.on .subscription-on,p.notification-settings .subscription-off{display:inline}p.notification-settings .subscription-on,p.notification-settings.on .subscription-off{display:none}.page-notifications p.notification-settings{margin-bottom:0;padding:8px 5px 8px 25px;background-color:#eee;background-position:5px 50%;border:1px solid #d5d5d5;border-right-color:#e5e5e5;border-bottom-color:#e5e5e5;border-radius:3px}p.notification-settings label{margin-right:5px}.marketing-nav{position:absolute;bottom:0;right:0}.marketing-nav li,.marketing-nav a{display:inline-block}.marketing-nav a{padding:0 0 14px;margin:0 10px 0;border-bottom:3px solid transparent;color:#666;font-size:14px;text-decoration:none}.marketing-nav a.selected{color:#333;font-weight:bold;border-bottom-color:#d26911}.date_selector{width:auto;height:auto;border:none;background:none;margin:0;padding:0;text-align:left;text-decoration:none;box-shadow:0 0 13px rgba(0,0,0,0.31);background:#fff;border:1px solid #c1c1c1;padding:5px;margin-top:10px;z-index:9;width:240px;border-radius:5px;display:none}.date_selector.no_shadow{box-shadow:none}.date_selector_ieframe{position:absolute;z-index:99999;display:none}.date_selector .nav{width:17.5em}.date_selector .month_nav,.date_selector .year_nav{margin:0 0 3px 0;padding:0;display:block;position:relative;text-align:center}.date_selector .month_nav{float:left;width:55%}.date_selector .year_nav{float:right;width:35%;margin-right:-8px}.date_selector .month_name,.date_selector .year_name{font-weight:bold;line-height:20px}.date_selector .button{display:block;position:absolute;top:0;width:18px;height:18px;line-height:17px;font-weight:bold;color:#003C78;text-align:center;font-size:120%;overflow:hidden;border:1px solid #F2F2F2}.date_selector .button:hover,.date_selector .button.hover{background:none;color:#003C78;cursor:pointer;border-color:#ccc}.date_selector .prev{left:0}.date_selector .next{right:0}.date_selector table{clear:both}.date_selector th,.date_selector td{width:2.5em;height:2em;padding:0;text-align:center;color:black}.date_selector td{border:1px solid #ccc;line-height:2em;text-align:center;white-space:nowrap;color:#003C78;background:white}.date_selector td.today{background:#FFFEB3}.date_selector td.unselected_month{color:#ccc}.date_selector td.selectable_day{cursor:pointer}.date_selector td.selected{background:#D8DFE5;font-weight:bold}.date_selector td.selectable_day:hover,.date_selector td.selectable_day.hover{background:#003C78;color:white}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;text-align:left;white-space:normal;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.tipsy-s{margin-top:-10px}.popover.tipsy-w{margin-left:10px}.popover.tipsy-n{margin-top:10px}.popover.tipsy-e{margin-left:-10px}.popover .tipsy-arrow,.popover .tipsy-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .tipsy-arrow{border-width:11px}.popover .tipsy-arrow:after{border-width:10px;content:""}.popover.tipsy-s .tipsy-arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.tipsy-s .tipsy-arrow:after{bottom:1px;margin-left:-10px;border-top-color:#ffffff;border-bottom-width:0}.popover.tipsy-w .tipsy-arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.tipsy-w .tipsy-arrow:after{bottom:-10px;left:1px;border-right-color:#ffffff;border-left-width:0}.popover.tipsy-n .tipsy-arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.tipsy-n .tipsy-arrow:after{top:1px;margin-left:-10px;border-bottom-color:#ffffff;border-top-width:0}.popover.tipsy-e .tipsy-arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.tipsy-e .tipsy-arrow:after{right:1px;bottom:-10px;border-left-color:#ffffff;border-right-width:0}.popover .tipsy-inner{max-width:initial;color:inherit;background-color:inherit;padding:inherit;text-align:inherit}.tipsy{font-size:10px;position:absolute;padding:5px;z-index:100000}.tipsy-inner{background-color:#000;color:#FFF;max-width:200px;padding:5px 8px;text-align:center;line-height:1.5}.fullscreen-overlay-enabled.dark-theme .tipsy-inner{background-color:#FFF;color:#000}.tipsy-inner{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:6px dashed #000}.tipsy-arrow-n{border-bottom-color:#000}.tipsy-arrow-s{border-top-color:#000}.tipsy-arrow-e{border-left-color:#000}.tipsy-arrow-w{border-right-color:#000}.fullscreen-overlay-enabled.dark-theme .tipsy-arrow-n{border-bottom-color:#FFF}.fullscreen-overlay-enabled.dark-theme .tipsy-arrow-s{border-top-color:#FFF}.fullscreen-overlay-enabled.dark-theme .tipsy-arrow-e{border-left-color:#FFF}.fullscreen-overlay-enabled.dark-theme .tipsy-arrow-w{border-right-color:#FFF}.tipsy-n .tipsy-arrow{top:0px;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-nw .tipsy-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-sw .tipsy-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-se .tipsy-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-e .tipsy-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.tipsy-w .tipsy-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.code-frequency .addition{fill-opacity:1;fill:#6cc644}.code-frequency .deletion{fill-opacity:1;fill:#bd2c00}.cadd{font-weight:bold;color:#6cc644}.cdel{font-weight:bold;color:#bd2c00}.commit-activity-graphs .dots{display:none}#commit-activity-master{margin-top:20px}#commit-activity-master #commit-activity-master-head{background:#fff;padding:10px;text-align:center;margin:-16px auto 0 auto;width:140px;font-size:14px;font-weight:bold;color:#333;text-transform:uppercase;letter-spacing:0.2em}.is-graph-loading #commit-activity-master{display:none}rect{shape-rendering:crispedges}rect.max{fill:#ffc644}g.bar{fill:#1db34f}g.mini,rect.g-mini{fill:#f17f49}g.active rect{fill:#bd380f}circle.focus{fill:#555}.dot text{stroke:none;fill:#555}.tint-box{border-radius:6px;background:#f3f3f3;position:relative;margin-bottom:10px}.tint-box.transparent{background:#fff}.tint-box .activity{margin-top:0;padding-top:100px}.contrib-data{margin:0 0 10px 0;list-style:none;padding:0}#contributors .person{-moz-box-sizing:border-box;box-sizing:border-box;float:left;width:450px;border-radius:2px;margin:10px;border:1px solid #ddd}#contributors .person:nth-child(odd){margin-left:0}#contributors .person:nth-child(even){margin-right:0}#contributors .person h3{margin:0;border-bottom:1px solid #eee;padding:10px;line-height:100%}#contributors .person h3:before,#contributors .person h3:after{content:" ";display:table}#contributors .person h3:after{clear:both}#contributors .person .avatar{width:32px;height:32px;border-radius:3px;float:left;border:1px solid #bbb;margin-right:5px;-moz-box-sizing:border-box;box-sizing:border-box}#contributors .person .aname{font-weight:bold}#contributors .person .ameta{display:block;font-size:12px;color:#ccc;margin-top:3px;font-weight:normal}#contributors .person .rank{display:inline-block;float:right;font-size:12px;color:#bbb}#contributors .person .cmt{color:#999}#contributors .person .d{color:#bd2c00}#contributors .person .a{color:#6cc644}#contributors .person .spark{display:block;background:#f7f7f7}#contributors .person path{fill:#f17f49}#contributors .person .midlabel{fill:#ccc}#graph-shots:after{content:".";display:block;clear:both;visibility:hidden;height:0}#graph-shots li{float:left;width:450px;margin:10px;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:2px;border:1px solid #ddd;list-style:none}#graph-shots li:nth-child(odd){margin-left:0}#graph-shots li:nth-child(even){margin-right:0}#graph-shots li h3{margin:0;line-height:100%;padding:10px 10px 5px 10px}#graph-shots li p{line-height:100%;display:block;border-bottom:1px solid #eee;margin:0;padding:0 10px 10px 10px;font-size:15px;color:#999}#graph-shots li>a{display:block;text-indent:100%;white-space:nowrap;overflow:hidden;background:url("/images/modules/graphs/graph-sprites.png?eb40e4ba") 0 0 no-repeat;background-size:896px 840px;height:124px}#graph-shots li>a:hover{background-position-x:-448px}li#g-contributors a{background-position:0 0}li#g-commits a{background-position:0 -120px}li#g-code-frequency a{background-position:0 -240px}li#g-punchcard a{background-position:0 -480px}.axis{fill:#aaa;font-size:10px}.axis line{shape-rendering:crispedges;stroke:#eee}.axis path{display:none}.axis .zero line{stroke-width:1.5;stroke:#4183c4;stroke-dasharray:3 3}.graphs .is-graph-loading{min-height:500px}.graphs.wheader h2{padding:1px}.graphs text.axlabel{fill:#888;font-size:10px;font-family:"Helvetica Neue", Helvetica, Arial, sans-serif}.graphs text.axlabel.biglabel{font-size:11px;letter-spacing:0.09em}.graphs .area{fill:#1db34f;fill-opacity:0.5}.graphs .path{stroke:#1db34f;stroke-width:2px;stroke-opacity:1;fill:none}.graphs .dot{fill:#1db34f;stroke:#16873c;stroke-width:2px}.graphs .dot.padded{stroke:#fff;stroke-width:1px}.graphs .dot.padded circle:hover{fill:#4183C4}.graphs .d3-tip{fill:#333}.graphs .d3-tip text{fill:#fff;font-size:11px}.graphs .dir{font-size:12px;font-weight:normal;color:#555;line-height:100%;padding-top:5px;float:right}.graphs .selection rect{fill:#333;fill-opacity:0.1;stroke:#333;stroke-width:1px;stroke-opacity:0.4;shape-rendering:crispedges;stroke-dasharray:3 3}.graph-filter{padding-bottom:20px}.graph-filter h3{display:inline-block;margin:5px 0 0 0;padding:0}.graph-filter p.info{margin:0;padding:0;font-weight:normal;font-size:12px;color:#777}h3 .dash{color:#bbb}.graph-filter .select-menu{float:right;margin-top:12px}h2.ghead:after{content:".";height:0;display:block;visibility:hidden;clear:both}kbd{background-color:#dddddd;background-image:-moz-linear-gradient(#f1f1f1, #ddd);background-image:-webkit-linear-gradient(#f1f1f1, #ddd);background-image:linear-gradient(#f1f1f1, #ddd);background-repeat:repeat-x;border-radius:2px;border:1px solid #ddd;border-bottom-color:#ccc;border-right-color:#ccc;padding:1px 4px;line-height:10px;font-family:"Helvetica Neue", Helvetica, Arial, sans-serif}.graph-canvas .activity{text-align:center;width:400px;margin:100px auto 0 auto;color:#444;border-radius:3px;padding:10px}.graph-canvas .error{color:#900;background:#feeaea;padding:10px;border-radius:3px}.graph-canvas .dots{margin:0 auto}.graph-canvas .graph-loading,.graph-canvas .graph-error,.graph-canvas .graph-empty,.graph-canvas .graph-crunching{display:none}.graph-canvas>.activity{display:none}.graph-canvas.is-graph-loading>.activity,.graph-canvas.is-graph-empty>.activity,.graph-canvas.is-graph-error>.activity{display:block}.graph-canvas.is-graph-loading .graph-loading,.graph-canvas.is-graph-crunching .graph-crunching,.graph-canvas.is-graph-empty .graph-empty,.graph-canvas.is-graph-load-error .graph-error{display:block}.svg-tip{padding:10px;background:#222;color:#bbb;font-size:12px;width:140px;position:absolute;z-index:99999;text-align:center;border-radius:2px;box-shadow:2px 2px 2px rgba(0,0,0,0.2);display:none}.svg-tip strong{color:#ddd}.svg-tip.is-visible{display:block}.svg-tip:after{box-sizing:border-box;display:inline;font-size:12px;width:100%;line-height:1;color:rgba(0,0,0,0.8);content:"\25BC";position:absolute;text-align:center;-webkit-font-smoothing:antialiased}.svg-tip.n:after{text-shadow:2px 2px 2px rgba(0,0,0,0.2);margin:-2px 0 0 0;top:100%;left:0}#milestone-graph{position:relative;min-height:236px}#milestone-graph .dots{position:absolute;top:100px;left:48%;width:64px;height:64px;display:block}#milestone-graph rect.open{fill:#6cc644;shape-rendering:crispedges}#milestone-graph rect.closed{fill:#bd2c00}#milestone-graph .x line{stroke:#ccc}#graph-open-close{margin-top:-5px}.axis-backing{fill:#f1f1f1}.axis-backing-line{stroke:#ddd;stroke-width:1px;shape-rendering:crispedges}#total-events{border-bottom:1px solid #ddd;background:#f7f7f7}#total-events .x line{stroke:#ccc}path.events{stroke:orange;stroke-width:2px;fill:none}path.open-total{stroke:#6cc644;stroke-opacity:0.8;fill:none;stroke-dasharray:10 2;shape-rendering:crispedges}.issues-graph-title{margin:0;padding-left:20px;padding-top:10px}.milestone-stats .domain{display:none}.milestone-stats .legend{padding:0 0 10px 0;text-align:center;border-bottom:1px solid #eee}.milestone-stats .legend ul.legend-data{display:inline-block;margin:0 auto}.milestone-stats .legend ul.legend-data li{display:inline-block;color:#666;font-weight:bold;font-size:11px;margin-right:10px;border:none}.milestone-stats .legend span.color{width:10px;height:10px;display:inline-block;vertical-align:middle;margin-right:5px;margin-top:-2px;border-radius:1px}.milestone-stats .legend span.state-open{background:#6cc644}.milestone-stats .legend span.state-closed{background:#bd2c00}.activity-label{fill:#aaa;font-size:9px;letter-spacing:0.15em}.axis text{font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;font-size:11px;fill:#999}.axis .zero line{stroke:#ddd;stroke-width:1px;stroke-dasharray:0}.label{font-size:11px;fill:#555;stroke:none}circle.day{stroke-width:0;fill:#444}circle.day:hover{fill:#4183C4}circle.day.h0{display:none}line.axis{stroke-width:1;stroke:#eee;shape-rendering:crispedges}line.axis.even{stroke:#e0e0e0}.traffic-graph{min-height:150px}.traffic-graph .activity{margin-top:0}.traffic-graph .activity .dots{margin-top:40px}#top-domains .dots{margin:167px auto 0 auto;display:block}#top-domains .favicon{width:16px;height:16px}table.capped-list{width:100%;line-height:100%}table.capped-list th{text-align:left;padding:8px;border-bottom:1px solid #ddd;background:#f4f4f4}table.capped-list td{padding:8px;border-bottom:1px solid #eee;font-size:12px}table.capped-list td.label{overflow:hidden;white-space:nowrap;max-width:200px;text-overflow:ellipsis}table.capped-list th.middle,table.capped-list td.middle{text-align:center}table.capped-list .favicon{width:16px;height:16px;vertical-align:middle;margin:1px 5px 0 5px}table.capped-list .octicon{margin-right:10px;vertical-align:-1px;color:#555}table.capped-list tr:nth-child(even){background-color:#fcfcfc}table.capped-list.mini-icons .mini-icon{margin-right:5px;color:#555}.capped-box-grid .col{padding:10px}.traffic-graph-stats div{-moz-box-sizing:border-box;box-sizing:border-box;padding:10px 0 0 0;text-align:center;border-left:1px solid #ddd;border-top:1px solid #ddd;color:#999}.traffic-graph-stats div .lbl{display:block;font-weight:bold;padding:10px 0;color:#777;border-top:1px solid #f7f7f7;margin-top:10px;font-size:11px}.traffic-graph-stats div .num{font-weight:bold;font-size:16px;display:block;color:#333}.traffic-graph-stats div .visits,.traffic-graph-stats div .totals{color:#1db34f}.traffic-graph-stats div .uniques{color:#1d7fb3}.traffic-graph-stats div:first-child{border-left:none}.path.total{stroke:#1db34f;stroke-width:2}.path.unique{stroke:#1d7fb3;stroke-width:2}.totals circle{fill:#1db34f;stroke:#fff;stroke-width:2}.uniques circle{fill:#1d7fb3;stroke:#fff;stroke-width:2}.top-lists .is-loading{text-align:center;margin:40px}.top-lists .capped-box{width:448px;min-height:399px}.top-lists .capped-box h3 .favicon{float:right}.markdown-body{font-size:15px;line-height:1.7;overflow:hidden}.markdown-body>*:first-child{margin-top:0 !important}.markdown-body>*:last-child{margin-bottom:0 !important}.markdown-body a.absent{color:#c00}.markdown-body a.anchor{display:block;padding-right:6px;padding-left:30px;margin-left:-30px;cursor:pointer;position:absolute;top:0;left:0;bottom:0}.markdown-body a.anchor:focus{outline:none}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin:1em 0 15px;padding:0;font-weight:bold;line-height:1.7;cursor:text;position:relative}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{display:none;color:#000}.markdown-body h1:hover a.anchor,.markdown-body h2:hover a.anchor,.markdown-body h3:hover a.anchor,.markdown-body h4:hover a.anchor,.markdown-body h5:hover a.anchor,.markdown-body h6:hover a.anchor{text-decoration:none;line-height:1;padding-left:0;margin-left:-22px;top:15%}.markdown-body h1:hover a.anchor .octicon-link,.markdown-body h2:hover a.anchor .octicon-link,.markdown-body h3:hover a.anchor .octicon-link,.markdown-body h4:hover a.anchor .octicon-link,.markdown-body h5:hover a.anchor .octicon-link,.markdown-body h6:hover a.anchor .octicon-link{display:inline-block}.markdown-body h1 tt,.markdown-body h1 code,.markdown-body h2 tt,.markdown-body h2 code,.markdown-body h3 tt,.markdown-body h3 code,.markdown-body h4 tt,.markdown-body h4 code,.markdown-body h5 tt,.markdown-body h5 code,.markdown-body h6 tt,.markdown-body h6 code{font-size:inherit}.markdown-body h1{font-size:2.5em;border-bottom:1px solid #ddd}.markdown-body h2{font-size:2em;border-bottom:1px solid #eee}.markdown-body h3{font-size:1.5em}.markdown-body h4{font-size:1.2em}.markdown-body h5{font-size:1em}.markdown-body h6{color:#777;font-size:1em}.markdown-body p,.markdown-body blockquote,.markdown-body ul,.markdown-body ol,.markdown-body dl,.markdown-body table,.markdown-body pre{margin:15px 0}.markdown-body hr{background:transparent url("/assets/primer/markdown/dirty-shade-aa53f50177de6e9a016a801161874096327f9f80.png") repeat-x 0 0;border:0 none;color:#ccc;height:4px;padding:0;margin:15px 0}.markdown-body ul,.markdown-body ol{padding-left:30px}.markdown-body ul.no-list,.markdown-body ol.no-list{list-style-type:none;padding:0}.markdown-body ul ul,.markdown-body ul ol,.markdown-body ol ol,.markdown-body ol ul{margin-top:0;margin-bottom:0}.markdown-body dl{padding:0}.markdown-body dl dt{font-size:14px;font-weight:bold;font-style:italic;padding:0;margin-top:15px}.markdown-body dl dd{margin-bottom:15px;padding:0 15px}.markdown-body blockquote{border-left:4px solid #DDD;padding:0 15px;color:#777}.markdown-body blockquote>:first-child{margin-top:0px}.markdown-body blockquote>:last-child{margin-bottom:0px}.markdown-body table{width:100%;overflow:auto;display:block}.markdown-body table th{font-weight:bold}.markdown-body table th,.markdown-body table td{border:1px solid #ddd;padding:6px 13px}.markdown-body table tr{border-top:1px solid #ccc;background-color:#fff}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body img{max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{border:1px solid #ddd;display:block;float:left;overflow:hidden;margin:13px 0 0;padding:7px;width:auto}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{clear:both;color:#333;display:block;padding:5px 0 0}.markdown-body span.align-center{display:block;overflow:hidden;clear:both}.markdown-body span.align-center>span{display:block;overflow:hidden;margin:13px auto 0;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{display:block;overflow:hidden;clear:both}.markdown-body span.align-right>span{display:block;overflow:hidden;margin:13px 0 0;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;margin-right:13px;overflow:hidden;float:left}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;margin-left:13px;overflow:hidden;float:right}.markdown-body span.float-right>span{display:block;overflow:hidden;margin:13px auto 0;text-align:right}.markdown-body code,.markdown-body tt{margin:0 2px;padding:0px 5px;border:1px solid #ddd;background-color:#f8f8f8;border-radius:3px}.markdown-body code{white-space:nowrap}.markdown-body pre>code{margin:0;padding:0;white-space:pre;border:none;background:transparent}.markdown-body .highlight pre,.markdown-body pre{background-color:#f8f8f8;border:1px solid #ddd;font-size:13px;line-height:19px;overflow:auto;padding:6px 10px;border-radius:3px}.markdown-body pre code,.markdown-body pre tt{margin:0;padding:0;background-color:transparent;border:none}.highlight{background:#ffffff}.highlight .c{color:#999988;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{font-weight:bold}.highlight .o{font-weight:bold}.highlight .cm{color:#999988;font-style:italic}.highlight .cp{color:#999999;font-weight:bold}.highlight .c1{color:#999988;font-style:italic}.highlight .cs{color:#999999;font-weight:bold;font-style:italic}.highlight .gd{color:#000000;background-color:#ffdddd}.highlight .gd .x{color:#000000;background-color:#ffaaaa}.highlight .ge{font-style:italic}.highlight .gr{color:#aa0000}.highlight .gh{color:#999999}.highlight .gi{color:#000000;background-color:#ddffdd}.highlight .gi .x{color:#000000;background-color:#aaffaa}.highlight .go{color:#888888}.highlight .gp{color:#555555}.highlight .gs{font-weight:bold}.highlight .gu{color:#800080;font-weight:bold}.highlight .gt{color:#aa0000}.highlight .kc{font-weight:bold}.highlight .kd{font-weight:bold}.highlight .kn{font-weight:bold}.highlight .kp{font-weight:bold}.highlight .kr{font-weight:bold}.highlight .kt{color:#445588;font-weight:bold}.highlight .m{color:#009999}.highlight .s{color:#d14}.highlight .n{color:#333333}.highlight .na{color:#008080}.highlight .nb{color:#0086B3}.highlight .nc{color:#445588;font-weight:bold}.highlight .no{color:#008080}.highlight .ni{color:#800080}.highlight .ne{color:#990000;font-weight:bold}.highlight .nf{color:#990000;font-weight:bold}.highlight .nn{color:#555555}.highlight .nt{color:#000080}.highlight .nv{color:#008080}.highlight .ow{font-weight:bold}.highlight .w{color:#bbbbbb}.highlight .mf{color:#009999}.highlight .mh{color:#009999}.highlight .mi{color:#009999}.highlight .mo{color:#009999}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#d14}.highlight .se{color:#d14}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999999}.highlight .vc{color:#008080}.highlight .vg{color:#008080}.highlight .vi{color:#008080}.highlight .il{color:#009999}.highlight .gc{color:#999;background-color:#EAF2F5}.type-csharp .highlight .k{color:#0000FF}.type-csharp .highlight .kt{color:#0000FF}.type-csharp .highlight .nf{color:#000000;font-weight:normal}.type-csharp .highlight .nc{color:#2B91AF}.type-csharp .highlight .nn{color:#000000}.type-csharp .highlight .s{color:#A31515}.type-csharp .highlight .sc{color:#A31515}.button,.minibutton{position:relative;display:inline-block;padding:7px 15px;font-size:13px;font-weight:bold;color:#333;text-shadow:0 1px 0 rgba(255,255,255,0.9);white-space:nowrap;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border-radius:3px;border:1px solid #ddd;border-bottom-color:#c5c5c5;box-shadow:0 1px 3px rgba(0,0,0,0.05);vertical-align:middle;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:none}.button:hover,.button:active,.button.zeroclipboard-is-hover,.button.zeroclipboard-is-active,.minibutton:hover,.minibutton:active,.minibutton.zeroclipboard-is-hover,.minibutton.zeroclipboard-is-active{text-decoration:none;background-color:#dadada;background-image:-moz-linear-gradient(#eaeaea, #dadada);background-image:-webkit-linear-gradient(#eaeaea, #dadada);background-image:linear-gradient(#eaeaea, #dadada);background-repeat:repeat-x;border-color:#ccc #ccc #b5b5b5}.button:active,.button.selected,.button.zeroclipboard-is-active,.minibutton:active,.minibutton.selected,.context-menu-container.active .minibutton.switcher,.context-menu-container.active .context-button,.minibutton.zeroclipboard-is-active{background-color:#dadada;background-image:none;border-color:#b5b5b5;box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.button:disabled,.button:disabled:hover,.button.disabled,.button.disabled:hover,.minibutton:disabled,.minibutton:disabled:hover,.minibutton.disabled,.minibutton.disabled:hover{opacity:.5;color:#666;text-shadow:0 1px 0 rgba(255,255,255,0.9);background-image:none;background-color:#e5e5e5;border-color:#c5c5c5;cursor:default;box-shadow:none}.button.primary,.minibutton.primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#60b044;background-image:-moz-linear-gradient(#8add6d, #60b044);background-image:-webkit-linear-gradient(#8add6d, #60b044);background-image:linear-gradient(#8add6d, #60b044);background-repeat:repeat-x;border-color:#5ca941}.button.primary:hover,.minibutton.primary:hover{color:#fff;background-color:#569e3d;background-image:-moz-linear-gradient(#79d858, #569e3d);background-image:-webkit-linear-gradient(#79d858, #569e3d);background-image:linear-gradient(#79d858, #569e3d);background-repeat:repeat-x;border-color:#4a993e}.button.primary:active,.button.primary.selected,.minibutton.primary:active,.minibutton.primary.selected,.context-menu-container.active .primary.minibutton.switcher,.context-menu-container.active .primary.context-button{background-color:#569e3d;background-image:none;border-color:#418737}.button.primary:disabled,.button.primary:disabled:hover,.button.primary.disabled,.button.primary.disabled:hover,.minibutton.primary:disabled,.minibutton.primary:disabled:hover,.minibutton.primary.disabled,.minibutton.primary.disabled:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#60b044;background-image:-moz-linear-gradient(#8add6d, #60b044);background-image:-webkit-linear-gradient(#8add6d, #60b044);background-image:linear-gradient(#8add6d, #60b044);background-repeat:repeat-x;border-color:#74bb5a #74bb5a #509338}.button.danger,.minibutton.danger{color:#900}.button.danger:hover,.minibutton.danger:hover{color:#fff;text-shadow:0px -1px 0 rgba(0,0,0,0.3);background-color:#b33630;background-image:-moz-linear-gradient(#dc5f59, #b33630);background-image:-webkit-linear-gradient(#dc5f59, #b33630);background-image:linear-gradient(#dc5f59, #b33630);background-repeat:repeat-x;border-color:#cd504a}.button.danger:active,.button.danger.selected,.minibutton.danger:active,.minibutton.danger.selected,.context-menu-container.active .danger.minibutton.switcher,.context-menu-container.active .danger.context-button{color:#fff;background-color:#b33630;background-image:none;border-color:#9f312c}.button.danger:disabled,.button.danger:disabled:hover,.button.danger.disabled,.button.danger.disabled:hover,.minibutton.danger:disabled,.minibutton.danger:disabled:hover,.minibutton.danger.disabled,.minibutton.danger.disabled:hover{color:#900;text-shadow:0 1px 0 rgba(255,255,255,0.9);background-color:#e1e1e1;background-image:-moz-linear-gradient(#fff, #e1e1e1);background-image:-webkit-linear-gradient(#fff, #e1e1e1);background-image:linear-gradient(#fff, #e1e1e1);background-repeat:repeat-x;border-color:#c5c5c5}.button.blue,.button.blue:hover,.minibutton.blue,.minibutton.blue:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#3072b3;background-image:-moz-linear-gradient(#599bcd, #3072b3);background-image:-webkit-linear-gradient(#599bcd, #3072b3);background-image:linear-gradient(#599bcd, #3072b3);background-repeat:repeat-x;border-color:#2a65a0}.button.blue:hover,.button.blue:active,.minibutton.blue:hover,.minibutton.blue:active{border-color:#2a65a0}.button.blue:active,.button.blue.selected,.minibutton.blue:active,.minibutton.blue.selected,.context-menu-container.active .blue.minibutton.switcher,.context-menu-container.active .blue.context-button{background-color:#3072b3;background-image:none;border-color:#25588c;box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.button.blue:disabled,.button.blue.disabled,.minibutton.blue:disabled,.minibutton.blue.disabled{background-position:0 0}.button.dark-grey,.button.dark-grey:hover,.minibutton.dark-grey,.minibutton.dark-grey:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#6d6d6d;background-image:-moz-linear-gradient(#8c8c8c, #6d6d6d);background-image:-webkit-linear-gradient(#8c8c8c, #6d6d6d);background-image:linear-gradient(#8c8c8c, #6d6d6d);background-repeat:repeat-x;border:1px solid #707070;border-bottom-color:#595959}.button.dark-grey:hover,.button.dark-grey:active,.button.dark-grey.selected,.minibutton.dark-grey:hover,.minibutton.dark-grey:active,.minibutton.dark-grey.selected,.context-menu-container.active .dark-grey.minibutton.switcher,.context-menu-container.active .dark-grey.context-button{border-color:#585858}.button.dark-grey:active,.button.dark-grey.selected,.minibutton.dark-grey:active,.minibutton.dark-grey.selected,.context-menu-container.active .dark-grey.minibutton.switcher,.context-menu-container.active .dark-grey.context-button{background-color:#545454;background-image:none;border-color:#474747;box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.button.with-count,.minibutton.with-count{border-top-right-radius:0;border-bottom-right-radius:0;float:left}.button,.minibutton{outline:none}.button:focus,.minibutton:focus{text-decoration:none;border-color:#51a7e8;box-shadow:0 0 5px rgba(81,167,232,0.5)}.button img{position:relative;top:-1px;margin-right:3px;vertical-align:middle}.button>.octicon{vertical-align:middle;margin-top:-1px}.minibutton{padding:0 10px;line-height:24px;box-shadow:none}.minibutton:hover .octicon-device-desktop:before{background-position:-18px 0}.minibutton i{font-weight:500;font-style:normal;opacity:.6}.button-block{display:block;width:100%;text-align:center;-moz-box-sizing:border-box;box-sizing:border-box}.button-link{display:inline;padding:0;font-size:inherit;color:#4183c4;white-space:nowrap;background-color:transparent;border:0;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:none}.button-link:hover{text-decoration:underline}input[type=text]+.minibutton{margin-left:5px}.minibutton .octicon{vertical-align:middle;margin-top:-1px;margin-right:6px;-moz-transition:none;-webkit-transition:none;-o-transition:color 0 ease-in;transition:none}.minibutton.zeroclipboard-button .octicon{margin-right:0}.minibutton.empty-icon .octicon{margin-right:0}.minibutton .octicon-arrow-right{float:right;margin-right:0;margin-left:5px;margin-top:4px}.minibutton.switcher{padding:0;height:24px;line-height:1}.minibutton.switcher>span{display:block;position:relative;padding:0 26px 0 10px;line-height:24px;height:24px}.minibutton.switcher>span:before{content:"";display:block;position:absolute;border:3px solid #000;border-color:#000 transparent transparent;top:10px;right:7px;width:0;height:0}.minibutton.switcher>span:after{position:absolute;top:0;bottom:0;right:18px;display:block;content:"";width:1px;background-color:#f9f9f9;box-shadow:-1px 0 0 #e4e4e4}.minibutton.switcher:hover>span:after{background-color:#6a9fd3;box-shadow:-1px 0 0 #3c74ab}.minibutton.switcher:active>span:after{background-color:#357ec8;box-shadow:-1px 0 0 #25588c}.minibutton.switcher.with-image{height:32px}.minibutton.switcher.with-image>span{display:block;height:32px;line-height:32px;padding:0 26px 0 6px}.minibutton.switcher.with-image>span:before{top:14px}.minibutton.switcher.with-image img{position:relative;top:-1px;margin-right:2px;vertical-align:middle;border-radius:2px}.minibutton.switcher.with-image.selected span:before,.context-menu-container.active .switcher.with-image.minibutton span:before,.context-menu-container.active .switcher.with-image.context-button span:before{top:14px}.minibutton.switcher.selected>span:before,.context-menu-container.active .switcher.minibutton>span:before,.context-menu-container.active .switcher.context-button>span:before,.context-menu-container.active .minibutton.switcher>span:before{top:10px;border-color:#fff transparent transparent}.minibutton.switcher.selected>span:after,.context-menu-container.active .switcher.minibutton>span:after,.context-menu-container.active .switcher.context-button>span:after,.context-menu-container.active .minibutton.switcher>span:after{background-color:#888;box-shadow:-1px 0 0 #585858}.minibutton.switcher:hover>span:before,.context-menu-container.active .context-button:after{border-color:#fff transparent transparent}.context-button{position:relative;width:12px;height:22px;line-height:23px;font:normal normal 16px "octicons";line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased}.context-button:before{position:absolute;top:3px;left:3px;content:"\f02f";display:block;padding:0;font-size:16px;line-height:16px}.context-button:after{position:absolute;top:10px;right:5px;content:"";display:block;width:0;height:0;border:3px solid #000;border-color:#000 transparent transparent}.context-button:hover:after,.context-button.selected:after{border-color:#fff transparent transparent}.hidden-text-expander{display:block}.hidden-text-expander.inline{display:inline-block;line-height:0;margin-left:5px;position:relative;top:-1px}.hidden-text-expander a{background:#ddd;color:#555;padding:0 5px;line-height:6px;height:12px;font-size:12px;font-weight:bold;vertical-align:middle;display:inline-block;border-radius:1px;text-decoration:none}.hidden-text-expander a:hover{background-color:#ccc;text-decoration:none}.hidden-text-expander a:active{background-color:#4183C4;color:#fff}.social-count{padding:0 7px 0;font-size:11px;font-weight:bold;float:left;background-color:#fff;line-height:24px;color:#333333;vertical-align:middle;border:1px solid #ddd;border-left:0;border-top-right-radius:3px;border-bottom-right-radius:3px}.social-count:hover{color:#4183c4;cursor:pointer;text-decoration:none}.button-group{display:inline-block;vertical-align:middle}.button-group:before,.button-group:after{content:" ";display:table}.button-group:after{clear:both}.button-group .button,.button-group .minibutton{position:relative;float:left;border-radius:0}.button-group .button:first-child,.button-group .minibutton:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.button-group .button:last-child,.button-group .minibutton:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.button-group .button:hover,.button-group .button:focus,.button-group .button:active,.button-group .button.selected,.button-group .minibutton:hover,.button-group .minibutton:focus,.button-group .minibutton:active,.button-group .minibutton.selected,.button-group .context-menu-container.active .minibutton.switcher,.context-menu-container.active .button-group .minibutton.switcher,.button-group .context-menu-container.active .context-button,.context-menu-container.active .button-group .context-button{z-index:2}.button-group .button+.button,.button-group .minibutton+.minibutton{margin-left:-1px;box-shadow:inset 1px 0 0 rgba(255,255,255,0.2)}.button-group .button+.button:hover,.button-group .minibutton+.minibutton:hover{box-shadow:none}.button-group .button+.button:active,.button-group .minibutton+.minibutton:active{box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.button-group+.button-group,.button-group+.button,.button-group+.minibutton{margin-left:5px}.menu-container{float:left;width:200px;padding:3px;background:#efefef;border-radius:2px}.menu{background:#fafafb;border-radius:2px;border:1px solid #d8d8d8;list-style:none}.menu a:hover{text-decoration:none}.menu li{border-bottom:1px solid #eee;border-top:1px solid #fff}.menu li:last-child{border-bottom:none}.menu li:first-child{border-top:none}.menu a{display:block;padding:8px 10px 8px 8px;text-shadow:0 1px 0 #fff;border-left:2px solid #fafafb}.menu a:hover{background:#fdfdfe}.menu a .octicon{color:#333333;width:16px;text-align:center}.menu a.selected{background:#fff;border-left:2px solid #d26911;font-weight:bold;color:#222;cursor:default;box-shadow:inset 0 0px 1px rgba(0,0,0,0.1)}.menu a .counter{float:right;margin:0 0 0 5px;padding:2px 5px;font-size:11px;font-weight:bold;color:#999;background:#eee;border-radius:2px}.menu .menu-warning{color:#D26911;float:right}.accordion{background:#fafafb;list-style:none}.accordion .section{border-top:1px solid #d8d8d8;border-top:none}.accordion .section:first-child{border-top:none}.accordion .section a.section-head{background-color:#e0e0e0;background-image:-moz-linear-gradient(#fafafa, #e0e0e0);background-image:-webkit-linear-gradient(#fafafa, #e0e0e0);background-image:linear-gradient(#fafafa, #e0e0e0);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(255,255,255,0.5);display:block;padding:10px 10px;border-bottom:1px solid #ccc;color:#222;font-weight:bold;font-size:14px;line-height:20px;text-shadow:0 1px 0 rgba(255,255,255,0.7);border-left:0 none}.accordion .section a.section-head img{float:left;margin:0 10px 0 0;border-radius:2px}.accordion .section .section-nav{list-style:none;display:none}.accordion .section .section-nav.expanded{display:block}.css-truncate.css-truncate-target,.css-truncate .css-truncate-target{max-width:125px;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.css-truncate.expandable.zeroclipboard-is-hover .css-truncate-target,.css-truncate.expandable.zeroclipboard-is-hover.css-truncate-target,.css-truncate.expandable:hover .css-truncate-target,.css-truncate.expandable:hover.css-truncate-target{max-width:10000px !important}.flash-messages{margin-top:15px;margin-bottom:15px}.flash,.flash-global{position:relative;border:1px solid #97c1da;color:#264c72;background-color:#d0e3ef;background-image:-moz-linear-gradient(#d8ebf8, #d0e3ef);background-image:-webkit-linear-gradient(#d8ebf8, #d0e3ef);background-image:linear-gradient(#d8ebf8, #d0e3ef);background-repeat:repeat-x;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.flash.flash-warn,.flash-global.flash-warn{color:#613A00;background-color:#f5dac0;background-image:-moz-linear-gradient(#ffe3c8, #f5dac0);background-image:-webkit-linear-gradient(#ffe3c8, #f5dac0);background-image:linear-gradient(#ffe3c8, #f5dac0);background-repeat:repeat-x;border-color:#dca874}.flash.flash-error,.flash-global.flash-error{color:#911;background-color:#efd0d0;background-image:-moz-linear-gradient(#f8d8d8, #efd0d0);background-image:-webkit-linear-gradient(#f8d8d8, #efd0d0);background-image:linear-gradient(#f8d8d8, #efd0d0);background-repeat:repeat-x;border-color:#da9797}.flash:hover,.flash-global:hover{border-color:#5f9fc6}.flash.flash-warn:hover,.flash-global.flash-warn:hover{border-color:#cd8237}.flash.flash-error:hover,.flash-global.flash-error:hover{border-color:#c65f5f}.flash .flash-action,.flash-global .flash-action{float:right;margin-top:-4px;margin-left:20px}.flash{padding:15px;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.1)}.flash+.flash{margin-top:5px}.flash .close{float:right;cursor:pointer;opacity:0.6;text-decoration:none;margin-top:1px}.flash:hover .close{opacity:1}.flash-global{padding:10px;top:-1px;border-width:1px 0;z-index:5}.flash-global h2,.flash-global p{font-size:13px;margin-top:0;margin-bottom:0;line-height:1.4}.flash-global .flash-action{margin-top:5px}.sticky{position:sticky !important}.sticky.stick{position:fixed !important}.sticky.stick-bottom{position:absolute !important;bottom:0 !important;top:auto !important}@font-face{font-family:'octicons';src:url("/assets/octicons-880d26f56022a5f3db1e26c81ac5f4aa2ee82c5f.eot");src:url("/assets/octicons-880d26f56022a5f3db1e26c81ac5f4aa2ee82c5f.eot#iefix") format("embedded-opentype"),url("/assets/octicons-5eaec6fc1975472c3c7f212ef33138bdaf97e600.woff") format("woff"),url("/assets/octicons-0bdba0b518396976dca0d630c1676433fe97a478.ttf") format("truetype"),url("/assets/octicons-e0754e99e9cf6e1d2c0ed2e35ca579a8c62e6b9b.svg#octicons") format("svg");font-weight:normal;font-style:normal}.octicon{font:normal normal 16px octicons;line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased}.mega-octicon{font:normal normal 32px octicons;line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased}.octicon-alert:before{content:'\f02d'}.octicon-alignment-align:before{content:'\f08a'}.octicon-alignment-aligned-to:before{content:'\f08e'}.octicon-alignment-unalign:before{content:'\f08b'}.octicon-arrow-down:before{content:'\f03f'}.octicon-arrow-left:before{content:'\f040'}.octicon-arrow-right:before{content:'\f03e'}.octicon-arrow-small-down:before{content:'\f0a0'}.octicon-arrow-small-left:before{content:'\f0a1'}.octicon-arrow-small-right:before{content:'\f071'}.octicon-arrow-small-up:before{content:'\f09f'}.octicon-arrow-up:before{content:'\f03d'}.octicon-beer:before{content:'\f069'}.octicon-book:before{content:'\f007'}.octicon-bookmark:before{content:'\f07b'}.octicon-broadcast:before{content:'\f048'}.octicon-bug:before{content:'\f091'}.octicon-calendar:before{content:'\f068'}.octicon-check:before{content:'\f03a'}.octicon-checklist:before{content:'\f076'}.octicon-chevron-down:before{content:'\f0a3'}.octicon-chevron-left:before{content:'\f0a4'}.octicon-chevron-right:before{content:'\f078'}.octicon-chevron-up:before{content:'\f0a2'}.octicon-circle-slash:before{content:'\f084'}.octicon-clippy:before{content:'\f035'}.octicon-clock:before{content:'\f046'}.octicon-cloud-download:before{content:'\f00b'}.octicon-cloud-upload:before{content:'\f00c'}.octicon-code:before{content:'\f05f'}.octicon-color-mode:before{content:'\f065'}.octicon-comment:before{content:'\f02b'}.octicon-comment-add:before{content:'\f06f'}.octicon-comment-discussion:before{content:'\f04f'}.octicon-credit-card:before{content:'\f045'}.octicon-dashboard:before{content:'\f07d'}.octicon-database:before{content:'\f096'}.octicon-device-camera:before{content:'\f056'}.octicon-device-camera-video:before{content:'\f057'}.octicon-device-desktop:before{content:'\f27c'}.octicon-device-mobile:before{content:'\f038'}.octicon-diff:before{content:'\f04d'}.octicon-diff-added:before{content:'\f06b'}.octicon-diff-ignored:before{content:'\f099'}.octicon-diff-modified:before{content:'\f06d'}.octicon-diff-removed:before{content:'\f06c'}.octicon-diff-renamed:before{content:'\f06e'}.octicon-ellipsis:before{content:'\f09a'}.octicon-eye:before{content:'\f04e'}.octicon-eye-unwatch:before{content:'\f01e'}.octicon-eye-watch:before{content:'\f01d'}.octicon-file-add:before{content:'\f086'}.octicon-file-binary:before{content:'\f094'}.octicon-file-code:before{content:'\f010'}.octicon-file-directory:before{content:'\f016'}.octicon-file-directory-create:before{content:'\f095'}.octicon-file-media:before{content:'\f012'}.octicon-file-pdf:before{content:'\f014'}.octicon-file-submodule:before{content:'\f017'}.octicon-file-symlink-directory:before{content:'\f0b1'}.octicon-file-symlink-file:before{content:'\f0b0'}.octicon-file-text:before{content:'\f011'}.octicon-file-zip:before{content:'\f013'}.octicon-gear:before{content:'\f02f'}.octicon-gift:before{content:'\f042'}.octicon-gist:before{content:'\f00e'}.octicon-gist-fork:before{content:'\f079'}.octicon-gist-new:before{content:'\f07a'}.octicon-gist-private:before{content:'\f00f'}.octicon-gist-secret:before{content:'\f08c'}.octicon-git-branch:before{content:'\f020'}.octicon-git-branch-create:before{content:'\f098'}.octicon-git-branch-delete:before{content:'\f09b'}.octicon-git-commit:before{content:'\f01f'}.octicon-git-compare:before{content:'\f0ac'}.octicon-git-fork-private:before{content:'\f021'}.octicon-git-merge:before{content:'\f023'}.octicon-git-pull-request:before{content:'\f009'}.octicon-git-pull-request-abandoned:before{content:'\f090'}.octicon-globe:before{content:'\f0b6'}.octicon-graph:before{content:'\f043'}.octicon-history:before{content:'\f07e'}.octicon-home:before{content:'\f08d'}.octicon-horizontal-rule:before{content:'\f070'}.octicon-hourglass:before{content:'\f09e'}.octicon-hubot:before{content:'\f09d'}.octicon-info:before{content:'\f059'}.octicon-issue-closed:before{content:'\f028'}.octicon-issue-opened:before{content:'\f026'}.octicon-issue-reopened:before{content:'\f027'}.octicon-jersey:before{content:'\f019'}.octicon-jump-down:before{content:'\f072'}.octicon-jump-left:before{content:'\f0a5'}.octicon-jump-right:before{content:'\f0a6'}.octicon-jump-up:before{content:'\f073'}.octicon-key:before{content:'\f049'}.octicon-keyboard:before{content:'\f00d'}.octicon-light-bulb:before{content:'\f000'}.octicon-link:before{content:'\f05c'}.octicon-link-external:before{content:'\f07f'}.octicon-list-ordered:before{content:'\f062'}.octicon-list-unordered:before{content:'\f061'}.octicon-location:before{content:'\f060'}.octicon-lock:before{content:'\f06a'}.octicon-log-in:before{content:'\f036'}.octicon-log-out:before{content:'\f032'}.octicon-logo-github:before{content:'\f092'}.octicon-mail:before{content:'\f03b'}.octicon-mail-read:before{content:'\f03c'}.octicon-mail-reply:before{content:'\f051'}.octicon-mark-github:before{content:'\f00a'}.octicon-mark-twitter:before{content:'\f0ae'}.octicon-megaphone:before{content:'\f077'}.octicon-microscope:before{content:'\f089'}.octicon-milestone:before{content:'\f075'}.octicon-mirror-private:before{content:'\f025'}.octicon-mirror-public:before{content:'\f024'}.octicon-move-down:before{content:'\f0a8'}.octicon-move-left:before{content:'\f074'}.octicon-move-right:before{content:'\f0a9'}.octicon-move-up:before{content:'\f0a7'}.octicon-mute:before{content:'\f080'}.octicon-mute-video:before{content:'\f0b8'}.octicon-no-newline:before{content:'\f09c'}.octicon-octoface:before{content:'\f008'}.octicon-organization:before{content:'\f037'}.octicon-pencil:before{content:'\f058'}.octicon-person:before{content:'\f018'}.octicon-person-add:before{content:'\f01a'}.octicon-person-follow:before{content:'\f01c'}.octicon-person-remove:before{content:'\f01b'}.octicon-pin:before{content:'\f041'}.octicon-plus:before{content:'\f05d'}.octicon-podium:before{content:'\f0af'}.octicon-primitive-dot:before{content:'\f052'}.octicon-primitive-square:before{content:'\f053'}.octicon-pulse:before{content:'\f085'}.octicon-question:before{content:'\f02c'}.octicon-quote:before{content:'\f063'}.octicon-radio-tower:before{content:'\f030'}.octicon-remove-close:before{content:'\f050'}.octicon-repo:before{content:'\f001'}.octicon-repo-clone:before{content:'\f04c'}.octicon-repo-create:before{content:'\f003'}.octicon-repo-delete:before{content:'\f004'}.octicon-repo-force-push:before{content:'\f04a'}.octicon-repo-forked:before{content:'\f002'}.octicon-repo-pull:before{content:'\f006'}.octicon-repo-push:before{content:'\f005'}.octicon-repo-sync:before{content:'\f04b'}.octicon-rocket:before{content:'\f033'}.octicon-rss:before{content:'\f034'}.octicon-ruby:before{content:'\f047'}.octicon-screen-full:before{content:'\f066'}.octicon-screen-normal:before{content:'\f067'}.octicon-search:before{content:'\f02e'}.octicon-server:before{content:'\f097'}.octicon-settings:before{content:'\f07c'}.octicon-squirrel:before{content:'\f0b2'}.octicon-star:before{content:'\f02a'}.octicon-star-add:before{content:'\f082'}.octicon-star-delete:before{content:'\f083'}.octicon-stop:before{content:'\f08f'}.octicon-sync:before{content:'\f087'}.octicon-tag:before{content:'\f015'}.octicon-tag-add:before{content:'\f054'}.octicon-tag-remove:before{content:'\f055'}.octicon-telescope:before{content:'\f088'}.octicon-three-bars:before{content:'\f05e'}.octicon-tools:before{content:'\f031'}.octicon-triangle-down:before{content:'\f05b'}.octicon-triangle-left:before{content:'\f044'}.octicon-triangle-right:before{content:'\f05a'}.octicon-triangle-up:before{content:'\f0aa'}.octicon-unfold:before{content:'\f039'}.octicon-unmute:before{content:'\f0ba'}.octicon-unmute-video:before{content:'\f0b9'}.octicon-versions:before{content:'\f064'}.octicon-x:before{content:'\f081'}.octicon-zap:before{content:'\26A1'}.about #site-container>.container:first-child{margin-top:0}.about-img{max-width:100%;margin-bottom:15px}.spacefield{position:absolute;left:0;width:100%;height:170px;overflow:hidden;background-color:#000;background-image:url("/images/modules/about_page/parallax_bg.jpg?9b971807");background-repeat:no-repeat}.about-header{position:relative;height:170px;margin-bottom:25px;overflow:hidden}.about-header:before,.about-header:after{content:" ";display:table}.about-header:after{clear:both}.about-header-title{margin-top:60px;font-size:36px;line-height:1.2;color:#fff;text-shadow:0 0 20px #549ef9}.plax #parallax_octocat{position:absolute;top:0;left:669px;z-index:4}.plax #parallax_text{position:absolute;top:30px;left:15px;z-index:3}.plax #parallax_earth{position:absolute;top:50px;left:608px;z-index:2}.spacefield-short,.about-header-short{height:75px}.about-header-short .about-header-title{margin-top:20px;font-size:28px}.about-header-short #parallax_octocat{left:800px;top:-10px}.about-header-short #parallax_earth{top:-10px;left:700px}#menu-about{float:none;margin-bottom:20px}.employee{position:relative;float:left;width:128px;height:128px;border:1px solid #fff;background-color:#000}.employee-img{width:128px;height:128px;position:absolute;top:0;left:0}.show-identicon .employee-img{display:none}.employee-img.identicon{display:none}.show-identicon .employee-img.identicon{display:block}.employee-info{position:absolute;left:0;top:0;width:128px;height:128px;margin:0;z-index:10;padding:0;text-align:center;background-color:rgba(0,0,0,0.25);background-image:-moz-linear-gradient(rgba(0,0,0,0.01) 50%, rgba(0,0,0,0.25));background-image:-webkit-linear-gradient(rgba(0,0,0,0.01) 50%, rgba(0,0,0,0.25));background-image:linear-gradient(rgba(0,0,0,0.01) 50%, rgba(0,0,0,0.25));background-repeat:repeat-x;background-color:transparent;background-color:#000 \9}.employee-info .identicon{display:none}.employee-info span{font-size:12px;font-weight:normal;color:#fff;position:absolute;bottom:8px;left:0;right:0;text-shadow:0 0 3px black}.employee-info span:before{content:"@";color:#ccc}.show-identicon .employee{background:#f0f0f0}.show-identicon .identicon{width:80px;height:80px;top:16px;left:24px}.show-identicon .employee-info{background-image:none}.show-identicon .employee-info span{color:#333;text-shadow:0 0 3px rgba(255,255,255,0.4)}.show-identicon .employee-info span:before{color:#727272}.about-facts{margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid #eee}.about-facts:before,.about-facts:after{content:" ";display:table}.about-facts:after{clear:both}.about-fact{float:left;width:25%;list-style:none;font-weight:300}.about-fact .mega-octicon{float:left;width:32px;height:32px;margin-right:10px}.about-fact .fact-label{display:block;font-size:11px;font-weight:bold;text-transform:uppercase}.benefits{margin:0 -15px 20px}.benefits:before,.benefits:after{content:" ";display:table}.benefits:after{clear:both}.benefits li{-moz-box-sizing:border-box;box-sizing:border-box;float:left;width:48%;padding-left:15px;padding-right:15px;list-style:none;font-size:14px;font-weight:300}.benefits h4{margin-top:0;margin-bottom:0}.benefits p{margin-top:5px}.jobs-list li{margin-bottom:20px;padding-bottom:20px;list-style:none;border-bottom:1px solid #e5e5e5}.jobs-list h3{margin-top:0;margin-bottom:0}.octospinner{display:none}.loading .octospinner{display:block;margin-left:auto;margin-right:auto}.press-mentions{list-style:none}.press-mentions li{margin-bottom:10px;font-size:16px}.press-mentions cite{display:block;font-size:12px;color:#777}.press-mentions cite:before{content:"\2014 \00A0"}.press-archive{margin-top:20px;padding-top:20px;border-top:1px solid #e5e5e5;text-align:center}.press-archive .octicon{margin-right:5px}.press-info{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid #e5e5e5}.press-info li{display:inline-block;margin-right:40px;line-height:32px}.press-info .mega-octicon{margin-right:5px;color:#999;vertical-align:middle}.accountcols .main{float:left;width:560px}.accountcols .sidebar{float:right;width:330px}.accountcols .main>p.overview{margin-top:20px;color:#333}.fieldgroup p.explain.planusage{color:#333}.fieldgroup p.explain.planusage strong{color:#000}.billing-plans tbody td{width:25%;vertical-align:middle}.billing-plans .name{font-size:14px;font-weight:bold;color:#333}.billing-plans .coupon{font-size:12px}.billing-plans .coupon td{color:#fff;background-color:#6cc644}.billing-plans .coupon .text-right{white-space:nowrap}.billing-plans .coupon.expiring td{background-color:#df6e00}.billing-plans .coupon.expiring td .coupon-label:after{border-bottom-color:#df6e00}.billing-plans .coupon-label{position:relative;margin:-9px;padding:9px}.billing-plans .coupon-label:after{position:absolute;left:15px;bottom:100%;content:" ";height:0;width:0;pointer-events:none;border:solid transparent;border-width:5px;border-bottom-color:#6cc644}.billing-plans tbody>.selected{background-color:#fdffce}#credit-card-fields.is-hidden{display:none}.plan-change-message.is-hidden{display:none}.billing-contact-info button{margin-bottom:15px}.billing-contact-info .add-billing-contact-info-modal{display:none}.payment-type{margin:10px 0 10px 0;padding:0 0 10px 0}.payment-type .note{color:#999}.payment-type ul.actions{margin:0}.payment-type ul.actions li{list-style-type:none;margin:0 10px 0 0;height:25px;line-height:25px;font-size:11px;color:#999}.payment-type h3{margin:0;height:25px;line-height:24px;font-size:14px}.payment-type .mega-octicon{margin-right:5px;vertical-align:middle}.two-factor-container{width:480px;margin:150px auto}.two-factor-container #otp{float:left;width:250px;margin:0 10px 0 0}.two-factor-container #recovery_code{float:left;width:250px;margin:0 10px 0 0}.two-factor-container .is-hidden{display:none}.org-login{margin-top:-30px;margin-bottom:30px}.org-login img{border:1px solid #ccc;padding:1px;margin:10px -25px;width:450px}.auth-form{width:400px;margin:60px auto}.auth-form form{border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,0.075)}.auth-form-header{position:relative;padding:10px 20px;margin:0;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.5);background-color:#6c8393;background-image:-moz-linear-gradient(#7f95a5, #6c8393);background-image:-webkit-linear-gradient(#7f95a5, #6c8393);background-image:linear-gradient(#7f95a5, #6c8393);background-repeat:repeat-x;border:1px solid #6e8290;border-bottom-color:#586873;border-radius:4px 4px 0 0}.auth-form-header h1{margin-top:0;margin-bottom:0;font-size:16px}.auth-form-header h1 a{color:#fff}.auth-form-header .octicon{position:absolute;right:0;top:12px;right:10px;color:rgba(0,0,0,0.4);text-shadow:0 1px 0 rgba(255,255,255,0.1)}.auth-form-body{padding:20px;-moz-box-sizing:border-box;box-sizing:border-box;font-size:14px;background-color:#fff;border:1px solid #d8dee2;border-top-color:white;border-radius:0 0 4px 4px}.auth-form-body .input-block{margin-top:5px;margin-bottom:15px}.auth-form-body p.small_notice{display:inline;padding:0 10px}.auth-form-subheading{margin:0}.auth-form-body p{margin:0 0 10px}.auth-form-permissions{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid #d8dee2}.auth-form-permissions li{list-style-position:inside;padding-left:15px}.auth-form .note{margin:15px 0;color:#777;text-align:center}.two-factor-help{position:relative;margin:0 auto;padding:10px 10px 10px 36px;width:354px;border:1px solid #eaeaea;border-radius:3px}.two-factor-help .octicon{position:absolute;top:10px;left:10px}.two-factor-help .minibutton{float:right}.two-factor-help ul{list-style-type:none}.flash.sms-error,.flash.sms-success{display:none;margin:0 0 10px 0}.is-sending .spinner{display:inline-block}.is-sent .sms-success{display:block}.is-sent .sms-error{display:none}.is-not-sent .sms-success{display:none}.is-not-sent .sms-error{display:block}.autocomplete-results{display:none;position:absolute;max-height:20em;list-style:none;background:#fff;border:1px solid #c1c1c1;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,0.3);overflow-y:auto;font-size:13px;z-index:99;-moz-box-sizing:border-box;box-sizing:border-box}.autocomplete-group{width:100%;overflow:hidden;border-radius:0 0 3px 3px}.autocomplete-group .autocomplete-group-title{width:68px;padding:5px;border-right:1px solid #ddd;font-size:11px;font-weight:normal;color:#999;vertical-align:top;text-align:right}.autocomplete-group:first-child{border-radius:3px}.autocomplete-item{display:block;padding:5px;color:#000;text-decoration:none;font-weight:bold;cursor:pointer}.autocomplete-item.navigation-focus{background-color:#4183c4;text-decoration:none;color:#fff}.autocomplete-item.selected{background-color:#4183c4;color:#fff}.autocomplete-item.selected .due_on,.autocomplete-item.selected .past_due,.autocomplete-item.selected .number{color:#fff}.autocomplete-item .due_on,.autocomplete-item .past_due{display:block;font-weight:normal}.autocomplete-item .due_on{color:#666}.autocomplete-item .past_due{color:#984646}.autocomplete-item .state{display:block;float:left;margin-right:5px;margin-top:3px;width:13px;height:9px;border-radius:2px}.autocomplete-item .state.closed{background-color:#bd2c00}.autocomplete-item .state.open{background-color:#6cc644}.autocomplete-item .number{color:#999;font-weight:bold}.autocomplete-item img{border-radius:3px}.autocomplete-header{border-radius:3px 3px 0 0}.autocomplete-header:last-child{border-radius:3px}.suggester-container{position:absolute;top:58px;left:10px;z-index:1}.pull-form .suggester-container{top:65px}.orgs-next-content .suggester-container{top:0px;left:0px}.suggester{position:relative;top:0;left:0;display:none;margin-top:20px;background:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,0.1);min-width:180px}.suggester.active{display:block}.suggester ul{list-style:none;margin:0;padding:0}.suggester li{display:block;padding:5px 10px;border-bottom:1px solid #ddd;font-weight:bold}.suggester li small{color:#777;font-weight:normal}.suggester li:last-child{border-bottom:none;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.suggester li:first-child a{border-top-left-radius:3px;border-top-right-radius:3px}.suggester li.navigation-focus{color:#fff;background:#4183c4;text-decoration:none}.suggester li.navigation-focus small{color:#fff}body,input,select,textarea,button{font:13px Helvetica, arial, freesans, clean, sans-serif;line-height:1.4}body{min-width:1020px;color:#333333;background-color:#fff}::-moz-selection{text-shadow:none;background:rgba(65,131,196,0.4)}::selection{text-shadow:none;background:rgba(65,131,196,0.4)}a{color:#4183c4;text-decoration:none}a:hover{text-decoration:underline}a:focus,a:active{text-decoration:underline}.action{color:#d00;text-decoration:underline}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.danger{color:#c00}.mute{color:#000}.sparkline{display:none}.right{float:right}.left{float:left}.text-right{text-align:right}.text-left{text-align:left}.hidden{display:none}.warning{background-color:#fffccc;font-weight:bold;padding:.5em;margin-bottom:.8em}.error_box{padding:1em;font-weight:bold;background-color:#ffebe8;border:1px solid #DD3C10}hr,.rule{clear:both;margin:15px 0;height:0px;overflow:hidden;border:none;background:transparent;border-bottom:1px solid #ddd}#spinner{height:16px;width:16px;background:transparent;border:none;margin-right:0}.breadcrumb{margin:5px 0 5px 0;font-size:18px;color:#999}.breadcrumb strong.final-path{color:#000}.breadcrumb .abort{display:inline;font-size:14px}.breadcrumb .new-file-no-branch{color:#999999;opacity:.5}.breadcrumb .new-file-no-branch:hover{color:#4183c4}.breadcrumb .zeroclipboard-button{display:inline-block;margin-left:5px}.breadcrumb .repo-root{font-weight:bold}#files input.filename{padding:6px 7px;font-family:Helvetica, arial, freesans, clean, sans-serif;font-size:16px;color:#444;border:1px solid #ddd;border-radius:4px;outline:none;background:none}#files input.filename:focus{border-color:#51A7E8;box-shadow:rgba(81,167,232,0.5) 0 0 5px,inset rgba(0,0,0,0.2) 0 1px 1px}#files input.filename,#files .abort{position:relative;top:-1px}#files .gitignore-template,#files .license-template{float:right;font-size:14px;position:relative;top:3px;display:none}#files .gitignore-template.is-visible,#files .license-template.is-visible{display:inline}#files .license-info{color:#ccc;margin-left:5px}#files .select-menu-git-ignore,#files .select-menu-license-picker{right:0px}#files .new-commit{display:block;width:720px}.new-file-link{display:inline-block;cursor:pointer}.new-file-link span{color:#4183c4}.blob-interaction-bar{position:relative;background:#f2f2f2;border-bottom:1px solid #e5e5e5}.blob-interaction-bar:before,.blob-interaction-bar:after{content:" ";display:table}.blob-interaction-bar:after{clear:both}.blob-interaction-bar .octicon-search{position:absolute;top:10px;left:10px;color:#999;font-size:12px}.blob-filter[type=text]{padding:4px 20px 5px 30px;width:100%;font-size:12px;border:none;border-radius:0;outline:none}.blob-filter[type=text]:focus{outline:none}.repo-access-false{position:relative;border:1px #C5D5DD solid;padding:3px 0 0 15px;background:#E6F1F6;margin:10px 0 50px 0;border-radius:4px}.repo-access-false p{float:left;font-size:16px;text-shadow:#fff 0px 1px 0px}.repo-access-false button{margin:8px 340px 0 0px}.bubble#files .file{margin-bottom:0}.bubble#files .file{background:#ececec}.bubble#files .file .data{background:#fff}.bubble#files .file .meta{padding:5px 10px}.bubble#files .file .meta .info{font-family:Helvetica, arial, freesans, clean, sans-serif}.markdown-body .csv-data td,.markdown-body .csv-data th{overflow:hidden;white-space:nowrap;font-size:12px;padding:5px;text-align:left;line-height:1}.markdown-body .csv-data .blob-line-nums{line-height:1;padding:5px 0;background:#fff;border-top:none;border:none}.markdown-body .csv-data .blob-line-nums span{margin-top:3px}.markdown-body .csv-data tr.line{border-top:none}.markdown-body .csv-data thead th{font-weight:bold;border-top:none;background:#f8f8f8}.blob-ctags-list{float:right;height:auto;margin-top:4px;margin-right:8px}.blob-ctags-list .navigation-focus a{color:white}.highlight .popover{width:400px}.highlight .popover .loading{font-size:12px}.highlight span.n>a,.highlight span.no>a{cursor:text;pointer-events:none}.highlight-ctags.ctags-loading{cursor:wait}.highlight-ctags span>a.ctag-relative{cursor:auto;pointer-events:auto;border-bottom:1px solid;padding-bottom:1px}.highlight-ctags span>a.ctag-relative:hover{text-decoration:none}.highlight-ctags .valid-ctag{cursor:pointer;border-bottom:1px dotted;padding-bottom:1px}.ctags-lookup-results{max-height:195px;overflow-y:auto;position:relative}.ctags-lookup-result{padding:8px 5px;cursor:pointer}.ctags-lookup-result .name{font-size:14px;overflow:hidden;text-overflow:ellipsis}.ctags-lookup-result .link{text-align:right;font-size:10px;overflow:hidden}.ctags-lookup-result .highlight>pre,.ctags-lookup-result pre.code{overflow-x:hidden;text-overflow:ellipsis;width:300px}.ctags-lookup-result .highlight,.ctags-lookup-result pre.code{display:inline-block}.ctags-lookup-result pre.line_numbers.inline{width:25px;display:inline-block;margin-right:5px;background-color:white !important;cursor:auto !important;padding-top:0 !important;padding-bottom:0 !important}.ctags-lookup-result.navigation-focus,.ctags-lookup-result.navigation-focus pre,.ctags-lookup-result.navigation-focus pre.line_numbers.inline{background-color:#ffffef !important}.file .no-preview{margin:5px}.quick-pull-choice{margin-top:-7px;margin-bottom:10px}.quick-pull-branch .select-menu-item .select-menu-item-icon{color:#aaa}.box-header,.box-body{-moz-box-sizing:border-box;box-sizing:border-box}.box{margin-bottom:20px}.box-header{min-height:40px;line-height:1;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border:1px solid #d5d5d5;border-top-left-radius:4px;border-top-right-radius:4px}.box-header:before,.box-header:after{content:" ";display:table}.box-header:after{clear:both}.box-title{float:left;margin:9px 10px;font-size:14px;line-height:1.429;color:#555}.box-title a{color:#555}.box-title .css-truncate-target{max-width:400px}.box-title-count{color:#99a4aa}.box-header-icon{float:left;margin:10px 7px 0 10px;color:#777}.box-header>.mini-icon-deleted{color:#bd2c00}.box-header>.mini-icon-added{color:#6cc644}.box-actions{float:right;margin-left:10px}.box-action{position:relative;float:left;padding:9px 10px;color:#555;line-height:20px;background-color:transparent;border:solid #d5d5d5;border-width:0 1px;box-shadow:inset 1px 0 0 rgba(255,255,255,0.5);-webkit-appearance:none}.box-action+.box-action{margin-left:-1px}.box-action:last-child{border-right:0;border-top-right-radius:3px}.box-action:hover,.box-action:active{z-index:2;text-decoration:none;background-color:#e4e4e4;background-image:-moz-linear-gradient(#f4f4f4, #e4e4e4);background-image:-webkit-linear-gradient(#f4f4f4, #e4e4e4);background-image:linear-gradient(#f4f4f4, #e4e4e4);background-repeat:repeat-x;cursor:pointer}.box-action:active{background-color:#e4e4e4;background-image:none;border-color:#d5d5d5;box-shadow:inset 0 2px 4px rgba(0,0,0,0.1)}.box-action .mini-icon{vertical-align:-1px}.box-actions .show-inline-notes{font-weight:normal}.box-body{background-color:#fff;border:solid #d5d5d5;border-width:0 1px 1px;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.box-body:before,.box-body:after{content:" ";display:table}.box-body:after{clear:both}.box-body-padded{padding-left:10px;padding-right:10px}.box-body .list-group-item:last-child{border-bottom:0}.box-small .box-header{min-height:36px}.box-small .box-title{margin-top:6px;margin-bottom:6px}.box-small .box-body-padded{padding:10px}p.subtext{margin:10px 0;font-size:14px;color:#666}table.branches{margin:5px 0 0 0;width:100%}table.branches th{padding:2px 0;font-size:11px;text-transform:uppercase;text-align:left;color:#666;border-bottom:1px solid #ddd}table.branches th.state-widget{text-align:center}table.branches tr td{padding:5px 0;border-bottom:1px solid #ddd}table.branches tr:hover td{background:#fafafa}table.branches tr td.state-widget{width:200px}table.branches tr.base td{background:#333;color:#fff}table.branches tr.base td.name{padding-left:10px}table.branches tr.base td.name p{color:#aaa}table.branches tr.base td.actions{padding-right:10px;color:#eee}table.branches tr.base a{color:#fff}table.branches tr td.actions{white-space:nowrap}table.branches tr td.actions .spinner{vertical-align:middle;display:none;margin-right:4px}.branches .name h3{margin:0;font-size:16px}.branches .name p{margin:-3px 0 0 0;font-size:12px;color:#666}.branches .name .css-truncate-target{max-width:490px}.branches .state{display:inline-block;margin-right:5px;padding:2px 5px;font-size:11px;text-transform:uppercase;font-weight:bold;background:#eee;border-radius:2px}.branches .state-progress{font-size:12px;color:#666;font-style:normal}.branches div.actions{float:right}.branches div.actions>span{list-style-type:none;display:inline-block;margin:0 0 0 5px}.branches div.actions>span.text{padding:5px 0;font-size:11px;font-weight:bold}.showing-unmerged td.name{padding-left:10px}.branches .status{position:relative;top:1px}#branches-index .sidebar{width:160px}#branches-index .main{width:720px}.branch-discussions{list-style:none}.branch-discussion.capped-box{list-style:none;padding:0;border-radius:0}.branch-discussion.capped-box .commit-group-item{border:none}.branch-discussion.capped-box .css-truncate-target{max-width:520px}.diverge-widget{position:relative;height:35px}.diverge-widget .ahead{display:block;position:absolute;width:50%;height:100%;left:50%}.diverge-widget .behind{display:block;position:absolute;width:50%;height:100%;right:50%}.diverge-widget .bar{position:absolute;top:13px;right:0;display:block;height:8px;background:#d0d0d0}.diverge-widget .ahead .bar{background:#7a7a7a;left:0}.diverge-widget.hot .bar{background-color:#ff704f}.diverge-widget.hot .ahead .bar{background-color:#811201}.diverge-widget.fresh .bar{background-color:#ffd266}.diverge-widget.fresh .ahead .bar{background-color:#b69e67}.diverge-widget.stale .bar{background-color:#b2d0dd}.diverge-widget.stale .ahead .bar{background-color:#1e4152}.diverge-widget em{font-style:normal;font-size:10px;line-height:10px;color:#999;white-space:nowrap}.diverge-widget .behind em{position:absolute;bottom:0;right:5px}.diverge-widget .ahead em{position:absolute;top:0;left:5px}.diverge-widget .separator{display:block;position:absolute;top:0;left:50%;margin-left:-2px;width:2px;height:100%;background:#454545}ul.hotness-legend{float:right;margin:10px 0 0 0}ul.hotness-legend li{list-style-type:none;float:left;margin:0;font-size:11px;color:#999}ul.hotness-legend .ahead,ul.hotness-legend .behind{display:block;margin:1px 0 0 0;width:15px;height:10px}ul.hotness-legend .old .behind{background-color:#d0d0d0}ul.hotness-legend .old .ahead{background-color:#7a7a7a}ul.hotness-legend .stale .behind{background-color:#b2d0dd}ul.hotness-legend .stale .ahead{background-color:#1e4152}ul.hotness-legend .fresh .behind{background-color:#ffd266}ul.hotness-legend .fresh .ahead{background-color:#b69e67}ul.hotness-legend .hot .behind{background-color:#ff704f}ul.hotness-legend .hot .ahead{background-color:#811201}ul.hotness-legend li.text{margin:0 10px;height:23px;line-height:23px}p.recently-touched-branches-description{margin:0;font-size:11px;color:#888}.recently-touched-branches{margin:5px 0 10px 0;padding:0;background:#fffef1;border:1px solid #e5e2c8;border-radius:4px}.recently-pushed-branch-actions{float:right}.recently-touched-branches a.branch-link{font-weight:bold}.recently-touched-branches li{list-style-type:none;padding:5px;height:36px;border-bottom:1px solid #e5e2c8;-moz-box-sizing:border-box;box-sizing:border-box}.recently-touched-branches li:last-child{border-bottom:none}.recently-touched-branches li{margin:0;line-height:23px}.recently-pushed-branch-details{display:inline-block;color:#a19e7f;margin:0 0 0 7px;font-size:13px;line-height:26px}.recently-pushed-branch-details a{color:#6b694f}.branch-discussion.capped-box .octicon{float:right;margin-left:5px}.showing-unmerged .merged-content,.showing-merged .unmerged-content{display:none}.branch-name{display:inline-block;position:relative;top:1px;padding:2px 6px 3px 6px;color:rgba(0,0,0,0.5);font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:12px;background:rgba(209,227,237,0.5);border-bottom:1px solid #dae5eb;border-radius:3px}.branch-name .octicon{margin:1px -2px 0 0;color:#B0C4CE}a.branch-name{color:#4183c4}.range-editor{position:relative;margin:10px 0}.is-collapsed .range-editor.for-expanded{display:none}.is-expanded .range-editor.for-collapsed{display:none}.range-editor span.flag{display:block;position:relative;float:left;-moz-box-sizing:border-box;box-sizing:border-box;padding:12px 13px;background-color:#fafafa;border:1px solid #eee;border-right-width:0;border-bottom-width:2px;border-radius:3px 0 0 3px}.range-editor span.flag .octicon{display:block;color:#666}.range-editor .range{min-height:43px;margin-left:41px;padding:7px 10px;background-color:#fafafa;border:1px solid #eee;border-bottom-width:2px;border-radius:0 3px 3px 0;position:relative;-moz-box-sizing:border-box;box-sizing:border-box}.range-editor .range p{margin:0 0 8px 0;font-size:12px;color:#999}.range-editor .range .dots{margin:0 4px;font-size:16px;color:#999}.range-editor .range .range-action{float:right}.range-editor .range .range-action.octicon{position:absolute;top:13px;right:13px;color:#999;cursor:pointer}.range-editor .range .range-action.octicon:hover{color:#bd2c00}.range-editor .range .select-menu{position:relative;display:inline-block}.range-editor .range .select-menu.fork-suggester{display:none}.is-cross-repo .range-editor .range .select-menu.fork-suggester{display:inline-block}.is-cross-repo .range-editor .range .cross-repo-text{display:none}.range-editor .range .branch .css-truncate-target,.range-editor .range .fork-suggester .css-truncate-target{max-width:180px}.range-editor.for-collapsed .range{border-bottom-left-radius:0}.range-editor.for-new-pull-page{height:100px}.range-editor div.range-editor-form{position:absolute;top:0;left:41px;width:877px;height:76px;background-color:#fafafa;border:1px solid #eee;border-bottom-width:2px;border-radius:0 3px 3px 3px}.range-editor div.range-editor-form div.range-editor-base,.range-editor div.range-editor-form div.range-editor-head{position:absolute;padding:8px;width:415px;z-index:0}.range-editor div.range-editor-form div.range-editor-base .gravatar,.range-editor div.range-editor-form div.range-editor-head .gravatar{display:block;position:relative;float:left;width:22px;height:22px;margin-right:8px;border:1px solid #d2d2d2;padding:1px;line-height:21px}.range-editor div.range-editor-form div.range-editor-base .gravatar img,.range-editor div.range-editor-form div.range-editor-head .gravatar img{display:block}.range-editor div.range-editor-form div.range-editor-base .repo,.range-editor div.range-editor-form div.range-editor-head .repo{float:left;width:339px}.range-editor div.range-editor-form div.range-editor-base .branch,.range-editor div.range-editor-form div.range-editor-head .branch{clear:both;float:left;margin-top:8px;width:373px}.range-editor div.range-editor-form .range-loading-overlay{position:absolute;display:none;top:0;left:0;height:80px;width:100%;z-index:1}.range-editor div.range-editor-form div.range-editor-base{top:0;left:0;padding-right:15px}.range-editor div.range-editor-form div.range-editor-head{top:0;left:438px;padding-left:15px;border-left:1px solid #eee}.range-editor div.range-editor-form span.action-indicator{position:absolute;left:430px;top:25px;padding:5px 0;color:#aaa;background:#fafafa}.range-editor div.range-editor-form .pull-range-base-repo-content{margin-top:0;left:40px;top:36px}.range-editor div.range-editor-form .pull-range-base-branch-content{margin-top:0;left:7px;top:70px}.range-editor div.range-editor-form .pull-range-head-repo-content{margin-top:0;left:47px;top:36px}.range-editor div.range-editor-form .pull-range-head-branch-content{margin-top:0;left:14px;top:70px}.range-editor div.range-editor-form .repo .css-truncate-target{max-width:285px}.range-editor div.range-editor-form .branch .css-truncate-target{max-width:305px}ul.comparison-list{margin:25px auto 15px auto;width:350px;text-align:left;font-size:14px;background:#fff;border:1px solid #ddd;border-radius:3px}ul.comparison-list>li{list-style-type:none;padding:7px 10px;border-top:1px solid #eee}ul.comparison-list>li a{font-weight:bold}ul.comparison-list>li em{float:right;font-style:normal;color:#999}ul.comparison-list>li .octicon{position:relative;top:1px;color:#aaa}ul.comparison-list>li .css-truncate-target{max-width:200px}ul.comparison-list>li.title{border-top:none;background:#fafafa;font-size:12px;font-weight:bold;color:#aaa;text-transform:uppercase;border-top-right-radius:3px;border-top-left-radius:3px}.overall-summary.comparison-summary{margin:15px 0 10px 0;border-radius:3px}.overall-summary.comparison-summary .numbers-summary li{border-bottom:none}.comparison-discussion-starter .pull-request-composer{display:none}.comparison-discussion-starter.open .placeholder-bubble{display:none}.comparison-discussion-starter.open .pull-request-composer{display:block}.recently-touched-branches-wrapper{margin:15px 0}.form-actions{text-align:right;padding-bottom:5px}.form-actions .cancel{margin-top:5px;float:left}.form-actions .button.cancel{margin-top:0;margin-left:2px}.form-actions .minibutton.cancel{margin-top:0}.form-actions .optional{display:block;padding-top:8px;float:left;margin-right:15px}.form-actions .optional span.text{padding:0 3px}.form-actions .optional input{position:relative;top:-1px}.form-warning{margin:10px 0;padding:8px 10px;border:1px solid #E7E4C2;font-size:14px;color:#333;background:#ffffe2;border-radius:4px}.form-warning p{margin:0;line-height:1.5}.form-warning strong{color:#000}.form-warning a{font-weight:bold}.watch-button-container .watch-button,.watch-button-container.on .unwatch-button{display:inline-block}.watch-button-container.on .watch-button,.watch-button-container .unwatch-button{display:none}.watch-button-container.loading{opacity:0.5}.starring-container .unstarred,.starring-container.on .starred{display:inline-block}.starring-container.on .unstarred,.starring-container .starred{display:none}.starring-container.loading{opacity:0.5}.user-following-container .follow,.user-following-container.on .unfollow{display:inline-block}.user-following-container.on .follow,.user-following-container .unfollow{display:none}.user-following-container.loading{opacity:0.5}.members .user-following-container{float:right}.featured-collection-carousel{position:relative}.featured-collection-carousel .carousel-wrapper{width:980px;height:250px;overflow:hidden}.featured-collection-carousel .carousel-slides{width:10000px;transition:margin 0.3s ease-in;-webkit-transition:margin 0.3s ease-in 0}.featured-collection-carousel .carousel-slide{list-style-type:none;float:left;width:980px;height:250px}.featured-collection-carousel .slide-left,.featured-collection-carousel .slide-right{position:absolute;top:0;bottom:0;width:60px;text-decoration:none}.featured-collection-carousel .slide-left:hover .mega-octicon,.featured-collection-carousel .slide-right:hover .mega-octicon{color:#333}.featured-collection-carousel .slide-left .mega-octicon,.featured-collection-carousel .slide-right .mega-octicon{width:15px;color:#CCC;position:absolute;top:50%;left:50%;margin-top:-16px;margin-left:-7px}.featured-collection-carousel .slide-left.disabled .mega-octicon,.featured-collection-carousel .slide-right.disabled .mega-octicon{color:#eee}.featured-collection-carousel .slide-left{left:-60px}.featured-collection-carousel .slide-right{right:-60px}@media only screen and (max-width: 1155px){.slide-left,.slide-right{display:none}}.chromed-list-browser{position:relative;margin-bottom:8px;float:left;width:100%}.chromed-list-browser .context-loader{top:39px}.chromed-list-browser .none p,.chromed-list-browser .error p{margin:0;padding:30px 20px;border-radius:3px;text-align:center;font-size:15px;color:#999;background:#f5f5f5;-webkit-font-smoothing:antialiased}.chromed-list-browser .none a,.chromed-list-browser .error a{color:#4183c4}.chromed-list-browser .actions{background-color:#ecf0f1;background-image:-moz-linear-gradient(#fff, #ecf0f1);background-image:-webkit-linear-gradient(#fff, #ecf0f1);background-image:linear-gradient(#fff, #ecf0f1);background-repeat:repeat-x;margin:0;padding:.5em;font-size:11px;overflow:hidden}.chromed-list-browser .actions .buttons.deactivated .minibutton{opacity:0.5}.chromed-list-browser .actions .buttons.activated .minibutton{opacity:1.0}.chromed-list-browser .actions .buttons.activated .minibutton p.note{display:none}.chromed-list-browser .actions .buttons p.note{margin:0 0 0 5px;display:inline-block;font-size:11px;color:#9ca9a9}.chromed-list-browser .pagination{float:right;margin:7px;font-weight:bold}.chromed-list-browser .pagination a,.chromed-list-browser .pagination span{padding:4px;font-size:11px;color:#4183C4}.chromed-list-browser .pagination a:hover,.chromed-list-browser .pagination a:active,.chromed-list-browser .pagination span:hover,.chromed-list-browser .pagination span:active{background:none}.chromed-list-browser .pagination a.current,.chromed-list-browser .pagination a.current:hover,.chromed-list-browser .pagination span.current,.chromed-list-browser .pagination span.current:hover{color:#333;cursor:default}.chromed-list-browser .pagination a.gap,.chromed-list-browser .pagination span.gap{color:#ddd}.chromed-list-browser .pagination a.disabled,.chromed-list-browser .pagination span.disabled{display:none}.chromed-list-browser .paging{padding:5px;border-bottom:1px solid #ddd}.chromed-list-browser .button-pager{display:block;padding:5px 0;text-align:center;font-size:12px;font-weight:bold;text-shadow:1px 1px 0 #fff;text-decoration:none;border:1px solid #e4e9ef;border-radius:3px;background-color:#eff3f6;background-image:-moz-linear-gradient(#fdfdfe, #eff3f6);background-image:-webkit-linear-gradient(#fdfdfe, #eff3f6);background-image:linear-gradient(#fdfdfe, #eff3f6);background-repeat:repeat-x}.chromed-list-browser .button-pager:hover{border-color:#d9e1e8;background-color:#dee8f1;background-image:-moz-linear-gradient(#fafbfd, #dee8f1);background-image:-webkit-linear-gradient(#fafbfd, #dee8f1);background-image:linear-gradient(#fafbfd, #dee8f1);background-repeat:repeat-x}.list-browser-item{position:relative;border-bottom:1px solid #ddd}.list-browser-item .list-browser-bottom-right-info{position:absolute;bottom:3px;right:5px}.list-browser-item.navigation-focus{background:#f5f9fc !important}.list-browser-filterbar{font-family:"Helvetica Neue", Helvetica, Arial, freesans;border-radius:5px 5px 0 0;height:31px;background-color:#cacaca;background-image:-moz-linear-gradient(#efefef, #cacaca);background-image:-webkit-linear-gradient(#efefef, #cacaca);background-image:linear-gradient(#efefef, #cacaca);background-repeat:repeat-x;border-bottom:1px solid #b4b4b4;-moz-box-sizing:border-box;box-sizing:border-box}.list-browser-filterbar li{list-style-type:none;display:inline}.list-browser-filterbar li:last-child .sort-type{border-right:0;border-top-right-radius:5px}.list-browser-filter-tabs{display:block;float:left;padding:5px 5px 0;overflow:hidden}.list-browser-filter-tabs .filter-tab,.list-browser-filter-tabs.pjax-active .filter-tab.selected{display:inline-block;padding:0 8px;height:24px;line-height:24px;font-size:12px;font-weight:bold;color:#888;-webkit-font-smoothing:antialiased;text-shadow:1px 1px 0 rgba(255,255,255,0.3);text-decoration:none;border:1px solid #ccc;border-bottom:0;border-radius:3px 3px 0 0;background:rgba(255,255,255,0.2);cursor:pointer}.list-browser-filter-tabs .filter-tab.selected,.list-browser-filter-tabs.pjax-active .filter-tab.pjax-active{color:#333;background:#fff;box-shadow:0 0 5px rgba(0,0,0,0.1);border-color:#B4B4B4;border-bottom:1px solid #fff}.list-browser-sorts{float:right;margin:0}.list-browser-sorts .sort-type{display:inline-block;padding:0 10px;height:30px;line-height:29px;font-size:10px;color:#666;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.list-browser-sorts .sort-type:hover{text-decoration:underline}.list-browser-sorts .asc .sort-type,.list-browser-sorts .desc .sort-type{position:relative;padding-left:20px;color:#333;font-weight:bold;background:rgba(255,255,255,0.5);border:1px solid rgba(0,0,0,0.1);border-width:0 1px}.list-browser-sorts .asc .sort-type:before,.list-browser-sorts .desc .sort-type:before{width:0;height:0;border:4px solid #777;border-color:#777 transparent transparent;border-width:4px 4px 0;display:block;content:"";position:absolute;left:6px;top:50%;margin-top:-2px}.list-browser-sorts .asc .sort-type:before{border-color:transparent transparent #777;border-width:0 4px 4px}.list-browser-footer{font-size:11px;font-weight:bold;color:#777;overflow:hidden;min-height:15px;background:#f6f6f6;border-radius:0 0 5px 5px}.list-browser-footer .footer-text{display:inline-block;margin:10px;text-shadow:1px 1px 0 rgba(255,255,255,0.5)}.list-browser-footer .pagination{margin:5px}.code-list em{background-color:rgba(255,255,140,0.5);font-weight:bold;padding:2px 1px 0;font-style:normal;margin:0 -1px;color:#333333}.code-list .title{padding:0 0 5px;margin:0 0 0 40px;min-height:24px;font-weight:bold}.code-list .repo-specific .title,.code-list .repo-specific .full-path{margin-left:0}.code-list .updated-at{margin:0;font-size:11px;color:#999999;font-weight:normal}.code-list .language{float:right;color:rgba(51,51,51,0.75);font-size:12px;margin-left:10px}.code-list img.avatar{float:left;border-radius:3px;margin-left:3px}.code-list .code-list-item{border-bottom:1px solid #f1f1f1;padding:0 0 20px 0;margin:0 0 20px 0}.code-list .code-list-item pre.line_numbers{min-width:27px;box-sizing:border-box}.code-list .code-list-item .data{background:#fff}.code-list .private .bubble{background-color:#F8EEC7}.code-list .private .bubble pre.line_numbers{background-color:#F8EEC7;border-right:1px solid #F7CA75}.code-list .private .bubble pre.line_numbers a{color:#A1882B}.code-list .private .bubble .file-box{border:1px solid #F7CA75}.code-list .divider .blob-line-nums,.code-list .divider .blob-line-code .highlight{padding-top:0;padding-bottom:0;background-color:#eaf2f5}.code-list .full-path{margin:0 0 0 40px}.code-list .full-path .octicon-repo{color:#666666}.code-list .full-path .octicon-lock{color:#E9DBA4}.code-list .full-path a{color:#999999}.codesearch-head{padding-bottom:20px}.codesearch-head.in-repository{margin:20px 0;padding-bottom:0}.codesearch-head.pagehead h1{float:left;margin:0 20px 0 0;width:220px;line-height:33px}.codesearch-head button{float:right}.codesearch-head #adv_code_search .completed-query{margin:0;position:absolute;top:8px;left:8px;right:8px;white-space:nowrap;overflow:hidden}.codesearch-head #adv_code_search .completed-query span{opacity:0}.codesearch-head #adv_code_search .search-page-label{width:658px;display:inline-block;cursor:text;position:relative;font-weight:normal}.codesearch-head #adv_code_search .search-page-label.focus .completed-query{opacity:0.6}.codesearch-head #adv_code_search .search-page-input{border:none;box-shadow:none;padding:0;margin:0;width:100%;min-height:0}.advanced-search-form h3{margin-top:20px}.advanced-search-form .flattened dt label{font-weight:normal}.advanced-search-form .flattened dt{width:220px}.advanced-search-form .flattened dd{margin-left:240px}.advanced-search-form .form-checkbox{margin-left:240px}.advanced-search-form fieldset{border-bottom:1px solid #F1F1F1;padding-bottom:20px;margin-bottom:30px}.codesearch-cols .aside{float:left;width:220px}.codesearch-cols .aside .menu-container{width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.codesearch-cols .aside .menu-container .octicon{width:16px;text-align:center;margin-right:5px}.codesearch-cols .aside .search-menu-container{margin-bottom:20px;padding-bottom:20px;border-bottom:1px solid #F1F1F1;overflow:hidden}.codesearch-cols .aside .meta-search-links{margin-top:20px}.codesearch-cols .aside .meta-search-links a{margin-right:10px}.codesearch-cols .aside .filter-list{border-bottom:1px solid #F1F1F1;margin-bottom:20px;padding-bottom:20px}.codesearch-cols .aside .filter-list li{position:relative}.codesearch-cols .aside .filter-list li span.bar{background:#f1f1f1;display:inline-block;position:absolute;z-index:-1;top:2px;bottom:2px;right:0}.codesearch-cols.in-repository .aside .search-menu-container{border-bottom:none}.codesearch-cols div.context-loader.large-format-loader{padding-top:5%}.codesearch-cols .main-content{position:relative;margin-left:240px}.codesearch-cols .main-content .tabnav{margin-bottom:20px}.codesearch-cols .main-content ul.members-list{margin-top:0}.codesearch-cols .main-content ul.members-list li:first-child{padding-top:0}.codesearch-cols ul.repolist h3 a:visited,.codesearch-cols .code-list .title a:visited{color:#7C65C2}.codesearch-cols ul.repolist h3 a em,.codesearch-cols ul.repolist .description em{background-color:rgba(255,255,140,0.5);font-weight:bold;padding:2px 1px 0;font-style:normal;margin:0 -1px;text-shadow:none}.codesearch-cols .search-foot-note{float:right;color:#999999;margin-top:11px}.simple-search-page{padding-top:120px}.simple-search-page h2{font-weight:normal}.simple-search-page h2 .mega-octicon{vertical-align:middle}.simple-search-page .container{width:740px}.simple-search-page .commandbar{float:left;margin-right:5px}.simple-search-page .help{display:none}#code_search input,.simple-search-page input{width:658px;margin-right:0}.in-repository #code_search{padding-bottom:0}.in-repository #code_search input{width:595px}.sort-bar{border-bottom:1px solid #f1f1f1;margin-bottom:20px;padding-bottom:20px}.sort-bar .sort-label{padding-right:5px;font-weight:200;font-size:13px;color:#666}.sort-bar .select-menu{float:right;position:relative;top:-6px}.sort-bar h3{margin:0}.sort-bar .sort-form{float:right}.sort-bar .sort-link{font-weight:bold;color:#8A8A8A;text-decoration:none;margin-top:4px}.sort-form .sort-icon{border:5px solid #8A8A8A;height:0;width:0;display:inline-block;margin-left:5px}.sort-form .sort-desc .sort-icon{border-color:#8A8A8A transparent transparent;border-width:5px 4px 2px}.sort-form .sort-asc .sort-icon{border-color:transparent transparent #8A8A8A;border-width:2px 4px 5px}#ace-editor{position:relative;font-family:Monaco, "Liberation Mono", Courier, monospace}#ace-editor .ace_content{line-height:normal}.ace-twilight .ace_editor{border:2px solid #9f9f9f}.ace-twilight .ace_editor.ace_focus{border:2px solid #327fbd}.ace-twilight .ace_gutter{width:50px;background:#ECECEC;color:#AAA;overflow:hidden;border-right:1px solid #DDD;font-family:Consolas, "Liberation Mono", Courier, monospace}.ace-twilight .ace_gutter-layer{width:100%;text-align:right}.ace-twilight .ace_gutter-layer .ace_gutter-cell{padding-right:6px}.ace-twilight .ace_print_margin{width:1px;background:#e8e8e8}.ace-twilight .ace_scroller{background-color:#141414}.ace-twilight .ace_text-layer{cursor:text;color:#F8F8F8}.ace-twilight .ace_cursor{border-left:2px solid #F8F8F8}.ace-twilight .ace_cursor.ace_overwrite{border-left:0px;border-bottom:1px solid #A7A7A7}.ace-twilight .ace_marker-layer .ace_selection{background:rgba(221,240,255,0.2)}.ace-twilight .ace_marker-layer .ace_step{background:#c6dbae}.ace-twilight .ace_marker-layer .ace_bracket{margin:-1px 0 0 -1px;border:1px solid rgba(255,255,255,0.25)}.ace-twilight .ace_marker-layer .ace_active_line{background:rgba(255,255,255,0.12)}.ace-twilight .ace_invisible{color:rgba(255,255,255,0.25)}.ace-twilight .ace_keyword{color:#CDA869}.ace-twilight .ace_constant{color:#CF6A4C}.ace-twilight .ace_invalid.ace_illegal{color:#F8F8F8;background-color:rgba(86,45,86,0.75)}.ace-twilight .ace_invalid.ace_deprecated{text-decoration:underline;font-style:italic;color:#D2A8A1}.ace-twilight .ace_support{color:#9B859D}.ace-twilight .ace_support.ace_function{color:#DAD085}.ace-twilight .ace_string{color:#8F9D6A}.ace-twilight .ace_string.ace_regexp{color:#E9C062}.ace-twilight .ace_comment{font-style:italic;color:#5F5A60}.ace-twilight .ace_variable{color:#7587A6}.ace-twilight .ace_xml_pe{color:#494949}.ace-solarized-dark .ace_editor{border:2px solid #9f9f9f}.ace-solarized-dark .ace_editor.ace_focus{border:2px solid #327fbd}.ace-solarized-dark .ace_gutter{width:50px;background:#e8e8e8;color:#333;overflow:hidden}.ace-solarized-dark .ace_gutter-layer{width:100%;text-align:right}.ace-solarized-dark .ace_gutter-layer .ace_gutter-cell{padding-right:6px}.ace-solarized-dark .ace_print_margin{width:1px;background:#e8e8e8}.ace-solarized-dark .ace_scroller{background-color:#002B36}.ace-solarized-dark .ace_text-layer{cursor:text;color:#93A1A1}.ace-solarized-dark .ace_cursor{border-left:2px solid #D30102}.ace-solarized-dark .ace_cursor.ace_overwrite{border-left:0px;border-bottom:1px solid #D30102}.ace-solarized-dark .ace_marker-layer .ace_selection{background:#073642}.ace-solarized-dark .ace_marker-layer .ace_step{background:#c6dbae}.ace-solarized-dark .ace_marker-layer .ace_bracket{margin:-1px 0 0 -1px;border:1px solid rgba(147,161,161,0.5)}.ace-solarized-dark .ace_marker-layer .ace_active_line{background:#073642}.ace-solarized-dark .ace_invisible{color:rgba(147,161,161,0.5)}.ace-solarized-dark .ace_keyword{color:#859900}.ace-solarized-dark .ace_constant.ace_language{color:#B58900}.ace-solarized-dark .ace_constant.ace_numeric{color:#D33682}.ace-solarized-dark .ace_support.ace_function{color:#268BD2}.ace-solarized-dark .ace_string{color:#2AA198}.ace-solarized-dark .ace_string.ace_regexp{color:#D30102}.ace-solarized-dark .ace_comment{font-style:italic;color:#657B83}.ace-solarized-dark .ace_variable.ace_language{color:#268BD2}.ace-solarized-light .ace_editor{border:2px solid #9f9f9f}.ace-solarized-light .ace_editor.ace_focus{border:2px solid #327fbd}.ace-solarized-light .ace_gutter{width:50px;background:#e8e8e8;color:#333;overflow:hidden}.ace-solarized-light .ace_gutter-layer{width:100%;text-align:right}.ace-solarized-light .ace_gutter-layer .ace_gutter-cell{padding-right:6px}.ace-solarized-light .ace_print_margin{width:1px;background:#e8e8e8}.ace-solarized-light .ace_scroller{background-color:#FDF6E3}.ace-solarized-light .ace_text-layer{cursor:text;color:#586E75}.ace-solarized-light .ace_cursor{border-left:2px solid #000000}.ace-solarized-light .ace_cursor.ace_overwrite{border-left:0px;border-bottom:1px solid #000000}.ace-solarized-light .ace_marker-layer .ace_selection{background:#073642}.ace-solarized-light .ace_marker-layer .ace_step{background:#c6dbae}.ace-solarized-light .ace_marker-layer .ace_bracket{margin:-1px 0 0 -1px;border:1px solid rgba(147,161,161,0.5)}.ace-solarized-light .ace_marker-layer .ace_active_line{background:#EEE8D5}.ace-solarized-light .ace_invisible{color:rgba(147,161,161,0.5)}.ace-solarized-light .ace_keyword{color:#859900}.ace-solarized-light .ace_constant.ace_language{color:#B58900}.ace-solarized-light .ace_constant.ace_numeric{color:#D33682}.ace-solarized-light .ace_support.ace_function{color:#268BD2}.ace-solarized-light .ace_string{color:#2AA198}.ace-solarized-light .ace_string.ace_regexp{color:#D30102}.ace-solarized-light .ace_comment{color:#93A1A1}.ace-solarized-light .ace_variable.ace_language{color:#268BD2}.details-collapse .collapse{display:none;position:relative;height:0;overflow:hidden;transition:height 0.35s ease;-webkit-transition:height 0.35s ease 0}.details-collapse.open .collapse{display:block;height:auto}.discussion-bubble{margin:20px 0}.discussion-bubble .boxed-group{margin:0}.discussion-bubble .discussion-bubble-avatar{position:relative;float:left;border-radius:3px}.discussion-bubble .discussion-bubble-content{position:relative;margin-left:60px}.discussion-bubble .discussion-bubble-content:before{content:"";display:block;height:0;width:0;border:10px solid #EEE;border-width:10px 10px 10px 0;border-color:rgba(238,238,238,0) #eee rgba(238,238,238,0) rgba(238,238,238,0);position:absolute;left:-10px;top:15px}.discussion-bubble .form-actions{margin:10px 0 0 60px}.discussion-bubble.placeholder-bubble .placeholder-text{margin:11px 0;padding:0 10px;font-weight:bold}.discussion-bubble.placeholder-bubble .placeholder-text .help-link{float:right;text-decoration:none;color:#999}.discussion-bubble.placeholder-bubble .discussion-bubble-inner{color:#4183c4}.discussion-bubble.placeholder-bubble.is-clickable .discussion-bubble-inner{cursor:pointer}.discussion-bubble.placeholder-bubble.is-clickable .discussion-bubble-content:hover{background-color:#E5EEF3}.discussion-bubble.placeholder-bubble.is-clickable .discussion-bubble-content:hover:before{border-color:rgba(229,238,243,0) #e5eef3 rgba(229,238,243,0) rgba(229,238,243,0)}.discussion-bubble.placeholder-bubble.is-clickable .discussion-bubble-content:hover .discussion-bubble-inner{border-color:#4183c4}.discussion-bubble.placeholder-bubble.disabled .placeholder-text{font-weight:normal;color:#999}.mini-discussion-bubble .mini-discussion-bubble-action{margin:10px 0 15px 8px;height:24px;font-size:13px;font-weight:300;color:#333}.mini-discussion-bubble .mini-discussion-bubble-action a{font-weight:bold;color:#333}.mini-discussion-bubble .mini-discussion-bubble-action .discussion-anchor-link{font-weight:300;color:#999}.mini-discussion-bubble .mini-discussion-bubble-action span{color:#999}.mini-discussion-bubble .discussion-bubble-avatar{border-radius:3px;vertical-align:middle;display:inline-block;height:24px;margin-right:3px}.mini-discussion-bubble .discussion-bubble-content{position:relative}.mini-discussion-bubble .discussion-bubble-content:before{content:"";display:block;height:0;width:0;border:10px solid #EEE;border-width:0 10px 10px 10px;border-color:rgba(238,238,238,0) rgba(238,238,238,0) #eee rgba(238,238,238,0);position:absolute;left:10px;top:-10px}.mini-discussion-bubble .discussion-bubble-inner{min-height:30px;background-color:#fff}.mini-discussion-bubble .file-box{margin:0}.mini-discussion-bubble tr:last-child .line_numbers.comment-count,.mini-discussion-bubble tr:last-child .line-comments{border-bottom:0}.discussion-bubble-inner{min-height:32px;border:1px solid #CACACA;background-color:#fff}.comment.is-comment-editing .edit-comment-hide{display:none}.comment.is-comment-editing .form-content{display:block;opacity:1.0}.comment.is-comment-loading .context-loader{display:block}.comment.is-comment-loading .formatted-content,.comment.is-comment-loading .form-content{opacity:0.5}.comment.is-comment-error .comment-form-error{display:block}.comment.is-comment-error .comment-content{padding-top:10px}.comment.is-comment-stale .comment-form-stale{display:block}.comment.is-comment-stale .comment-content{padding-top:10px}.comment.is-comment-stale .form-content{opacity:0.75}.comment+.comment{border-top:1px solid #CACACA}.comment-header{height:33px;padding:0 10px 0 6px;border-bottom:1px solid #ccc;background-color:#e1e1e1;background-image:-moz-linear-gradient(#f8f8f8, #e1e1e1);background-image:-webkit-linear-gradient(#f8f8f8, #e1e1e1);background-image:linear-gradient(#f8f8f8, #e1e1e1);background-repeat:repeat-x;font-size:12px}.comment-header .comment-header-gravatar{display:inline-block;margin-right:3px;vertical-align:middle;border-radius:3px}.comment-header .comment-type-icon{text-decoration:none}.comment-header .comment-header-author{max-width:600px;line-height:33px;font-weight:bold;color:#222;text-shadow:1px 1px 0 rgba(255,255,255,0.7);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.comment-header .comment-header-author a{color:#333}.comment-header .comment-header-tag{margin-left:5px;padding:2px 5px 3px;font-size:11px;color:#fff;text-shadow:-1px -1px 0 rgba(0,0,0,0.2);background:#2d90c3;border-radius:2px}.comment-header .comment-header-right{float:right}.comment-header .comment-header-date{display:inline-block;margin:0;height:33px;font-size:11px;line-height:33px;font-style:normal;color:#777;text-shadow:1px 1px 0 rgba(255,255,255,0.7);line-height:33px}.comment-header .comment-header-actions{display:inline-block;vertical-align:middle;font-size:13px}.comment-header .comment-header-actions li{list-style-type:none;float:left;margin:0 0 0 8px;height:33px;line-height:31px}.comment-header .comment-header-actions li .octicon{transition:all 0.15s ease-in;-webkit-transition:all 0.15s ease-in 0;text-decoration:none}.comment-header .comment-header-actions li:hover .octicon{color:#4183c4}.comment-header a{color:#666}.comment-header code{font-size:11px}.comment-header .octicon{color:#939AA0;margin:8px 2px 0 1px}.repo-owner-comment .comment-header{background-color:#d8e5dd;background-image:-moz-linear-gradient(#f4faf6, #d8e5dd);background-image:-webkit-linear-gradient(#f4faf6, #d8e5dd);background-image:linear-gradient(#f4faf6, #d8e5dd);background-repeat:repeat-x}.repo-owner-comment .comment-header-tag{background:#2cc03e}.discussion-reference .comment-header,.discussion-commit-list .comment-header,.repo-collab-comment .comment-header{background-color:#dde8eb;background-image:-moz-linear-gradient(#f8fbfc, #dde8eb);background-image:-webkit-linear-gradient(#f8fbfc, #dde8eb);background-image:linear-gradient(#f8fbfc, #dde8eb);background-repeat:repeat-x}.inline-review-comment .inline-comments .comment-holder{max-width:690px}.inline-review-comment .inline-comments .inline-comment-form{max-width:710px}.comment-content{padding:0;color:#333;font-size:12px;background:#fbfbfb}.comment-content .comment-body-title{padding:10px 10px 0 10px;font-weight:bold;color:#000}.comment-content .comment-body{padding:10px;font-size:13px;overflow:auto;width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.comment-content .comment-body .highlight{background-color:transparent}.comment-content .comment-body .highlight pre{margin-top:0;margin-bottom:0}.comment-content .form-content{padding:10px;display:none;opacity:1.0}.comment-content .form-content textarea{margin:0;width:100%;max-width:100%;height:100px;min-height:100px}.comment-content .form-content textarea.dragover{border:solid 1px #4183C4}.comment-content .form-content input[type="text"]{margin-bottom:5px;width:100%}.comment-content .form-content input.title-field{font-size:20px;font-weight:bold}.comment-content .form-content .form-actions{margin:10px 0 0 0}.comment-content .email-format{line-height:1.5}.comment-content .context-loader{display:none}.comment-content .comment-cancel-button{float:left}.discussion-reference-content .state{float:right;padding:3px 10px;margin:-1px 0;font-size:12px;color:#fff;background:#6cc644;border-radius:3px}.discussion-reference-content .state-closed{background-color:#bd2c00}.discussion-reference-content .state-merged{background-color:#8fb6dc}.discussion-reference-content h2{margin:0 !important;font-size:14px}.discussion-reference-content h2 a{color:#000}.discussion-reference-content h2 span{color:#999}.discussion-topic .branch-status{width:100%;padding:10px;-moz-box-sizing:border-box;box-sizing:border-box;color:#a1882b;background-color:#f8eec7;border-top:1px solid #e2cc7a}.discussion-topic .branch-status>p{margin:0}.discussion-topic .branch-status>p a{font-weight:bold}.discussion-topic .branch-status .octicon{margin-right:2px}.discussion-topic .branch-status.status-success{color:#5d8a4a;background-color:#d8f5cd;border-top-color:#a5d792}.discussion-topic .branch-status.status-error,.discussion-topic .branch-status.status-failure{padding-top:13px;color:#333;background:url("/images/modules/pulls/dirty-shade.png?aa53f501") 0 0 repeat-x #eee;border-top-color:#bbb}.discussion-topic .comment-content{position:relative}.discussion-topic-header{position:relative;padding:10px;word-wrap:break-word}.discussion-topic-header .discussion-topic-author{color:#666;font-size:12px}.discussion-topic-header .discussion-topic-author a{font-weight:bold;color:#666}.discussion-topic-header .discussion-topic-title{border-bottom:none;margin:0;padding-right:50px}.discussion-topic-header .comment-topic-actions{position:absolute;top:10px;right:10px;list-style-type:none}.discussion-hidden{opacity:0.75}.discussion-versions-info{padding:10px;color:#666;font-size:11px}.discussion-versions-info a{font-weight:bold;color:#666666}.discusion-topic-infobar{width:100%;height:47px;padding:10px 10px 4px;border:1px solid #e5e5e5;border-width:1px 0;background:#f5f5f5;-moz-box-sizing:border-box;box-sizing:border-box}.discusion-topic-infobar .progress-bar{display:inline-block;vertical-align:middle;margin-left:5px}.comment-form-error,.comment-form-stale{display:none;margin:0 10px;padding:5px 10px;font-weight:bold;color:#900;background-color:#FFEAEA;border:1px solid #E2A0A0}.comment-form-error.comment-form-bottom,.comment-form-stale.comment-form-bottom{margin-bottom:10px}.comment-form-stale{margin-top:0}.email-format{line-height:1.5em !important}.email-format div{white-space:pre-wrap}.email-format .email-hidden-reply{display:none;white-space:pre-wrap}.email-format .email-quoted-reply,.email-format .email-signature-reply{margin:0 0 15px 0;border-left:4px solid #ddd;padding:0 15px;color:#777}.email-format .email-hidden-toggle a{display:inline-block;height:12px;padding:0 9px;border-radius:1px;background:#ddd;vertical-align:middle;color:#555;line-height:6px;font-size:12px;font-weight:bold;text-decoration:none}.email-format .email-hidden-toggle a:hover{background-color:#ccc}.email-format .email-hidden-toggle a:active{background-color:#4183C4;color:#fff}.comment-email-format div{white-space:normal}.comment-email-format .email-hidden-reply{display:none;white-space:normal}.comment-email-format blockquote,.comment-email-format p{margin:0}.inline-comments{background-color:#f9f9f9}.inline-comments .inline-comment-form{margin-top:-10px;background-color:#fff}.inline-comments .tabnav{margin-top:-10px;padding-top:10px;background-color:#f9f9f9}.inline-comments .comment{margin:5px 0 !important;border:1px solid #CACACA}.inline-comments .comment-header-action-text{display:none}.inline-comments .line-comments{overflow:auto;padding:0;font-family:Helvetica, arial, freesans, clean, sans-serif !important}.inline-comments .line-comments .comment-content{position:relative}.inline-comments .line-comments .comment-content .suggester-container{top:10px}.inline-comments .comment-count,.inline-comments .line-comments{border-top:1px solid #ccc;border-bottom:1px solid #ccc}.inline-comments .comment-count{padding-top:8px;text-align:center;vertical-align:top;border-right:1px solid #e5e5e5}.inline-comments:last-child .comment-count{border-bottom:0}.inline-comments .comment-holder{max-width:816px;margin:10px}.inline-comments .comment-holder .form-actions{padding:0}.inline-comments .ajaxindicator{display:inline-block;vertical-align:bottom}.inline-comments .optional{padding-top:3px}.inline-comments .form-actions{padding:0 10px 10px}.only-commit-comments .inline-comment{display:none}.file-comments{padding:5px;font-family:Helvetica, arial, freesans, clean, sans-serif !important;background:#fafafa;border-top:1px solid #ddd}.deprecated-comment-form{position:relative;margin:-10px 0 10px 0;padding:5px;background:#eee;border-radius:5px}.deprecated-comment-form textarea{margin:0;width:100%;height:100px}.deprecated-comment-form p.help{margin:3px 0 0;float:right;font-size:11px;color:#666}.deprecated-comment-form.write-selected .write-tab,.deprecated-comment-form.preview-selected .preview-tab{color:#333;background:#fff;border-color:#bbb;border-right-color:#ddd;border-bottom-color:#ddd}.deprecated-comment-form .write-content,.deprecated-comment-form .preview-content{display:none}.deprecated-comment-form.write-selected .write-content,.deprecated-comment-form.preview-selected .preview-content{display:block}.deprecated-comment-form .edit-preview-tabs{margin:0 0 5px 0;line-height:13px}.deprecated-comment-form .edit-preview-tabs li{list-style-type:none;margin:0;display:inline-block}.deprecated-comment-form .edit-preview-tabs li a{display:inline-block;padding:2px 8px;font-size:11px;font-weight:bold;text-decoration:none;color:#666;border:1px solid transparent;border-radius:10px}.commit-list em{background-color:rgba(255,255,140,0.5);font-weight:bold;padding:2px 1px 0;font-style:normal;margin:0 -1px}.commit-list .gravatar{float:left;margin-left:-44px;border-radius:4px}.commit-list .title{padding:0;min-height:24px;font-weight:normal;font-size:18px;line-height:24px;margin:0 0 5px}.commit-list .title a:visited{color:#7C65C2}.commit-list .description{margin:0 0 10px;overflow:hidden}.commit-list .description pre{max-width:525px}.commit-list .created-at{font-size:11px;font-weight:normal;margin:0px}.commit-list .created-at a{color:#999999;font-weight:bold}.commit-list .created-at a:visited{color:#999999}.commit-list .commit-meta{font-size:11px;margin:0;list-style-type:none;overflow:hidden;color:#999999}.commit-list .commit-meta>li{float:left;margin-right:10px}.commit-list .commit-meta a{color:#333333}.commit-list .commit-meta .octicon{color:#838383;vertical-align:middle}.commit-list .commit-list-item{border-bottom:1px solid #f1f1f1;padding:0 0 20px 40px;margin:0 0 20px 0;position:relative}.commit-list .commit-list-item .commit-links{position:absolute;top:2px;right:0px;white-space:nowrap}.commit-list .commit-list-item .gobutton{float:left;height:22px;padding:0 7px;line-height:22px;font-size:11px;color:#4e575b;text-shadow:0 1px rgba(255,255,255,0.5);background-color:#ddecf3;background-image:-moz-linear-gradient(#eff6f9, #ddecf3);background-image:-webkit-linear-gradient(#eff6f9, #ddecf3);background-image:linear-gradient(#eff6f9, #ddecf3);background-repeat:repeat-x;border:1px solid #cedee5;border-radius:3px}.commit-list .commit-list-item .gobutton:hover{text-decoration:none;border-color:#cedee5;background-color:#eaf4f8;background-image:-moz-linear-gradient(#fbfdfe, #eaf4f8);background-image:-webkit-linear-gradient(#fbfdfe, #eaf4f8);background-image:linear-gradient(#fbfdfe, #eaf4f8);background-repeat:repeat-x}.commit-list .commit-list-item .gobutton>.sha,.commit-list .commit-list-item .gobutton:hover>.sha{display:inline-block;height:22px;margin-right:-3px;font-size:11px;font-family:Monaco, "Liberation Mono", Courier, monospace}.commit-list .commit-list-item .gobutton>.sha .octicon,.commit-list .commit-list-item .gobutton:hover>.sha .octicon{position:relative;top:1px;border-radius:30px;border:1px solid #CFDEE5;background-color:rgba(255,255,255,0.5);color:#91a6b1;margin-left:5px;width:16px;text-align:center}.commit-list .commit-list-item .browse-button{float:right;clear:left;margin-top:1px;font-size:11px;font-weight:bold;text-align:right;color:#999}.commit-list .commit-list-item .browse-button .octicon{position:relative;top:1px;margin-left:2px}.commit-list .commit-list-item .browse-button:hover{color:#4183C4;background-position:100% -95px}.commit-list .commit-list-item .browse-button:hover .octicon{color:#4183C4}.commit-comments-header{margin:20px 0 5px 0;font-size:16px}.commit-comments-header-sha{font-weight:normal;font-size:14px}.commit-comments-header-quiet{font-style:normal;font-weight:normal;color:#888}.commit-comments-toggle-line-notes-wrapper{position:relative;top:5px;float:right;font-size:11px;font-weight:normal;color:#666}.commit-comments-toggle-line-notes{position:relative;top:1px;margin-right:5px}.commit-comments{margin-bottom:20px}.commit-gitnotes{background:#f5f5f5;padding:5px}.commit-gitnotes-content{border:1px solid #aaa;background:#ffd;padding:15px 10px 10px}.commit-gitnotes-ref{font-size:12px;background:#eea;padding:3px}.form-actions .tip{margin:0 0 10px 0;float:left;width:350px;padding:5px;text-align:left;font-size:12px;color:#333;background:#fafbd2;border:1px solid #e8eac0;border-right-color:#f5f7ce;border-bottom-color:#f5f7ce;border-radius:4px}.form-actions .tip img{float:left;margin-right:10px;border:1px solid #ccc}.form-actions .tip p{margin:2px 0}.commit .commit-title,.commit .commit-title a{color:#4e575b}.commit .commit-title.blank,.commit .commit-title.blank a{color:#9cabb1}.commit .commit-title .issue-link{color:#4183C4;font-weight:bold}.commit .commit-title .commit-link{color:#4183C4;font-weight:normal}.commit .commit-desc pre{max-width:700px;white-space:pre-wrap;font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:13px;color:#596063;margin:10px 0}.commit .sha-block,.commit .sha{font-size:11px;font-family:Monaco, "Liberation Mono", Courier, monospace}.commit .commit-desc{display:none}.commit.open .commit-desc{display:block}.commit-tease{padding:8px 8px 0;background:#e6f1f6;border:1px solid #b7c7cf;border-bottom-color:#d8e6ec;border-top-right-radius:2px;border-top-left-radius:2px}.commit-tease .comment-count{float:right;margin-top:1px;color:#7f9199;font-size:11px}.commit-tease .comment-count .octicon{vertical-align:middle;margin-left:5px}.commit-tease p.commit-title{margin:0 0 6px 0}.commit-tease .commit-desc{margin:-3px 0 10px 0}.commit-tease .commit-desc pre{font-size:11px}.commit-tease .commit-meta{margin-left:-8px;margin-right:-8px;padding:8px;background:#fff;border-top:1px solid #d8e6ec;-moz-box-sizing:border-box;box-sizing:border-box}.commit-tease .commit-meta .loader-loading{margin:0 0 -9px}.commit-tease .zeroclipboard-link{float:right;margin-left:5px;margin-top:-2px}.commit-tease .sha-block{float:right;color:#888}.commit-tease .sha-block>.sha{color:#444}.commit-tease .sha-block>a{color:#444;text-decoration:none}.commit-tease .authorship{margin:-2px 0 -4px -4px;font-size:12px;color:#999}.commit-tease .authorship a{color:#444;text-decoration:none;font-weight:bold}.commit-tease .authorship a:hover{text-decoration:underline}.commit-tease .authorship .gravatar{margin:-2px 3px 0 0;vertical-align:middle;border-radius:3px}.commit-tease .authorship .author-name{color:#444}.commit-tease .authorship .committer{display:block;margin-left:30px;font-size:11px}p.branch-discussion{float:right;margin:8px 8px 0 0;font-weight:bold;font-size:16px}p.history-link{float:right;margin:8px 0 0 20px;font-weight:bold;font-size:16px}h3.commit-group-heading{margin:15px 0 0 0;padding:5px 8px;font-size:13px;color:#3a505b;text-shadow:0 1px white;background:#e6f1f6;border:1px solid #c5d5dd;border-top-right-radius:4px;border-top-left-radius:4px}.commit-group{list-style-type:none;margin:0 0 15px 0;background:#f7fbfc;border:1px solid #c5d5dd;border-top:none;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.commit-group-item{position:relative;padding:8px 8px 8px 52px;border-top:1px solid #e2eaee}.commit-group-item:first-child{border-top:none}.commit-group-item:last-child{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.commit-group-item:nth-child(2n+1){background:#fff}.commit-group-item.navigation-focus{background:#fcfce2}.commit-group-item .gravatar{float:left;margin-left:-44px;border-radius:4px}.commit-group-item .commit-title{margin:1px 0 1px 0;font-size:14px;font-weight:bold;color:#333}.commit-group-item .commit-title a{color:#333}.commit-group-item .commit-desc pre{margin-top:5px;margin-bottom:10px;font-size:12px;color:#596063;border-left:1px solid #e5e5e5;padding-left:8px}.commit-group-item .authorship{font-size:12px;color:#888}.commit-group-item .authorship a{color:#444}.commit-group-item .authorship .author-name{color:#444}.commit-group-item .authorship .committer{display:block;font-size:11px}.commit-group-item .commit-links{position:absolute;top:7px;right:8px;white-space:nowrap}.commit-group-item .zeroclipboard-button{visibility:hidden;float:left;margin-right:7px}.commit-group-item:hover .zeroclipboard-button,.zeroclipboard-button.zeroclipboard-is-hover,.zeroclipboard-button.zeroclipboard-is-active{visibility:visible}.commit-group-item .gobutton{float:left;height:24px;padding:0 10px;line-height:24px;font-size:11px;color:#4e575b;text-shadow:0 1px rgba(255,255,255,0.5);background-color:#ddecf3;background-image:-moz-linear-gradient(#eff6f9, #ddecf3);background-image:-webkit-linear-gradient(#eff6f9, #ddecf3);background-image:linear-gradient(#eff6f9, #ddecf3);background-repeat:repeat-x;border:1px solid #cedee5;border-radius:3px}.commit-group-item.navigation-focus .gobutton{color:#5a5b4e}.commit-group-item:nth-child(2n+1) .gobutton{border-color:#d5dcdf;background-color:#e3eaed;background-image:-moz-linear-gradient(#f2f5f6, #e3eaed);background-image:-webkit-linear-gradient(#f2f5f6, #e3eaed);background-image:linear-gradient(#f2f5f6, #e3eaed);background-repeat:repeat-x}.commit-group-item.navigation-focus .gobutton{border-color:#e7e86d;background-color:#f3f494;background-image:-moz-linear-gradient(#f9fac9, #f3f494);background-image:-webkit-linear-gradient(#f9fac9, #f3f494);background-image:linear-gradient(#f9fac9, #f3f494);background-repeat:repeat-x}.commit-group-item .gobutton:hover{text-decoration:none;border-color:#cedee5;background-color:#eaf4f8;background-image:-moz-linear-gradient(#fbfdfe, #eaf4f8);background-image:-webkit-linear-gradient(#fbfdfe, #eaf4f8);background-image:linear-gradient(#fbfdfe, #eaf4f8);background-repeat:repeat-x}.commit-group-item .gobutton>.sha,.commit-group-item.navigation-focus .gobutton:hover>.sha{display:inline-block;height:22px;margin-right:-3px}.commit-group-item .gobutton>.sha .octicon,.commit-group-item.navigation-focus .gobutton:hover>.sha .octicon{position:relative;top:1px;border-radius:30px;border:1px solid #CFDEE5;background-color:rgba(255,255,255,0.5);color:#91a6b1;margin-left:5px;width:16px;text-align:center}.commit-group-item.navigation-focus .gobutton>.sha .octicon{border:1px solid #E7E86D;color:#c3c45c}.commit-group-item .gobutton.with-comments{padding-left:5px}.commit-group-item .gobutton.with-comments .sha,.commit-group-item.navigation-focus .gobutton.with-comments:hover .sha{padding-left:8px;border-left:1px solid #cfdee5}.commit-group-item.navigation-focus .gobutton.with-comments .sha{border-left-color:#e1e29e}.commit-group-item .gobutton .comment-count,.commit-group-item.navigation-focus .gobutton:hover .comment-count{float:left;height:22px;padding-right:9px;line-height:24px;font-weight:bold;border-right:1px solid #f6fafc}.commit-group-item .gobutton .comment-count .octicon,.commit-group-item.navigation-focus .gobutton:hover .comment-count .octicon{color:#91A6B1}.commit-group-item.navigation-focus .gobutton .comment-count .octicon{color:#C3C45C}.commit-group-item .browse-button{float:right;clear:left;margin-top:1px;font-size:11px;font-weight:bold;text-align:right;color:#999}.commit-group-item .browse-button .octicon{position:relative;top:1px;margin-left:2px}.commit-group-item .browse-button:hover{color:#4183C4;background-position:100% -95px}.commits-condensed{margin-top:0;border:none;background-color:#fff}.commits-condensed td{padding:4px;vertical-align:top;border-top:1px solid #E2EAEE}.commits-condensed tr:nth-child(2n) td{background:#F7FBFC}.commits-condensed tr:first-child td{border-top:0}.commits-condensed td.commit{padding-left:0.5em}.commits-condensed td.gravatar{width:1%;padding:5px}.commits-condensed span.gravatar{display:block;line-height:1px;padding:1px;border:1px solid #ddd;background:#fff;-moz-box-sizing:border-box;box-sizing:border-box}.commits-condensed span.gravatar a{display:inline-block}.commits-condensed td.author{padding-left:0;color:#666;width:80px;font-weight:bold}.commits-condensed td.author span.commit-author{display:inline-block;width:80px;text-overflow:ellipsis;overflow:hidden;line-height:22px;white-space:nowrap}.commits-condensed td.author a{color:#333}.commits-condensed td.date{text-align:right;color:#777}.commits-condensed td.message{padding-left:0}.commits-condensed td.message .user-mention{font-weight:normal}.commits-condensed td.message a{color:#333}.commits-condensed td.message code,.commits-condensed td.message em{line-height:22px}.commits-condensed td.commit-meta{width:1%;text-align:right;white-space:nowrap;padding-right:10px}.commits-condensed td.commit-meta code{line-height:22px}.commits-condensed code{font-family:Monaco, "Liberation Mono", Courier, monospace}.commits-condensed .commit-desc pre{margin-top:5px;margin-bottom:4px;padding-left:8px;font-size:11px;font-weight:normal;color:#596063;word-break:break-word;border-left:1px solid #e5e5e5}.full-commit{margin:10px 0;padding:8px 8px 0;background:#e6f1f6;border:1px solid #c5d5dd;border-radius:4px}.full-commit .browse-button{float:right;margin:-3px -3px 0 0;height:26px;padding:0 10px;line-height:26px;font-size:13px;font-weight:bold;text-shadow:0 1px rgba(255,255,255,0.5);background-color:#ddecf3;background-image:-moz-linear-gradient(#eff6f9, #ddecf3);background-image:-webkit-linear-gradient(#eff6f9, #ddecf3);background-image:linear-gradient(#eff6f9, #ddecf3);background-repeat:repeat-x;border:1px solid #cedee5;border-radius:3px}.full-commit p.commit-title{margin:0 0 8px 0;font-size:18px;font-weight:bold;color:#213f4d;text-shadow:0 1px rgba(255,255,255,0.5)}.full-commit .commit-desc,.commit-desc-container .commit-desc{display:block;margin:-5px 0 10px 0}.full-commit .commit-desc pre,.commit-desc-container .commit-desc pre{max-width:100%;font-size:14px;text-shadow:0 1px rgba(255,255,255,0.5)}.full-commit .commit-branches{color:#818c90;font-size:12px;vertical-align:middle;margin-top:-6px;margin-bottom:8px}.full-commit .commit-branches .octicon{vertical-align:middle}.full-commit .commit-desc+.commit-branches{border-top:solid 1px #d1e2eb;margin-top:2px;padding-top:8px}.full-commit .branches-list{display:inline-block;list-style:none;margin-right:10px;vertical-align:middle}.full-commit .branches-list li{padding-left:3px;display:inline-block}.full-commit .branches-list li:before{content:'+';padding-right:6px}.full-commit .branches-list li:first-child{color:#596063;font-weight:bold;padding-left:0}.full-commit .branches-list li:first-child:before{content:'';padding-right:0}.full-commit .branches-list li.loading{color:#818c90;font-weight:normal}.full-commit .branches-list li.pull-request{color:#818c90;font-weight:normal}.full-commit .branches-list li.pull-request:before{content:"";margin-left:-8px}.full-commit .branches-list li a{color:inherit}.full-commit .tag-list{display:inline-block;list-style:none;margin-right:10px;vertical-align:middle}.full-commit .tag-list li{padding-left:3px;display:inline-block}.full-commit .tag-list li:first-child{color:#596063;font-weight:bold;padding-left:0}.full-commit .tag-list li.loading{color:#818c90;font-weight:normal}.full-commit .tag-list li.abbrev-tags{cursor:pointer}.full-commit .tag-list li a{color:inherit}.full-commit .tag-list li .hidden-text-expander a{background-color:#dae5eb}.full-commit .tag-list li .hidden-text-expander a:hover{background-color:#d1dbe0}.full-commit .commit-meta{margin-left:-8px;margin-right:-8px;padding:8px;background:#fff;border-top:1px solid #d8e6ec;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-moz-box-sizing:border-box;box-sizing:border-box}.full-commit .sha-block{float:right;margin-left:15px;color:#888;font-size:12px}.full-commit.merge-commit .sha-block{clear:right}.full-commit.merge-commit .sha-block+.sha-block{margin-top:2px}.full-commit .sha-block>.sha{color:#444}.full-commit .sha-block>a{color:#444;text-decoration:none;border-bottom:1px dotted #ccc}.full-commit .sha-block>a:hover{border-bottom:1px solid #444}.full-commit .authorship{margin-top:-2px;margin-left:-4px;margin-bottom:-4px;font-size:14px;color:#999}.full-commit .authorship .gravatar{margin-top:-2px;margin-right:3px;vertical-align:middle;border-radius:3px}.full-commit .authorship a{color:#444;text-decoration:none;font-weight:bold}.full-commit .authorship a:hover{text-decoration:underline}.full-commit .authorship .author-name{color:#444}.full-commit .authorship .hint a{color:#4183c4}.full-commit .authorship .committer{display:block;margin-top:-2px;margin-left:34px;font-size:12px}.commit.file-history-tease{margin:10px 0;padding:9px 8px 0 8px;font-size:14px;color:#7b878c;background:#e7ecee;border:1px solid #d2d9dd;border-radius:4px}.commit.file-history-tease .main-avatar{margin-top:-4px;vertical-align:middle;border-radius:3px}.commit.file-history-tease .author a{color:#000;font-weight:bold}.commit.file-history-tease .commit-title{display:inline}.commit.file-history-tease .sha{font-size:13px}.commit.file-history-tease .loader-loading,.commit.file-history-tease .loader-error{margin:0}.commit.file-history-tease .loader-loading img,.commit.file-history-tease .loader-error img{vertical-align:middle}.commit.file-history-tease .participation{margin:7px -8px 0;padding:0 8px;line-height:30px;font-weight:normal;font-size:12px;color:#666;background:#fff;border-top:1px solid #d8e6ec;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-moz-box-sizing:border-box;box-sizing:border-box}.commit.file-history-tease .participation p.quickstat{display:inline-block;margin:0 10px 0 0}.commit.file-history-tease .participation a{color:#888;text-decoration:none}.commit.file-history-tease .participation p.quickstat strong{color:#000}.commit.file-history-tease .participation .avatar{position:relative;display:inline-block;height:20px;margin-right:3px}.commit.file-history-tease .participation .avatar img{vertical-align:middle;border-radius:3px}.commit-loader .loader-error{display:none;margin:0;color:#bd2c00;font-weight:bold;font-size:12px}.commit-loader.error .loader-loading{display:none}.commit-loader.error .loader-error{display:block}p.last-commit{margin:10px 0 -5px 0;font-size:11px;color:#888}p.last-commit .octicon{color:#bbb}p.last-commit strong{color:#444}.commit-ref{position:relative;height:20px;display:inline-block;padding:0 5px;border-radius:3px;font:10px/20px Monaco,"Liberation Mono",Courier,monospace;color:#336479;white-space:nowrap;vertical-align:middle;background-color:#e8f0f8;box-shadow:inset 0 -1px 0 #cbd2d9}.commit-ref .user{color:#598a9f}a.commit-ref:hover{text-shadow:-1px -1px 0 rgba(0,0,0,0.2);background-color:#2a5177;background-image:-moz-linear-gradient(#74a4d4, #2a5177);background-image:-webkit-linear-gradient(#74a4d4, #2a5177);background-image:linear-gradient(#74a4d4, #2a5177);background-repeat:repeat-x;border-color:#2a5177;text-decoration:none}.compare-range{margin-top:-15px;float:right}.compare-range em{padding:0 4px;font-style:normal;color:#666}.compare-range .switch{display:inline-block;width:16px;height:16px;text-indent:-9999px;background:url("/images/modules/compare/switch_icon.png?21158b39") 0 0 no-repeat}.compare-range .minibutton{margin-right:15px}.compare-cutoff,.diff-cutoff{margin:5px 0;padding:8px 0;font-weight:bold;color:#000;text-align:center;background:#FCFFDA;border:1px solid #e5e2c8;border-radius:3px}#toc{padding:0;margin:15px 0}#toc li{border-bottom:1px solid #ddd;list-style-type:none;padding:5px 0}#toc li:last-child{border:none}#toc .content{font:12px Monaco, "Liberation Mono", Courier, monospace;clear:both}#toc p.explain{margin:0}#toc .octicon-diff-removed{color:#bd2c00}#toc .octicon-diff-renamed{color:#677a85}#toc .octicon-diff-modified{color:#d0b44c}#toc .octicon-diff-added{color:#6cc644}#toc .show-diff-stats,#toc.open .hide-diff-stats{display:block}#toc .hide-diff-stats,#toc.open .show-diff-stats{display:none}#toc .diffstat{float:right}span.diffstat{white-space:nowrap;text-align:right;font-family:Helvetica, arial, freesans, clean, sans-serif;color:#666;font-weight:bold;font-size:11px;cursor:default}span.diffstat a{text-decoration:none;color:#666}span.diffstat .diffstat-bar{margin-left:3px;display:inline-block;height:12px;text-decoration:none;text-align:left;color:#eee;font:normal normal 16px "octicons";line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased;font-size:16px;letter-spacing:1px}span.diffstat .diffstat-bar.diff-deleted,span.diffstat .diffstat-bar i.minus{color:#bd2c00;font-style:normal}span.diffstat .diffstat-bar.diff-added,span.diffstat .diffstat-bar i.plus{color:#6cc644;font-style:normal}span.no-nl-marker{position:relative;top:2px;color:#bd2c00;margin-left:4px}.symlink .no-nl-marker{display:none}.existing-pull{margin:10px 0}.tmp-reusable-bubble{margin:15px 0}.tmp-reusable-bubble .bubble-inner{background:#fff;border:1px solid #cacaca;border-radius:2px}.tmp-reusable-bubble .bubble-inner:before,.tmp-reusable-bubble .bubble-inner:after{content:" ";display:table}.tmp-reusable-bubble .bubble-inner:after{clear:both}.contributing{margin:20px 0 15px 0;font-size:13px;color:#666}.contributing a{font-weight:bold}.pull-request-composer{position:relative}.pull-request-composer .discussion-topic{-moz-box-sizing:border-box;box-sizing:border-box;float:left;width:732px;border-right:1px solid #ddd}.pull-request-composer .composer-meta{-moz-box-sizing:border-box;box-sizing:border-box;float:right;width:179px;padding:0 10px;text-align:center}.pull-request-composer .composer-meta .composer-submit{-moz-box-sizing:border-box;box-sizing:border-box;width:159px;position:absolute;bottom:14px;right:14px}.pull-request-composer .composer-meta .merge-status-icon{float:none;display:inline-block;margin:15px 0}.pull-request-composer .composer-meta .merge-branch-heading{font-size:14px}.pull-request-composer .composer-meta .merge-branch-description{margin:10px 0;font-size:12px}.pull-request-composer .composer-meta .mergeable-clean .merge-branch-heading{color:#6cc644}.pull-request-composer .preview-content{min-height:100px}div.edu_contact_hidden{display:none;margin:1em 0}.edu-contact-container.open .edu_contact_hidden{display:block}div.edu_contact_hidden p:first-child{margin-top:0}#contact-big-notice{width:580px}#contact-github textarea{width:100%;height:100px}.heartocat{display:block;margin:0 auto}.documentation-results-wrapper{position:relative;top:-19px}.documentation-results{position:absolute;margin-top:5px;-webkit-box-shadow:0px 0px 5px rgba(0,0,0,0.2);-moz-box-shadow:0px 0px 5px rgba(0,0,0,0.2);box-shadow:0px 0px 5px rgba(0,0,0,0.2);clear:both;z-index:2;width:400px;top:0}.documentation-results ul{width:100%}.documentation-results ul li:first-child a{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box;border-bottom-right-radius:0;border-bottom-left-radius:0}.documentation-results .documentation-results-footer a{-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box}.documentation-results a{outline:none;padding:5px 10px;display:block;color:#333;font-weight:bold;cursor:pointer;text-decoration:none;border:solid #ddd;border-width:0 1px 1px 1px;background-color:#fff}.documentation-results a:hover{background-color:#3586c3;color:#fff}.documentation-results a.selected{background-color:#3586c3;color:#fff}ul.documentation-results-group{list-style-type:none}.context-loader-container .context-loader{display:none}.context-loader-container .context-loader-overlay{opacity:1;transition:opacity 0.2s ease-in;-webkit-transition:opacity 0.2s ease-in 0}.context-loader-container .context-loader.is-context-loading{display:block;white-space:nowrap}.context-loader-container .context-loader-overlay.is-context-loading{opacity:0.5}.page-context-loader{margin-left:10px;display:none}.page-context-loader.is-context-loading{display:inline-block}body.disables-context-loader .page-context-loader,body.disables-context-loader .context-loader{display:none !important}.contributions-tab{margin-top:20px}.grid .col{display:table-cell;width:1%;vertical-align:top}.grid .col:first-child{padding-right:10px}.grid .col:last-child{padding-left:10px}.popular-repos .col.single-column{padding-right:0;padding-left:0}.capped-box{-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:20px;background-color:#fff;border-radius:3px;border:1px solid #ddd}.capped-box h3{margin:0;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom:1px solid #ddd;padding:10px;line-height:100%;background:#f7f7f7}.capped-box h3:after{content:".";display:block;clear:both;visibility:hidden;height:0}.capped-box h3 .octicon{float:right}.period-filter{position:relative}.period-filter h2{display:inline-block;margin:0;padding:0}.period-filter .select-menu{float:right}.user-lang{padding:10px;border-bottom:1px solid #ddd}.user-lang:before,.user-lang:after{content:" ";display:table}.user-lang:after{clear:both}.user-lang .repository-lang-stats{float:none;width:auto;padding-bottom:0;opacity:1}.user-lang .repository-lang-stats-graph{height:12px;margin-bottom:10px}.user-lang .repository-lang-stats-graph span{height:10px;border-bottom:2px solid rgba(0,0,0,0.2);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2)}.user-lang ol.list-tip{left:40%}.calendar-graph{min-height:107px;text-align:center;padding:5px 0 3px 0}.calendar-graph.days-selected rect.day{opacity:0.5}.calendar-graph.days-selected rect.day.active{opacity:1}.calendar-graph .activity{margin-top:0}.calendar-graph .dots{margin:20px auto 0 auto;width:64px;height:64px}.calendar-graph text.month{font-size:10px;fill:#aaa}.calendar-graph text.wday{fill:#ccc;font-size:9px}#contributions-calendar:before,#contributions-calendar:after{content:" ";display:table}#contributions-calendar:after{clear:both}#contributions-calendar rect.day{shape-rendering:crispedges}#contributions-calendar rect.day:hover{stroke:#555;stroke-width:1px}#contributions-calendar rect.day.empty:hover{stroke:none}#contributions-calendar .contrib-details{clear:right}#contributions-calendar .contrib-details div{-moz-box-sizing:border-box;box-sizing:border-box;padding:10px 0 0 0;text-align:center;border-left:1px solid #ddd;border-top:1px solid #ddd;color:#999}#contributions-calendar .contrib-details div .lbl{display:block;font-weight:bold;padding:10px 0;color:#777;border-top:1px solid #f7f7f7;margin-top:10px;font-size:11px}#contributions-calendar .contrib-details div .num{font-weight:bold;font-size:16px;display:block;color:#333}#contributions-calendar .contrib-details div:first-child{border-left:none}.contrib-footer{padding:0px 10px 10px 10px}.contrib-footer .contrib-info{font-size:11px;color:#999;float:left}.contrib-footer .contrib-info .octicon{margin-right:5px;color:#999}.contrib-legend{font-size:11px;color:#777;font-weight:bold;float:right}.contrib-legend span{font-weight:normal;color:#999}.contrib-legend ul.legend{display:inline-block;list-style:none;margin:0 5px}.contrib-legend ul.legend li{display:inline-block;width:10px;height:10px}#contribution-activity .blankslate{margin-top:20px}#contribution-activity .dots{margin:20px auto 0 auto;width:64px;height:64px;display:block}ul.simple-conversation-list a.meta{color:#777}li.contribution{list-style:none;padding:10px 0}li.contribution:last-child{border-bottom:none}li.contribution h3{font-size:14px;display:inline-block;margin:0}li.contribution h3 a{color:#4183C4}li.contribution .cmeta{display:block;font-size:12px;color:#aaa;font-weight:normal}li.contribution .cmeta a{color:#666}li.contribution .cmt{color:#999}li.contribution .d{color:#c00}li.contribution .a{color:#8cac29}li.contribution .num{color:#777}.contribution-status{float:right;font-size:12px;margin-top:10px}.commits-summary-list h3{margin:0}.contribution-pulls-list .cmeta{margin-left:87px}.contribution-pulls-list .state{display:block;float:left;clear:none}.contribution-pulls-list .contribution-pull-info{float:right;clear:none;width:653px;margin-bottom:3px}.contribution-pulls-list .contribution-pull-info .title{font-size:14px}.ctags-search-form .query{margin-top:5px;padding:8px;font-size:18pt;width:900px}.ctags-search-form.pjax-active .query{background:url("/images/spinners/octocat-spinner-64.gif?e25ff4c8") no-repeat 98% 50%}.ctags-cols{width:880px;padding:0 10px}.ctags-search-result{padding:5px 5px 5px 0;border-bottom:1px solid #ccc;cursor:pointer}.ctags-search-result.navigation-focus{background:#ffffef !important}.ctags-search-result .name{font-family:Consolas, "Liberation Mono", Courier, monospace;font-size:1.1em;white-space:nowrap;display:inline-block}.ctags-search-result .name .kind{display:inline-block;padding:1px 2px;font-size:12px;color:#777;text-align:right;width:60px;white-space:nowrap;overflow:hidden}.ctags-search-result .name .full{display:inline-block;max-width:600px;overflow:hidden;text-overflow:ellipsis}.ctags-search-result .name em{font-style:normal;font-weight:bold}.ctags-search-result .link{float:right;font-size:12px;overflow:hidden}.ctags-search-result .link a{float:right;white-space:nowrap}p.tip{margin:0;display:inline-block;font-size:13px;color:#999}p.tip strong.protip{font-weight:normal;color:#000}.bootcamp{margin:0 0 20px 0}.bootcamp h1{color:#fff;font-size:16px;font-weight:bold;background-color:#405a6a;background-image:-moz-linear-gradient(#829aa8, #405a6a);background-image:-webkit-linear-gradient(#829aa8, #405a6a);background-image:linear-gradient(#829aa8, #405a6a);background-repeat:repeat-x;border:1px solid #677c89;border-bottom-color:#6b808d;border-radius:5px 5px 0 0;text-shadow:0 -1px 0 rgba(0,0,0,0.7);margin:0;padding:8px 10px;position:relative}.bootcamp h1 a{color:#fff;text-decoration:none}.bootcamp h1 span{color:#e9f1f4;font-size:70%;font-weight:normal;text-shadow:none}.bootcamp .octicon-remove-close{font-size:16px;line-height:16px}.bootcamp .dismiss-bootcamp{display:block;width:16px;height:16px;background-repeat:no-repeat;background-position:0px 0px;position:absolute;right:9px;top:9px}.bootcamp .dismiss-bootcamp:hover{background-position:0px -19px}.bootcamp .bootcamp-body{padding:10px 0px 10px 10px;background-color:#e9f1f4;overflow:hidden;border-style:solid;border-width:1px 1px 2px;border-color:#e9f1f4 #d8dee2 #d8dee2;border-radius:0 0 5px 5px}.bootcampo ul{list-style-type:none;position:relative}.bootcamp ul li{color:#666666;font-size:13px;font-weight:normal;background-color:#f5f3b4;background-image:-moz-linear-gradient(#fffff5, #f5f3b4);background-image:-webkit-linear-gradient(#fffff5, #f5f3b4);background-image:linear-gradient(#fffff5, #f5f3b4);background-repeat:repeat-x;border:1px solid #dfddb5;border-radius:5px 5px 5px 5px;display:block;width:230px;height:215px;float:left;position:relative;margin:0 10px 0 0;overflow:hidden;box-shadow:0px 1px 0px #fff}.bootcamp ul li:hover{background-color:#f1eea3;background-image:-moz-linear-gradient(#fcfce9, #f1eea3);background-image:-webkit-linear-gradient(#fcfce9, #f1eea3);background-image:linear-gradient(#fcfce9, #f1eea3);background-repeat:repeat-x;border:1px solid #d6d4ad}.bootcamp ul li a{color:#666666;text-decoration:none}.bootcamp .image{display:block;position:relative;height:133px;border-bottom:1px solid #f1efaf;background-repeat:no-repeat;background-position:center center}.bootcamp .setup .image{background-image:url("/images/modules/dashboard/bootcamp/octocat_setup.png?0e767b60");background-size:129px 96px}.bootcamp .create-a-repo .image{background-image:url("/images/modules/dashboard/bootcamp/octocat_repo.png?42a731c0");background-size:129px 96px}.bootcamp .fork-a-repo .image{background-image:url("/images/modules/dashboard/bootcamp/octocat_fork.png?74c9d5ac");background-size:178px 96px}.bootcamp .be-social .image{background-image:url("/images/modules/dashboard/bootcamp/octocat_collabocats.png?ec371395");background-size:207px 96px}.bootcamp ul li:hover .image{border-bottom:1px solid #f1eea3}.bootcamp .desc{padding:15px;display:block;height:50px;overflow:hidden;border-top:1px solid #fff;background-repeat:no-repeat;position:relative;z-index:2}.bootcamp ul li:hover .desc{border-top:1px solid #fcfce9}.bootcamp .desc h2{margin:0px;padding:0px;font-size:15px;color:#393939}.bootcamp .desc p{margin:0px;padding:0px;line-height:1.2em}.bootcamp .step-number{background-repeat:no-repeat;display:block;width:60px;height:120px;position:absolute;right:0px;bottom:0px;z-index:0;font-size:120px;color:#e4e1a8;font-weight:bold;text-shadow:0 1px 0 rgba(255,255,255,0.75);opacity:.75}.box-header .new-repo{float:right;margin-top:4px;margin-right:4px;font-size:11px}.box-header .new-repo .octicon{margin-right:3px}.dashboard-sidebar .repo-list .repo-description{display:none}.user-repos .repo-list-item .repo-and-owner{max-width:290px}.user-repos .repo-list-item .owner{max-width:145px}#dashboard .notice{margin-top:0;margin-bottom:0;padding:15px;text-align:center}#example_octofication{float:right;margin:0;width:335px}.octofication{margin-bottom:15px}.octofication .message{padding:10px 10px 10px 35px;background:url("/images/modules/dashboard/octofication.png?15f11f72") 0 50% no-repeat #dcf7dd;border:1px solid #bbd2bc;border-top-color:#d1ead2;border-radius:5px}.octofication .message h3{margin:0;font-size:14px;text-shadow:1px 1px 0 #fff}.octofication .message p{font-size:12px;color:#333;padding:0;margin:0}.octofication .message p+p{margin-top:15px}.octofication ul.actions{margin:5px 0 0 0;font-size:10px;height:15px}.octofication ul.actions li{list-style-type:none;margin:0}.octofication li.hide{float:left;font-weight:bold}.octofication li.hide a{color:#666;text-decoration:none}.octofication li.hide a:hover{color:#000}.octofication li.hide a:hover strong{color:#a60000}.octofication li.more{float:right}.github-jobs-promotion{margin-bottom:15px}.github-jobs-promotion p{position:relative;padding:10px 18px;font-size:12px;text-align:center;color:#1b3650;border:1px solid #cee0e7;border-radius:4px;background-color:#e4f0ff;background-image:-moz-linear-gradient(#f5fbff, #e4f0ff);background-image:-webkit-linear-gradient(#f5fbff, #e4f0ff);background-image:linear-gradient(#f5fbff, #e4f0ff);background-repeat:repeat-x}.github-jobs-promotion p a{color:#1b3650}.github-jobs-promotion a.jobs-logo{display:block;text-align:center;font-size:11px;color:#999}.github-jobs-promotion a.jobs-logo:hover{text-decoration:none}.github-jobs-promotion a.jobs-logo strong{display:inline-block;width:62px;height:12px;text-indent:-9999px;background:url("/images/modules/jobs/logo.png?240c6fbe") 0 0 no-repeat;background-size:62px auto;vertical-align:middle}.github-jobs-promotion .job-location{white-space:nowrap}.github-jobs-promotion a.octicon-info{position:absolute;bottom:5px;right:5px;text-decoration:none;cursor:pointer;color:#a9b8be;opacity:.8}.github-jobs-promotion p:hover .octicon-info{opacity:1.0}#dashboard:before,#dashboard:after{content:" ";display:table}#dashboard:after{clear:both}#dashboard h1{font-size:160%;margin-bottom:.5em}#dashboard h1 a{font-size:70%;font-weight:normal}.dashboard-sidebar{float:right;width:335px}.dashboard-sidebar .capped-box{margin-bottom:0}.dashboard-sidebar .repos-contributions .css-truncate-target{max-width:220px}.news{float:left;width:620px}.news .release{margin-top:0;margin-bottom:0}.news-full,.page-profile .news{float:none;width:auto}.news blockquote{color:#666}.news h1{margin-bottom:0}.filter,.feed_filter{border-bottom:1px solid #AAAAAA;padding-bottom:.25em;margin-bottom:1em}.filter li,.feed_filter li{clear:none;display:inline}.news .alert{padding:0 0 1em 45px;overflow:hidden;position:relative;border-top:1px solid #f1f1f1}.news .alert .commits{padding-left:40px}.news .alert .css-truncate.css-truncate-target,.news .alert .css-truncate .css-truncate-target{max-width:180px}.news .alert p{margin:0}.news .alert .markdown-body blockquote{border:0 none;padding:0 0 0 40px}.news .alert .mega-octicon{position:absolute;top:14px;left:0;width:32px;height:32px;padding:3px;color:#bbb}.news .alert .mega-octicon::before{color:inherit}.news .alert .octicon{color:#bbb;width:16px;height:16px}.news .alert .body{border-bottom:none;overflow:hidden;padding:1em 0 0 0;font-size:14px}.news .alert .time{font-size:12px;color:#bbb}.news .alert .title{padding:0;font-weight:bold}.news .alert .title .subtle{color:#bbb}.news .alert .gravatar{background-color:#fff;float:left;line-height:0;margin-right:.6em}.news .alert .gravatar img{border-radius:2px;margin-top:3px}.news .alert .simple>.octicon{position:absolute !important;left:11px;width:16px;height:16px}.news .alert .simple .title{color:#666;display:inline-block;font-size:13px;font-weight:normal}.news .alert .simple .time{display:inline-block}.news .alert .pull-info,.news .alert .branch-link{background:#e8f1f6;border-radius:3px;color:rgba(0,0,0,0.5);display:inline-block;font-size:12px;margin-top:5px;padding:3px 7px}.news .alert .pull-info em,.news .alert .branch-link em{font-style:normal;font-weight:bold}.news .alert .branch-link{font-family:Monaco, "Liberation Mono", Courier, monospace;margin:0;position:relative;top:-2px}.news .alert .branch-link .octicon{color:#B0C4CE}.news .alert:first-child{border-top:none}.news .alert:first-child .body{padding-top:0}.news .alert .release-assets{padding-left:40px}.news .alert .release-assets li{margin-top:0.15em;list-style-type:none}.news .alert .release-assets .more{font-size:11px;padding-top:2px}.news .alert .css-truncate.css-truncate-target,.news .alert .css-truncate .css-truncate-target{max-width:180px}.news .git_hub .done{text-decoration:line-through;color:#666}.activity-tab .blankslate{margin-top:10px}.activity-tab .news .markdown-body blockquote,.activity-tab .news .alert .commits{padding-left:0}.activity-tab .news a.gravatar,.activity-tab .news div.gravatar{display:none}.news .commits li{margin-top:0.15em;list-style-type:none}.news .commits li .committer{padding-left:0.5em;display:none}.news .commits li img{vertical-align:middle;background-color:#fff;margin:0 1px 0 0;border-radius:2px}.news .commits li img.emoji{border:0;padding:0;margin:0}.news .commits li .message{display:inline-block;font-size:13px;line-height:1.3;margin-top:2px;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap;max-width:390px}.news div.message,.news li blockquote{color:#666;display:inline;font-size:13px}.news .commits li.more{font-size:11px;padding-top:2px}#dashboard .followers{float:right;width:35em;margin-bottom:2em}#dashboard .followers h1{margin-bottom:0.3em;border-bottom:1px solid #ddd}#dashboard .followers ul{list-style-type:none}#dashboard .followers ul li{display:inline}#dashboard .followers ul li img{border:1px solid #d0d0d0;padding:1px}#dashboard .news.public_news{float:right;width:35em}#dashboard .news.public_news h1{margin-bottom:0.3em;border-bottom:1px solid #ddd}#dashboard .repos h1{margin-bottom:0}#dashboard .repos img{vertical-align:middle}.discussions-new,.discussions-index{max-width:800px}.discussions-new .composer-tip{float:left;margin-left:65px;color:#666}.discussions-new .composer-tip a{font-weight:bold}.discussions-new .composer-tip strong{color:#333}.discussions-index h3.discussions-index-subject{margin:0px 0 5px 0}.discussions-index p.discussions-index-info{float:right;margin:0;padding:3px 0}.discussions-index .discussion-participants{margin-left:22px}.discussion-topic-type a{color:#bbb;text-decoration:none;display:block;float:right}.discussion-topic-type a:hover{color:#999}.discussion-timeline .email-hidden-container{margin:3px 0}.discussion-hidden{transition:.2s opacity;-moz-transition:.2s opacity;opacity:.5}.discussion-hidden:hover{opacity:1}.discussion-hidden .discussion-bubble-content:before{display:none}.discussion-hidden .discussion-comment-header{background:none;border-bottom:none}.discussion-hidden .discussion-comment-header .octicon{margin:0 3px}.discussion-hidden .discussion-comment-header .comment-snippet{display:inline-block}.discussion-hidden .discussion-comment-header .comment-snippet p{width:400px;overflow:hidden;text-overflow:ellipsis;display:inline-block;white-space:nowrap;margin:0 0 0 3px;line-height:1}.discussion-hidden .comment-header-actions li{font-size:11px;line-height:33px}.discussion-hidden .discussion-comment-label{background:#eee;border-radius:3px;color:#666;padding:2px 4px;margin:0 5px 0 0}.discussion-hidden+.discussion-hidden{margin-top:-23px}.discussions-section-heading{border-bottom:1px solid #eee;padding-bottom:20px;margin-bottom:25px}.draft-indicator{display:none}.draft-container .draft-indicator{display:inline;color:#CCC;font-size:10pt}.draft-container .draft-indicator .draft-indicator-label{display:inline;margin-left:15px}.draft-container .draft-indicator .draft-flushed{visibility:hidden;padding:1px 5px}.draft-container .draft-indicator .draft-flushed .draft-indicator-icon{visibility:hidden;position:absolute;transition:visibility 0.015s ease;-webkit-transition:visibility 0.015s ease 0}.draft-container.has-resumed-draft .draft-flushed{visibility:visible}.draft-container.has-resumed-draft .draft-flushed .draft-indicator-resumed-icon{visibility:visible}.draft-container.is-flushing-draft .draft-flushed{visibility:visible}.draft-container.is-flushing-draft .draft-flushed .draft-indicator-flushing-icon{z-index:10;visibility:visible;-webkit-animation:rotating 1s linear infinite;-moz-animation:rotating 1s linear infinite;animation:rotating 1s linear infinite}.draft-container.has-flushed-draft .draft-flushed{visibility:visible}.draft-container.has-flushed-draft .draft-flushed .draft-indicator-flushed-icon{visibility:visible}@-webkit-keyframes rotating{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes rotating{from{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(360deg)}}@keyframes rotating{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.emoji-icon{display:inline-block;height:20px;width:20px;vertical-align:middle;background-repeat:no-repeat;background-size:20px 20px}.explore-head .container{position:relative}.explore-head .marketing-nav{bottom:-20px}.repo-collection>ul{list-style-type:none;border:1px solid #F1F1F1;overflow:hidden;background:#F9F9F9}.repo-collection .collection-item{-moz-box-sizing:border-box;box-sizing:border-box;padding:15px;overflow:hidden;float:left;height:70px;width:50%;position:relative}.repo-collection .collection-item .octicon-remove-close{position:absolute;top:10px;right:10px;text-decoration:none;color:#CCC}.repo-collection .collection-item .repo-name{font-size:16px;font-weight:bold;display:block}.repo-collection .collection-item .css-truncate-target{max-width:380px}.repo-collection .collection-item .repo-description{margin:0}.repo-collection .collection-item .collection-stat{color:#444;float:right;font-size:12px;margin-left:10px}.repo-collection .collection-item .collection-stat .octicon{margin-right:5px;color:#a7a7a7}.featured-label{margin:0 20px;padding:5px;font-size:10px;font-weight:bold;text-transform:uppercase;border:1px solid #f19e58;border-radius:2px;background:#f5b987;color:#d26911}.featured-collection .featured-video{float:left}.featured-collection .featured-content{width:500px;margin-left:464px;padding-top:20px}.featured-collection .featured-repo-title .mega-octicon{margin-right:10px;color:#bbb}.featured-collection .featured-repo-short-info{font-size:14px;max-width:400px}.featured-collection .featured-commit-activity-graph,.featured-collection .featured-repo-logo{width:444px;height:250px;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:6px;background:#F9F9F9;float:left;position:relative}.featured-collection .loading-graph-spinner{position:absolute;top:50%;left:50%;margin-top:-16px;margin-left:-16px}.featured-collection .featured-graph-title{margin:0;position:absolute;top:25px;right:25px;font-weight:normal;font-size:14px;color:#AAA}.featured-collection .featured-commit-activity-graph svg{margin:25px auto;display:block}.featured-collection .featured-repo-logo{display:table}.featured-collection .featured-repo-image-container{display:table-cell;text-align:center;vertical-align:middle}.featured-collection .featured-repo-image{max-width:350px;max-height:200px}.featured-collection .repo-leaderboard-contributors{overflow:hidden;display:block;margin-bottom:20px}.featured-collection .repo-leaderboard-contributors .avatar,.featured-collection .repo-leaderboard-contributors .contributor-avatar-text{border-radius:3px;float:left;margin-right:5px;color:#999}.explore-collection h2{font-size:18px;font-weight:normal;color:#2A2A2A;margin:0 0 10px}.explore-collection h2 .select-menu{display:inline-block;position:relative}.explore-collection h2 .select-menu-button{font-weight:bold;cursor:pointer}.explore-collection h2 .mega-octicon{vertical-align:middle}.explore-collection .see-more-link{font-size:14px;float:right;margin-top:7px;color:inherit}.explore-section{padding:40px 0 50px;border-bottom:1px solid #eee;position:relative}.explore-section:nth-child(even){background:#F9F9F9}.explore-section:nth-child(even) .repo-collection>ul{background:#fff}.explore-section:first-child{padding-top:20px}.explore-section:nth-child(odd):last-child{border-bottom:0;padding-bottom:0}.explore-pjax-container{position:relative}.repo-top-list .top-repo-list-item{overflow:hidden;padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid #F1F1F1;list-style-position:inside}.repo-top-list .top-repo-list-item .repo-info{display:inline-block;margin:0;vertical-align:top;margin-left:5px}.repo-top-list .top-repo-list-item .repo-name{display:block;font-size:14px;font-weight:bold}.repo-top-list .top-repo-list-item .repo-lang{display:block;font-size:11px;color:#999}.repo-top-list .top-repo-list-item .author-gravatar{float:none;vertical-align:top;margin-left:5px;margin-right:0;width:60px;height:60px}.repo-leaderboard-list .repo-leaderboard-title{margin:0;font-size:18px;font-weight:normal}.repo-leaderboard-list .repo-leaderboard-title .title-meta{font-size:11px;color:#999}.repo-leaderboard-list .repo-leaderboard-title .repository-name{text-decoration:none}.repo-leaderboard-list .repo-leaderboard-title .repository-name:hover .owner-name,.repo-leaderboard-list .repo-leaderboard-title .repository-name:hover strong{text-decoration:underline}.repo-leaderboard-list .repo-leaderboard-title .separator{padding:0 3px;color:#333333}.repo-leaderboard-list .repo-leaderboard-list-item .mega-octicon{float:left}.repo-leaderboard-list .repo-leaderboard-list-item .mega-octicon:before{color:#bbb}.repo-leaderboard-list .repo-leaderboard-description{margin-top:10px;margin-bottom:0}.repo-leaderboard-list .repo-leaderboard-contributors{padding-top:10px;overflow:hidden;display:block}.repo-leaderboard-list .repo-leaderboard-contributors .avatar,.repo-leaderboard-list .repo-leaderboard-contributors .contributor-avatar-text{border-radius:3px;float:left;margin-right:5px;color:#999}.repo-leaderboard-list.leaderboard-list .leaderboard-list-content{margin-left:35px}.user-leaderboard-list .follow-list-info{margin-top:12px;margin-bottom:0;font-size:12px;color:#666}.user-leaderboard-list .follow-list-info .css-truncate.css-truncate-target{max-width:none}.user-leaderboard-list .user-leaderboard-list-name{margin:0;font-size:18px;font-weight:normal}.user-leaderboard-list .user-leaderboard-list-name .full-name{font-weight:bold;margin-left:5px;color:#5C5C5C}.user-leaderboard-list .repo-list-item{border-top:0;padding-left:21px;padding-top:10px;padding-bottom:0px}.user-leaderboard-list .repo-list-item .repo-description,.user-leaderboard-list .repo-list-item .repo-and-owner{max-width:530px}.user-leaderboard-list .repo-list-item .repo{color:#5C5C5C}.leaderboard-list{list-style-type:none;margin:0}.leaderboard-list .leaderboard-action{float:right;margin-top:-3px;margin-left:10px}.leaderboard-list .leaderboard-list-rank{position:absolute;left:0;top:25px;width:25px;text-align:right;font-size:11px;text-transform:uppercase;color:#B9B9B9;font-weight:300}.leaderboard-list .leaderboard-list-item{padding-top:20px;padding-bottom:20px;border-bottom:1px solid #eee;position:relative;padding-left:35px}.leaderboard-list .leaderboard-list-item:last-child{border-bottom:0}.leaderboard-list .leaderboard-gravatar{float:left;width:48px;height:48px}.leaderboard-list .leaderboard-list-content{margin-left:58px;min-height:48px}.leaderboard-list .leaderboard-list-content h2 a:visited{color:#585858}.repo-top-list .author-gravatar,.repo-collection .author-gravatar,.grid-list .author-gravatar{float:left;background:white;margin-right:10px;border-radius:3px}.explore-page .language-filter-list{margin-bottom:10px}.developers-corner{margin-bottom:40px;overflow:hidden}.developers-corner .developer-bar{overflow:hidden;background:#F5f5f5;border:1px solid #ddd}.developers-corner .developer-bar .developer-name{margin:10px 0 0;font-size:18px;font-weight:normal}.developers-corner .developer-bar .developer-title{margin:0 0 10px;font-size:14px}.developers-corner .developer-bar .author-gravatar{float:left;margin-right:10px}.developers-corner .repo-collection{margin-bottom:0;border-top:0 none}.explore-grid{margin-bottom:40px}.grid-list{list-style-type:none;overflow:hidden}.grid-list .grid-item{float:left}.grid-list .grid-item .author-gravatar{margin-bottom:5px;margin-right:19px;float:none}.grid-list .grid-item .repo-name,.grid-list .grid-item .repo-lang{display:block}.grid-list .grid-item .repo-name{font-size:14px;font-weight:bold;max-width:90px}.grid-list .grid-item .repo-lang{font-size:11px;color:#999}.showcase-body{font-size:15px;line-height:22px;margin-bottom:20px;border:1px solid #DDD;padding:20px;background-color:#F9f9f9;margin-top:0}.showcase-image{border:1px solid #DDD;border-bottom:0 none}.showcase-image img{display:block;width:100%}.language-listing{text-align:center;margin-top:35px}.language-listing .language:after{content:"•"}.language-listing .language:last-child:after{content:""}.explore-paginations{margin-top:15px}.explore-paginations .pagination{vertical-align:middle;margin-right:10px}.explore-paginations .pagination-info{display:inline-block;vertical-align:middle}.create-showcase .showcase-asset-box{border:1px dashed #CCC;padding:20px}.create-showcase .showcase-asset-box img{display:block;width:100%}.create-showcase .is-default .showcase-asset-box{border:0 none;padding:0}.facebox{position:absolute;top:0;left:0;z-index:100;padding-bottom:40px}.facebox-popup{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.25);border-radius:5px;box-shadow:0 0 18px rgba(0,0,0,0.4);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.facebox-content{width:425px;padding:15px}.facebox-content:before,.facebox-content:after{content:" ";display:table}.facebox-content:after{clear:both}.facebox-close{position:absolute;top:8px;right:5px;padding:10px;-webkit-appearance:none;background-color:transparent;border:0;opacity:.25;cursor:pointer}.facebox-close:hover{opacity:1}.facebox-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.facebox-overlay-hide{z-index:-100}.facebox-overlay-active{z-index:99;background-color:#000}.facebox-loading{min-height:64px;background-image:url("/images/spinners/octocat-spinner-64.gif?e25ff4c8");background-position:center center;background-repeat:no-repeat}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.facebox-loading{background-image:url("/images/spinners/octocat-spinner-128.gif?ab2b97f3");background-size:64px 64px}}.facebox-header{margin:-15px -15px 15px;padding:15px;font-size:18px;font-weight:normal;border-bottom:1px solid #e5e5e5}.facebox-alert,.facebox-danger{margin:-16px -15px 15px;padding:10px 15px;border-style:solid;border-width:1px 0}.facebox-alert{color:#796620;background-color:#f8eec7;border-color:#f2e09a}.facebox-danger{padding-left:40px;color:#9c342e;background-color:#f7d9d7;border-color:#f2c4c2}.facebox-danger .octicon{float:left;margin-left:-25px}.facebox-separator{margin:20px -15px}.facebox ul{margin-left:25px;margin-bottom:15px}.facebox .facebox-staff-links{margin:-15px -15px 15px;padding:10px 15px;background-color:#f5f5f5;border-bottom:1px solid #e5e5e5}.facebox .facebox-staff-links li{display:inline-block;margin-right:10px;color:#999;list-style:none}.facebox .facebox-staff-links a{font-weight:bold}.facebox-staff-search .hfields{margin-top:0;margin-bottom:0}.facebox-staff-search .hfields input[type="text"]{width:340px;margin-right:0}.facebox-staff-search .hfields .button{margin-top:29px;margin-right:0}.facebox-staff-search .status-check-list{float:none;margin:15px 0 0 0}.facebox pre{-moz-box-sizing:border-box;box-sizing:border-box;padding:10px;background-color:#eee;border:1px solid #ddd;border-radius:3px}.facebox .cheatsheet{width:810px}.facebox .cheatsheet .row:before,.facebox .cheatsheet .row:after{content:" ";display:table}.facebox .cheatsheet .row:after{clear:both}.facebox .cheatsheet .col{float:left;margin-left:15px;width:260px}.facebox .cheatsheet h3{margin-top:0;margin-bottom:5px}.facebox .cheatsheet p{margin-top:0;margin-bottom:5px;color:#888}.facebox .cheatsheet pre{margin-bottom:15px}.facebox .cheatsheet hr{margin-top:10px;margin-bottom:20px}.facebox .cheatsheet hr:before,.facebox .cheatsheet hr:after{content:" ";display:table}.facebox .cheatsheet hr:after{clear:both}#facebox .billing-credit-cards{margin:0 0 15px}#facebox .billing-credit-cards li{margin:0 4px 0 0}.keyboard-shortcuts{float:right;font-size:11px;color:#999}.keyboard-shortcuts .mini-icon{position:relative;top:2px;margin-left:5px}.facebox .shortcuts{width:860px}.shortcuts .columns-one-third{float:left;width:32%}.shortcuts .columns-one-third+.columns-one-third{margin-left:2%}.shortcuts .rule{margin-left:-15px;margin-right:-15px;border-bottom-color:#e5e5e5}.keyboard-mappings{font-size:12px;color:#555}.keyboard-mappings th{padding-top:25px;font-size:14px;line-height:1.5;color:#333;text-align:left}.keyboard-mappings tbody:first-child tr:first-child th{padding-top:0}.keyboard-mappings td{padding-top:3px;padding-bottom:3px;vertical-align:top;line-height:20px}.keyboard-mappings .keys{padding-right:10px;color:#999;text-align:right;white-space:nowrap}.keyboard-mappings .key{display:inline-block;min-width:20px;padding:5px 6px;font-size:11px;line-height:1;color:#eee;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,0.5);text-transform:capitalize;background-color:#333;border-radius:3px;box-shadow:inset 0 -2px 0 #111;-moz-box-sizing:border-box;box-sizing:border-box}.keyboard-mappings .platform-mac{display:none}.macintosh .keyboard-mappings .platform-mac{display:inline}.macintosh .keyboard-mappings .platform-other{display:none}.facebox .facebox-user-list{margin-left:0;margin-bottom:0;max-height:400px;overflow:auto}.facebox-user-list-item{padding:3px 0;list-style:none;font-weight:bold;vertical-align:middle}.facebox-user-list-item a{color:#000}.facebox-user-list-item img{margin-right:5px;border-radius:3px;vertical-align:middle}.linejump .linejump-input{width:340px;background-color:#fafafa}.linejump .linejump-input,.linejump .button{font-size:16px;padding:10px 15px}.linejump+.facebox-close{top:18px}.transfer-application .button-block{margin-top:5px}.facebox .lineprofiler{width:900px}.facebox .lineprofiler pre{overflow-x:scroll;white-space:pre;word-wrap:normal}.site-footer{position:relative;margin-top:40px;padding-top:40px;padding-bottom:40px;font-size:12px;line-height:1.5;color:#777;border-top:1px solid #eee}.site-footer:before,.site-footer:after{content:" ";display:table}.site-footer:after{clear:both}.site-footer .octicon-mark-github{position:absolute;top:38px;left:50%;height:24px;width:24px;margin-left:-12px;font-size:24px;color:#ccc}.site-footer .octicon-mark-github:hover{color:#bbb}.site-footer-links{float:left;margin:0;list-style:none}.site-footer-links.right{float:right}.site-footer-links li{display:inline-block;line-height:16px}.site-footer-links li+li{margin-left:10px}.site-footer-links img{display:block}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.column{-moz-box-sizing:border-box;box-sizing:border-box;float:left;padding:15px}.one-third{width:33%}.two-thirds{width:67%}.one-fourth{width:25%}.one-half{width:50%}.three-fourths{width:75%}.offset-one-fourth{margin-left:25%}.header{text-shadow:0 1px 0 #fff;border-bottom:1px solid #e5e5e5;min-width:1000px}.header-logged-in{background-color:#f3f3f3;background-image:-moz-linear-gradient(#f9f9f9, #f3f3f3);background-image:-webkit-linear-gradient(#f9f9f9, #f3f3f3);background-image:linear-gradient(#f9f9f9, #f3f3f3);background-repeat:repeat-x}.header-logo-invertocat{float:left;padding:8px 10px 6px;margin-left:-10px;margin-right:5px;color:#333333;transition:all 0.1s ease-in;-webkit-transition:all 0.1s ease-in 0;white-space:nowrap}.header-logo-invertocat .octicon-mark-github{float:left;width:24px;height:25px;font-size:25px}.header-logo-invertocat:hover{color:#4183c4;text-decoration:none}.logo-subbrand{margin-left:6px;font-size:16px;font-weight:bold;line-height:26px}.header-logo-wordmark{position:relative;float:left;margin-top:5px;margin-right:5px;color:#333333;transition:all 0.1s ease-in;-webkit-transition:all 0.1s ease-in 0}.header-logo-wordmark:hover{color:#4183c4}.header-logo-wordmark .octicon-logo-github{font-size:32px}.notification-indicator{float:left;width:42px;height:100%;margin-right:15px;text-align:center;line-height:40px;padding-left:1px;border-left:1px solid #e5e5e5;border-right:1px solid #e5e5e5;box-shadow:inset 1px 0 0 rgba(255,255,255,0.15),1px 0 0 rgba(255,255,255,0.15);-moz-box-sizing:border-box;box-sizing:border-box}.notification-indicator .mail-status{display:inline-block;width:8px;height:8px;border-radius:100px;background-color:#aaa;background-color:#cccccc;background-image:-moz-linear-gradient(#aaa, #ccc);background-image:-webkit-linear-gradient(#aaa, #ccc);background-image:linear-gradient(#aaa, #ccc);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(0,0,0,0.1),0 1px 0 #fff}.notification-indicator:hover .mail-status{background-color:#bbbbbb;background-image:-moz-linear-gradient(#999, #bbb);background-image:-webkit-linear-gradient(#999, #bbb);background-image:linear-gradient(#999, #bbb);background-repeat:repeat-x}.notification-indicator .unread{background-color:#3269a0;background-image:-moz-linear-gradient(#4183c4, #3269a0);background-image:-webkit-linear-gradient(#4183c4, #3269a0);background-image:linear-gradient(#4183c4, #3269a0);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 0 rgba(0,0,0,0.1),0 0 10px #4183c4}.notification-indicator:hover .unread{background-color:#2c5d8d;background-image:-moz-linear-gradient(#3876b4, #2c5d8d);background-image:-webkit-linear-gradient(#3876b4, #2c5d8d);background-image:linear-gradient(#3876b4, #2c5d8d);background-repeat:repeat-x}.notification-indicator.contextually-unread{background-color:#d2e4f9;background-image:-moz-linear-gradient(#e9f2fc, #d2e4f9);background-image:-webkit-linear-gradient(#e9f2fc, #d2e4f9);background-image:linear-gradient(#e9f2fc, #d2e4f9);background-repeat:repeat-x;position:relative;z-index:2;border-left-color:#c2d5eb;border-right-color:#c2d5eb;box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5),1px 0 0 #fff,0 1px 0 #c2d5eb}.notification-indicator.contextually-unread:hover{background-position:0 -15px}.top-nav{float:left;list-style:none}.top-nav>li{float:left}.top-nav>li+li{margin-left:5px}.top-nav>li>a{display:block;padding:5px;font-size:13px;font-weight:bold;color:#333333;transition:all 0.1s ease-in;-webkit-transition:all 0.1s ease-in 0}.top-nav>li>a:hover{color:#4183c4;text-decoration:none}.header-logged-out{padding:15px 0}.dropdown-menu{position:absolute;top:100%;left:50%;z-index:100;float:left;width:180px;list-style:none;margin:2px 0 0 -90px;padding-top:7px;padding-bottom:7px;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,0.15);border-radius:5px;box-shadow:0 3px 12px rgba(0,0,0,0.15)}.dropdown-menu:before{content:'';display:inline-block;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #ccc;border-bottom-color:rgba(0,0,0,0.15);position:absolute;top:-8px;left:82px}.dropdown-menu:after{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #fff;position:absolute;top:-7px;left:83px}.new-menu.js-menu-container .js-menu-content{display:none}.new-menu.js-menu-container.active .js-menu-content{display:block}.dropdown-menu>li.section-title{padding-left:10px;padding-top:10px;padding-bottom:5px;font-weight:bold;font-size:12px}.dropdown-menu>li>a{display:block;padding:4px 10px 4px 38px;color:#333}.dropdown-menu>li>a:hover{color:#fff;text-decoration:none;text-shadow:none;background-color:#4183c4}.dropdown-menu>li>a>.octicon{float:left;margin-top:1px;margin-left:-23px;color:#555}.dropdown-menu>li>a>.octicon.octicon-log-out{margin-left:-22px}.dropdown-menu>li>a:hover>.octicon{color:#fff}.dropdown-divider{height:1px;margin:8px 1px;background-color:#e5e5e5}.dropdown-header{padding:4px 15px;font-size:11px;color:#999;text-transform:uppercase}.dropdown-toggle{position:relative}.dropdown-arrow{content:'';display:inline-block;width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #333333;vertical-align:middle;transition:all 0.1s ease-in;-webkit-transition:all 0.1s ease-in 0}#user-links>li .dropdown-arrow{margin-top:-5px}#user-links>li>a:hover .dropdown-arrow,#user-links>.dropdown-toggle.open>a .dropdown-arrow{border-top-color:#4183c4}#user-links>.dropdown-toggle.open>a{color:#4183c4}.header-actions{float:right}.header-actions .button{margin-left:5px}#user-links{float:right;margin:7px 0 0;padding:0;list-style:none}#user-links>li{position:relative;float:left;margin-left:5px}#user-links>li>a{display:block;padding:5px;font-size:13px;color:#333333;transition:all 0.1s ease-in;-webkit-transition:all 0.1s ease-in 0}#user-links>li>a:hover{color:#4183c4;text-decoration:none}#user-links .dropdown-menu{margin-top:6px}#user-links .name{font-weight:bold;line-height:16px;white-space:nowrap}#user-links .name img{float:left;margin:-2px 5px 0 0;border-radius:3px;box-shadow:0 1px 0 #fff}#user-links .settings-warning{position:absolute;top:-5px;right:-4px;padding:3px 6px;font-size:10px;font-weight:bold;color:#fff;line-height:1;background-color:#d26911;border-bottom:1px solid #8f4f07;border-radius:2px}.enterprise .header,.enterprise.marketing .header-logged-out{background-color:#2a2c2e;background-image:-moz-linear-gradient(#434648, #2a2c2e);background-image:-webkit-linear-gradient(#434648, #2a2c2e);background-image:linear-gradient(#434648, #2a2c2e);background-repeat:repeat-x;border-bottom-color:#000}.enterprise #serverstats.enabled+.header{box-shadow:inset 0 1px 0 rgba(255,255,255,0.1)}.enterprise .header-logo-wordmark,.enterprise .header-logo-invertocat,.enterprise .top-nav a,.enterprise #user-links>li>a{color:white;text-shadow:0 1px 0 rgba(0,0,0,0.5)}.enterprise .header-logo-wordmark:hover,.enterprise .header-logo-invertocat:hover,.enterprise .top-nav a:hover,.enterprise #user-links>li>a:hover{color:#4183c4}.enterprise #user-links .name img{box-shadow:0 1px 0 rgba(0,0,0,0.5)}.enterprise .header .dropdown-arrow{border-top-color:white}.enterprise .header-logged-out .header-logo-invertocat{margin-top:3px;margin-bottom:3px}.enterprise .notification-indicator{border-left-color:#2a2c2e;border-right-color:#2a2c2e}.enterprise .notification-indicator .mail-status{background-color:#434648;background-image:-moz-linear-gradient(#2a2c2e, #434648);background-image:-webkit-linear-gradient(#2a2c2e, #434648);background-image:linear-gradient(#2a2c2e, #434648);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15)}.enterprise .notification-indicator .mail-status.unread{background-color:#3269a0;background-image:-moz-linear-gradient(#689cd0, #3269a0);background-image:-webkit-linear-gradient(#689cd0, #3269a0);background-image:linear-gradient(#689cd0, #3269a0);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 0 rgba(0,0,0,0.1),0 0 10px #4183c4}.enterprise .notification-indicator.contextually-unread{background-color:#304254;background-image:-moz-linear-gradient(#425567, #304254);background-image:-webkit-linear-gradient(#425567, #304254);background-image:linear-gradient(#425567, #304254);background-repeat:repeat-x;border-color:#273644 #273644 #273644 #2a2c2e;box-shadow:inset 1px 0 rgba(255,255,255,0.1),1px 0 rgba(255,255,255,0.1)}.enterprise .header-actions .button{border:0;box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 1px rgba(0,0,0,0.5)}.unsupported-browser{padding:15px 0;color:#211e14;background-color:#fae692;background-image:-moz-linear-gradient(#feefae, #fae692);background-image:-webkit-linear-gradient(#feefae, #fae692);background-image:linear-gradient(#feefae, #fae692);background-repeat:repeat-x;border-bottom:1px solid #b3a569}.unsupported-browser .container{background:url("/images/icons/ie-notice.png?d2d9c93b") no-repeat}.unsupported-browser h5{font-size:13px;padding-left:48px}.unsupported-browser p{margin:0;padding-left:48px}.unsupported-browser .button{float:right;padding:5px 9px;margin-top:15px;color:#fff;background-color:#b3a569;background-image:none}.unsupported-browser .button:hover{text-decoration:none;background-color:#9b8c4e}.mobile-banner a{display:block;padding:30px 0 45px 0;background-color:#444;color:#eaeaea;font-size:60px;text-align:center;font-weight:bold}.mobile-banner a .mega-octicon{position:relative;top:-8px;margin-right:5px;color:#ddd;font-size:48px}.linux .show-mac,.macintosh .show-mac{display:block}.linux .hide-mac,.macintosh .hide-mac{display:none}.windows .show-mac{display:none}.homepage .container{font-family:"Helvetica Neue", Helvetica, Arial, sans-serif}.homepage .header-logged-out .primary{display:none}.marketing-header{margin-bottom:40px;text-align:center}.marketing-header h1{margin-top:0;margin-bottom:0;font-size:42px;font-weight:normal}.marketing-header .lead{margin-top:0;margin-bottom:0;color:#777}.marketing-header .button{margin-top:15px;padding:12px 20px;font-size:18px;font-weight:normal;border-radius:6px}.marketing-header .button .octicon{font-size:inherit}.marketing-section{position:relative;padding-top:80px;padding-bottom:80px;border-bottom:1px solid #e5e5e5}.marketing-section:before,.marketing-section:after{content:" ";display:table}.marketing-section:after{clear:both}.marketing-section .divider-short{width:50%;margin:50px auto;border-bottom-color:#eee}.marketing-section-depth{position:absolute;right:0;bottom:0;left:0;z-index:10;display:block;content:"";height:30px;background-image:-moz-linear-gradient(rgba(0,0,0,0), rgba(0,0,0,0.15));background-image:-webkit-linear-gradient(rgba(0,0,0,0), rgba(0,0,0,0.15));box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}.marketing-section-signup{text-shadow:0 1px 3px #222;background:#202021 url("/images/modules/home/octicons-bg.png?5d89c13d") center repeat}.marketing-section-signup .heading{margin-top:0;padding-top:10px;font-size:70px;font-weight:normal;line-height:1;color:#fff;letter-spacing:-1px}.marketing-section-signup .subheading{margin:10px 0 0;font-size:21px;line-height:1.5;color:#fff}.marketing-section-signup .subheading a{font-weight:500}.form-signup-home{float:right;width:320px;margin-left:40px}.form-signup-home .text-muted:last-child{margin-bottom:0}.form-signup-home dl.form{position:relative;margin-top:0;margin-bottom:10px}.form-signup-home .button,.form-signup-home dl.form input[type="text"],.form-signup-home dl.form input[type="password"]{padding:10px;font-size:16px;border-radius:5px}.form-signup-home .button{border:0;padding-top:11px;padding-bottom:11px}.form-signup-home .button:focus{border-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,0.05),0 0 12px rgba(255,255,255,0.75)}.form-signup-home dl.form input[type="text"],.form-signup-home dl.form input[type="password"]{width:100%;margin-right:0;border-color:#fff}.form-signup-home dl.form input[type="text"]:focus,.form-signup-home dl.form input[type="password"]:focus{background-color:#fff;border-color:#fff;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 12px rgba(255,255,255,0.75)}.form-signup-home dl.form dd+.text-muted{margin-top:5px}.form-signup-home dl.form.errored dd.error,.form-signup-home dl.form.errored dd.warning{position:absolute;top:100%;left:0;right:0;z-index:5;margin-top:2px;font-size:12px;font-weight:normal;padding:10px;border:0;text-align:left;border-radius:5px;background-color:#333;color:#fff}.form-signup-home dl.form.errored dd.error:after,.form-signup-home dl.form.errored dd.warning:after{position:absolute;left:10px;bottom:100%;height:0;width:0;content:"";border:solid transparent;border-bottom-color:#333;border-width:8px;pointer-events:none}.form-signup-home dl.form.errored dd.error:empty,.form-signup-home dl.form.errored dd.warning:empty{display:none}.form-signup-home dl.form dd input.is-autocheck-successful,.form-signup-home dl.form dd input.is-autocheck-errored,.form-signup-home dl.form dd input.is-autocheck-loading{background-image:none}.form-signup-home dl.successed:after,.form-signup-home dl.errored:after{position:absolute;top:15px;right:10px;font:normal normal 16px "octicons";line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased}.form-signup-home dl.successed:after{content:"\f03a";color:#6cc644}.form-signup-home dl.errored:after{content:"\f02d";color:#bd2c00}.form-signup-home dl.is-loading:after{position:absolute;top:15px;right:10px;display:block;width:16px;height:16px;content:"";background-image:url("/images/spinners/octocat-spinner-16px.gif?8c695afe")}.form-signup-home .placeholder{color:#aaa}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.form-signup-home dl.is-loading:after{background-image:url("/images/spinners/octocat-spinner-32.gif?ca28a0dd");background-size:16px 16px}}.text-muted{color:#999}.text-center{text-align:center}.marketing-benefits .column{text-align:center}.marketing-benefits .column h3{margin:0 0 9px;font-size:21px;font-weight:normal;line-height:1.1;color:#2a2a2a}.marketing-benefits .column p{margin:0;font-size:14px;color:#5a5a5a}.marketing-benefits .teaser-icon{width:100px;height:100px;margin:0 auto 15px;color:#4183c4;text-align:center;border:1px solid #e5e5e5;border-radius:50px}.marketing-benefits .mega-octicon{font-size:48px;line-height:100px}.marketing-benefits .octicon-checklist{margin-left:6px}.marketing-section-img{display:block;max-width:980px;margin:30px auto;border-radius:5px;border:1px solid rgba(0,0,0,0.25);box-shadow:0 5px 15px rgba(0,0,0,0.15)}.marketing-desktop{border-bottom:0}.marketing-desktop .button .octicon{margin-right:3px}.marketing-more-apps{margin-top:25px}.marketing-more-apps li{display:inline-block;list-style:none;padding-left:20px;padding-right:20px}.marketing-more-apps img{height:50px}.marketing-more-apps a:hover{opacity:.75}.marketing-section-enterprise{z-index:2;overflow:hidden;max-height:341px;margin-bottom:-41px;text-shadow:0 1px 2px rgba(0,0,0,0.3);background-color:#333;background-image:url("/images/modules/home/gh-enterprise-bg.jpg?d6f63ced");background-size:cover;background-position:center center;background-repeat:no-repeat;border-bottom:0;box-shadow:inset 0 10px 20px rgba(0,0,0,0.1)}.marketing-section-enterprise h1{color:#fff}.marketing-section-enterprise .marketing-header .lead{color:#cecbda}.marketing-section-enterprise .button{border:0;box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 2px 6px rgba(0,0,0,0.25)}.marketing-section-enterprise .button:active{box-shadow:inset 0 3px 6px rgba(0,0,0,0.25),0 1px 0 rgba(255,255,255,0.25)}.issue-list em{background-color:rgba(255,255,140,0.5);font-weight:bold;padding:2px 1px 0;font-style:normal;margin:0 -1px}.issue-list .title{padding:0;min-height:24px;font-weight:normal;font-size:18px;line-height:24px;margin:0 0 10px}.issue-list .title .mega-octicon{color:#888;position:absolute;left:0;top:-4px}.issue-list .title .closed.mega-octicon{color:#BD2C00}.issue-list .title .open.mega-octicon{color:#6CC644}.issue-list .title a:visited{color:#7C65C2}.issue-list .issue-number{float:right;color:#999999}.issue-list .description{margin:0 0 10px;line-height:20px;overflow:hidden}.issue-list .created-at{font-size:11px;font-weight:normal;margin:0px}.issue-list .created-at a{color:#999999;font-weight:bold}.issue-list .created-at a:visited{color:#999999}.issue-list .issue-meta{font-size:11px;margin:0;list-style-type:none;overflow:hidden;color:#999999}.issue-list .issue-meta>li{float:left;margin-right:10px}.issue-list .issue-meta a{color:#333333}.issue-list .issue-meta .octicon{color:#838383;vertical-align:middle}.issue-list .issue-list-item{border-bottom:1px solid #f1f1f1;padding:0 0 20px 40px;margin:0 0 20px 0;position:relative}.issues-list-sidebar{font-size:12px}.issues-list-sidebar .progress-bar{margin-bottom:6px}.manage-labels-toggle{display:block;text-align:center;margin:0 5px}.label-select-menu .color{display:inline-block;width:14px;height:14px;margin-right:2px;margin-bottom:2px;border-radius:3px;vertical-align:middle}.label-select-menu .selected .select-menu-item-icon{color:inherit !important}.label-select-menu .selected:active{background-color:transparent !important}.label-select-menu .select-menu-item.navigation-focus{background-color:#f4f4f4;color:inherit}.label-select-menu .select-menu-item.navigation-focus.selected{color:#777}.label-select-menu .select-menu-item.navigation-focus .select-menu-item-icon{color:transparent}.label-select-menu .select-menu-item .octicon-remove-close{display:none;float:right;margin:1px 10px 0 0;opacity:0.6}.label-select-menu .select-menu-item.selected .octicon-remove-close{display:block;color:inherit}.label-select-menu>form{position:relative}.sidebar-milestone-widget{position:relative}.sidebar-milestone-widget .sidebar-milestone-widget-text{color:#999999;line-height:26px}.sidebar-milestone-widget .sidebar-milestone-widget-text.no-select{color:#666666}.sidebar-milestone-widget .info-main{font-weight:bold;margin-bottom:5px;line-height:26px}.sidebar-milestone-widget .info-main .label{color:#999999}.sidebar-milestone-widget .info-main .title{color:#333333}.sidebar-milestone-widget .info-main .css-truncate-target{max-width:121px}.sidebar-milestone-widget .info-secondary{font-size:11px}.sidebar-milestone-widget .info-secondary .open{color:#999999;font-weight:bold}.sidebar-milestone-widget .info-secondary .octicon{color:#bd2c00}.sidebar-milestone-widget .select-menu{position:absolute;right:0}.issue-head{margin-top:-15px;padding:10px;border:1px solid #d5d5d5;border-width:0 1px 2px 1px;border-radius:0 0 5px 5px;font-weight:bold;color:#999}.issue-head .number{float:right;font-size:14px}.issue-head .number strong{color:#666}.discussion-sidebar{float:right;width:100px}.discussion-sidebar hr{margin:10px 0}.discussion-sidebar .state-indicator{padding:7px 10px;margin-bottom:10px}.discussion-sidebar p{font-size:12px;text-align:center;color:#666;margin:0}.discussion-sidebar p strong{color:#333}.discussion-sidebar ul.changes{list-style-type:none;line-height:25px}.discussion-sidebar ul.changes span{font-weight:bold}.discussion-sidebar ul.changes .addition{color:#309c00}.discussion-sidebar ul.changes .deletion{color:#bc0101}.discussion-sidebar .label-manager{display:table;margin-bottom:10px;width:100%}.discussion-sidebar .label-manager>strong{vertical-align:middle;display:table-cell}.discussion-sidebar .label-manager .select-menu{width:1%;display:table-cell;position:relative}.discussion-sidebar .label-manager .select-menu-modal-holder{right:0}.discussion-sidebar .color-label{font-weight:bold}ul.color-label-list .filter-item{cursor:default}ul.color-label-list.editable .color{width:14px}ul.color-label-list.editable .octicon-remove-close{display:inline-block;color:#aaa;position:relative;z-index:10}ul.color-label-list.editable .octicon-remove-close:hover{color:#ba3d37}ul.color-label-list .edit-color-label-form{display:none}ul.color-label-list .color-label{line-height:16px;border:1px solid transparent}ul.color-label-list .color-label.active{z-index:25;position:relative;border:1px solid #ddd;border-radius:3px;box-sizing:border-box}ul.color-label-list .color-label.active .edit-color-label-form{display:block}ul.color-label-list .color-label.active .octicon-remove-close{display:none}ul.color-label-list .color-label a{text-decoration:none}ul.color-label-list .color-label.selected{font-weight:bold;background:98% 5px no-repeat transparent;-webkit-font-smoothing:antialiased}ul.color-label-list .color-label.selected .count,ul.color-label-list .color-label.selected .color{display:none}ul.color-label-list .color-label.selected .octicon-remove-close{display:inline-block}ul.color-label-list .color-label.zeroed,ul.color-label-list .color-label.zeroed .count{color:#999}ul.color-label-list .filter-item:hover .octicon-remove-close{opacity:1}ul.color-label-list .filter-item:hover .color{border-color:#eee}ul.color-label-list .count{color:#333}ul.color-label-list .name a{color:#333}ul.color-label-list .color{display:block;float:left;margin-left:-5px;margin-right:4px;width:6px;height:14px;border-radius:3px;border:1px solid #fff}ul.color-label-list .octicon-remove-close{display:none;float:right;opacity:0.8}ul.color-label-list .nolabels{margin:10px 0;font-size:11px;color:#666}.edit-color-label-form{padding:5px}.edit-color-label-form input[type="text"]{width:100%}.edit-color-label-form .form-actions{margin-top:5px;padding:0;overflow:hidden}.edit-color-label-form .form-actions button{box-sizing:border-box}.edit-color-label-form .optional{margin:0;padding-top:0;float:left;font-size:11px}.edit-color-label-form .color-editor{margin-top:5px;position:relative;height:25px}.edit-color-label-form .color-editor .color-editor-input{position:absolute;left:0;background-color:transparent;min-height:25px;border-left-width:26px;padding-top:3px;padding-bottom:3px;width:130px}.edit-color-label-form .color-editor .octicon{position:absolute;top:4px;left:6px;color:rgba(0,0,0,0.8);z-index:10}.edit-color-label-form .color-editor .invalid-color-indicator{display:none;position:absolute;top:5px;left:9px;color:#c00;z-index:10;font-weight:bold}.edit-color-label-form .color-editor .minibutton{position:absolute;right:0}.edit-color-label-form .color-editor .octicon-check{display:none}.edit-color-label-form.new-label-form{margin-top:10px}.edit-color-label-form.new-label-form .new-label-form-title{margin-bottom:5px}.edit-color-label-form.new-label-form .color-chooser,.edit-color-label-form.new-label-form .color-editor{display:none}.edit-color-label-form .color-editor-bg{position:absolute;left:0;height:25px;width:130px;opacity:0.12;border-radius:3px}.edit-color-label-form.open .color-chooser,.edit-color-label-form.open .color-editor{display:block}.edit-color-label-form.open .name-input{border-bottom-right-radius:0;border-bottom-left-radius:0}.edit-color-label-form.is-valid .color-editor .octicon-check{display:block}.edit-color-label-form.is-not-valid .color-editor .invalid-color-indicator{display:block}ul.color-chooser{height:25px;list-style-type:none;display:table-row}ul.color-chooser li{display:table-cell;width:1%;vertical-align:top}ul.color-chooser .color-cooser-color{display:block;text-align:center;height:25px;cursor:pointer;box-sizing:border-box;border:solid 2px transparent}ul.color-chooser .color-cooser-color label{cursor:pointer}ul.color-chooser input{display:none}ul.color-chooser .octicon-check{visibility:hidden}ul.color-chooser+.color-chooser li:first-child .color-cooser-color{border-radius:0 0 0 3px}ul.color-chooser+.color-chooser li:last-child .color-cooser-color{border-radius:0 0 3px 0}.closed-banner{margin:15px 0 15px 60px;height:7px;overflow:hidden;background:url("/images/modules/comments/closed_pattern.gif?f975aacb");border-radius:5px}.state-indicator{display:block;font-size:14px;font-weight:bold;color:#fff;text-align:center;border-radius:3px;background:#999}.state-indicator.open,.state-indicator.reopened{background:#6cc644}.state-indicator.merged{background:#8fb6dc}.state-indicator.closed{background:#bd2c00}.state-indicator.renamed{background-color:#fffa5d}.issues-list-options{margin-bottom:15px}.issues-list-options .select-menu,.issues-list-options .button-group{display:inline-block;margin-right:10px}.issues-list-options .pagination{float:right;margin:0}.issues-list-options .add-button{float:right;margin-left:10px}.issues-keyboard-shortcuts{float:left;margin-top:10px}.keyboard-shortcuts{font-size:11px;color:#999}.keyboard-shortcuts .octicon{margin-left:4px;vertical-align:middle}.clear-issue-filters{margin-top:0}.clear-issue-filters a{color:#999;font-weight:bold;text-decoration:none}.clear-issue-filters a:hover{color:#666}.clear-issue-filters a:hover .octicon{color:#4183c4}.repository-lang-stats{position:relative}.repository-lang-stats ol.repository-lang-stats-numbers li{display:table-cell;width:1%;border-bottom:none;text-align:center;padding:11px 5px;white-space:nowrap}.repository-lang-stats ol.repository-lang-stats-numbers li span.percent{float:none}.repository-lang-stats ol.repository-lang-stats-numbers li>a,.repository-lang-stats ol.repository-lang-stats-numbers li>span{color:#999999;text-decoration:none;font-weight:bold}.repository-lang-stats ol.repository-lang-stats-numbers li .lang{color:#333333}.repository-lang-stats ol.repository-lang-stats-numbers li .language-color{display:inline-block;width:10px;height:10px;border-radius:50%}.repository-lang-stats ol.repository-lang-stats-numbers li a:hover{background:transparent}.stats-switcher-viewport{overflow:hidden;height:38px}.stats-switcher-viewport .numbers-summary{-moz-transition:margin 0.25s ease-in-out;-webkit-transition:margin 0.25s ease-in-out;transition:margin 0.25s ease-in-out}.stats-switcher-viewport.is-revealing-lang-stats .numbers-summary{margin-top:-38px}.repository-lang-stats-graph{display:block;width:100%;height:auto;line-height:12px;white-space:nowrap;overflow:hidden;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.repository-lang-stats-graph span{display:inline-block;height:8px;background:#ccc;text-indent:-9999px}.repository-lang-stats-graph .language-color{height:auto;line-height:12px;vertical-align:top}.repository-lang-stats-graph .language-color:first-child{border-bottom-left-radius:3px}.repository-lang-stats-graph .language-color:last-child{border-bottom-right-radius:3px}ol.list-tip,ul.list-tip{border-radius:3px;box-shadow:0 0 5px #ccc;border:1px solid #ddd;background:#fff;position:absolute;top:20px;left:-20px;width:170px;z-index:100;display:none}ol.list-tip:before,ul.list-tip:before{content:"▲";font-size:14px;margin:0 auto;width:14px;display:block;margin-top:-13px;color:#fff;text-shadow:-1px -1px 2px #ccc}ol.list-tip li,ul.list-tip li{margin:0;line-height:100%;list-style:none;border-bottom:1px solid #eee;font-weight:bold}ol.list-tip li span.color-block,ul.list-tip li span.color-block{display:inline-block;width:8px;height:10px;margin-right:5px}ol.list-tip li a,ol.list-tip li .other,ul.list-tip li a,ul.list-tip li .other{color:#333;padding:8px 10px;display:block}ol.list-tip li a:hover,ul.list-tip li a:hover{text-decoration:none;background-color:#E6F1F6}ol.list-tip li span.percent,ul.list-tip li span.percent{float:right;color:#999}ol.list-tip li:last-child,ul.list-tip li:last-child{border-bottom:none}.language-color{background-color:#ccc}.list-group-item{position:relative;display:block;margin-bottom:-1px;padding:8px 10px 10px 40px;border:1px solid #e5e5e5}.list-group-item a:hover{text-decoration:none}.list-group-item:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.list-group-item:first-child .issue-item-unread{border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.list-group-item:last-child .issue-item-unread{border-bottom-left-radius:3px}.list-group-item.closed{background-color:#fcfcfc}.list-group-item.selectable{padding-left:60px}.list-group-item.selected{background-color:#ffffef}.list-group-item.navigation-focus{background-color:#f5f9fc}.list-group-item a:not(.status){color:#333333}.list-group-item a:not(.status).list-group-repo-name{color:#666666}.list-group-item a:not(.status).quiet{color:#999999}.list-group-item .status{position:relative;top:2px;margin-right:-7px;float:right}.logged_in .list-group-item.unread .issue-item-unread{position:absolute;top:0;left:-1px;bottom:0;width:3px;background-color:#4183c4}.list-group-item-number{position:relative;top:2px;float:right;margin-left:12px;font-size:13px;color:#999}.list-group-item-name{margin:0 60px 0 0;font-size:15px;line-height:1.3;margin-bottom:2px;word-wrap:break-word}.list-group-item-name .type-icon{float:left;margin-top:1px;margin-left:-24px}.closed.octicon{color:#bd2c00}.open.octicon{color:#6cc644}.list-group-item-summary{margin-top:2px}.list-group-item-summary p{margin:0 0 5px}.standalone .list-group-item-summary p{margin-bottom:0}.list-group-item-check{position:absolute;top:12px;left:12px}.list-group-item-meta{font-size:11px;line-height:17px;list-style-type:none;overflow:hidden;color:#999999}.list-group-item-meta>li{display:inline-block;margin-right:4px}.list-group-item-meta .gravatar img{position:relative;top:-1px;margin-right:2px;vertical-align:middle;border-radius:2px}.list-group-item-meta .octicon{vertical-align:middle}.list-group-item-meta .branch-name .css-truncate-target{position:relative;top:-1px;vertical-align:middle;max-width:200px}.list-group-item .type-icon{vertical-align:middle;position:relative;top:1px}.list-group-item .assignee{float:right}.list-group-item .assignee img{display:block;border-radius:2px}.list-group-item .labels{display:inline-block;position:relative;top:-2px;margin-bottom:-2px;margin-left:4px}.list-group-item .label{display:inline-block;font-size:11px;padding:2px 4px;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.12)}.list-group-item .label.lighter{text-shadow:0 -1px 0 rgba(0,0,0,0.2)}.list-group-item .label.darker{text-shadow:0 1px 0 rgba(255,255,255,0.4)}.issues-list-actions{padding:6px 10px;font-size:11px;background-color:#f5f5f5}.issues-list-actions .note{margin:0 0 0 5px;display:inline-block;font-size:11px;color:#9ca9a9}.issues-list-actions .select-all{padding:5px 6px 5px 2px;margin-right:25px}.issues-list-actions .dropdown-button{position:relative;padding-right:18px}.issues-list-actions .dropdown-button:after{content:"";display:block;position:absolute;border:3px solid #333333;border-color:#333333 transparent transparent;top:10px;right:8px;width:0px;height:0px}.issues-list-actions .select-menu{display:inline-block}.pulls-list-group .list-group-item{padding-left:34px}.legacy-chromed-list-browser{border:1px solid #ddd;border-radius:5px}.legacy-chromed-list-browser .list-browser-filterbar{border-radius:3px 3px 0 0}.animated-ellipsis-container{display:inline-block;overflow:hidden;height:16px;width:12px;-webkit-transform:translateZ(0)}.animated-ellipsis-container>.animated-ellipsis{overflow:hidden;display:inline-block;vertical-align:bottom;-webkit-animation:ellipsis 1s infinite;-moz-animation:ellipsis 1s infinite}@-webkit-keyframes ellipsis{from{width:2px}to{width:12px}}@-moz-keyframes ellipsis{from{width:2px}to{width:12px}}.large-loading-area{text-align:center;padding:100px 0}.loading-area{text-align:center}.context-loader.large-format-loader{position:absolute;display:none;top:0;left:0;bottom:0;right:0;margin:0;width:auto;padding:190px 0 0 0;font-weight:normal;background:rgba(255,255,255,0.8);border:none;z-index:9999;text-align:center;color:#999999}.context-loader.large-format-loader.is-loading{display:block}.member-adder{display:none;position:absolute;background:#eee;padding:0px 5px 5px;z-index:2;box-shadow:0px 0px 3px #999999}.member-adder.active{display:inherit}.member-adder ul{list-style-type:none}.member-adder ul li{margin-top:4px;clear:both;min-width:400px;border-bottom:1px solid #ddd;background:#fff;padding:3px}.member-adder ul li a.button{margin-top:10px;float:right}.member-adder .navigation-focus{background-color:#4183c4;color:#fff}.member-adder .avatar{float:left;margin-right:5px}.member-adder .login{font-weight:bold}.member-adder .add-to-repo{float:right;margin-top:15px}.member-adder .no-results{display:none}.member-adder .no-results.active{display:inherit}form.member-capability-update{display:inline}.milestone-list .milestone{padding:10px 10px 10px 15px}.milestone-list h3{margin:5px 0 0;font-size:16px}.milestone-list .date{margin:5px 0 5px 0;font-size:14px;color:#999}.milestone-list .pastdue .date{font-weight:bold;color:#bd2c00}.milestone-list .description{margin-top:10px;width:100%;padding:10px 0 0;border-top:1px solid #eee;font-size:12px;font-weight:300;color:#666}.milestone-list .description strong{color:#333}.milestone-list .milestone-progress{float:right;width:390px}.milestone-list .progress-bar{position:relative;height:30px;margin-top:3px;overflow:hidden}.milestone-list .progress-bar .progress{height:30px}.milestone-list .progress-bar .percent{position:absolute;top:4px;left:7px;font-size:16px;font-weight:bold;color:#fff;text-shadow:0 0 2px rgba(0,0,0,0.7)}.milestone-list .meta{font-size:11px}.milestone-list .meta li{list-style-type:none;margin:0 0 0 15px;float:right;font-weight:bold}.milestone-list .meta .numbers{float:left;margin-left:0;color:#888;font-weight:normal}.progress-bar{display:block;height:15px;border-radius:3px;background-color:#d8d8d8;background-image:-moz-linear-gradient(#e2e2e2, #d8d8d8);background-image:-webkit-linear-gradient(#e2e2e2, #d8d8d8);background-image:linear-gradient(#e2e2e2, #d8d8d8);background-repeat:repeat-x}.progress-bar .progress{display:block;height:15px;border-radius:3px 0 0 3px;background-color:#65bd10;background-image:-moz-linear-gradient(#8dcf16, #65bd10);background-image:-webkit-linear-gradient(#8dcf16, #65bd10);background-image:linear-gradient(#8dcf16, #65bd10);background-repeat:repeat-x}.date_selector .button{padding:0;border-color:#ddd;box-shadow:none}.new_milestone dd.required{display:none}.milestones-next ul.tabs{display:none}.milestones-next .repohead{border-bottom:1px solid #ddd}.milestones-next-container{position:relative}.milestones-next-container h1{margin:0}.milestones-next-container h2{margin:0 20px 0 0}.milestones-next-container p{font-size:14px;color:#777;margin:0 0 20px 0}.milestones-next-container .milestone-author{float:left;margin:0 0 20px 0;padding:0 0 15px 0;color:#999}.milestones-next-container .milestone-author a{color:#777}.milestones-next-container .pull-participation{float:right;margin:-2px 0 0 0}.milestones-next-container .milestone-back{position:absolute;left:-44px;top:2px;padding:0 1px 0 4px;color:#ccc}.milestones-next-container .milestone-back:hover{color:#4183c4}.milestones-next-container .milestone-back .octicon{position:absolute;top:9px;left:-10px}.milestones-next-container .menu-container{float:left;width:148px;clear:left}.milestones-next-container .milestone-content{float:right;width:682px}.milestones-next-container .milestone-activity{margin-bottom:40px}.milestones-next-container .milestone-stats{margin:0 0 20px 0;padding:0;box-sizing:border-box;-moz-box-sizing:border-box}.milestones-next-container .milestone-stats li{display:inline-block;margin:0;padding:0;border-right:1px solid #eaeaea;width:223px;font-size:14px;text-align:center}.milestones-next-container .milestone-stats li:last-child{border:none}.milestones-next-container .milestone-stats a{display:block;padding:10px 0;color:#999}.milestones-next-container .milestone-stats a:hover{text-decoration:none;background:#fafafa}.milestones-next-container .milestone-stats .octicon{color:#aaa}.milestones-next-container .milestone-stats .num{color:#222;font-weight:bold}.milestones-next-container .hashtag{font:12px Monaco, "Liberation Mono", Courier, monospace;color:#222}.milestones-next-container .simple-conversation-list{margin:0 0 40px 0;font-size:14px}.milestones-next-container .simple-conversation-list .title{max-width:450px}.milestones-next-container .simple-conversation-list>li{position:relative;padding:10px 0}.milestones-next-container .simple-conversation-list .meta{position:absolute;top:5px;right:0}.milestones-next-container .simple-conversation-list .assign{font-size:13px;width:90px;text-align:right;width:30px}.milestones-next-container .simple-conversation-list .assign a{color:#999}.milestones-next-container .simple-conversation-list .assign a:hover{color:#4183c4}.milestones-next-container .simple-conversation-list .summary{display:block;clear:both;margin:0 0 0 20px;color:#999;font-size:12px;line-height:20px}.milestones-next-container .simple-conversation-list .task-list-summary{margin-right:5px}.milestones-next-container .simple-conversation-list .summary a{color:#999}.milestones-next-container .simple-conversation-list .a{color:#6cc644}.milestones-next-container .simple-conversation-list .d{color:#bd2c00}.milestones-next-container .milestone-list-heading{margin:0 0 20px 0}.milestones-next-container .conversation-list-actions{line-height:20px;color:#999;background-color:#fff;position:absolute;top:9px;right:0;z-index:10}.milestones-next-container .conversation-list-actions li{float:left;list-style:none;margin-left:10px}.milestones-next-container .conversation-list-actions .age{width:110px}.milestones-next-container .blankslate{margin:20px 0 40px 0}.milestones-next-container .milestone-description{position:relative}.milestones-next-container .edit-description-button{position:absolute;top:0;right:0}.milestones-next-container .octicon-issue-opened{color:#6cc644}.milestones-next-container .octicon-issue-closed{color:#bd2c00}.milestones-next-container .open{color:#6cc644}.milestones-next-container .closed{color:#bd2c00}.milestones-next-container .merged{color:#81a5c7}.milestones-next-container .milestone-assign{float:right}.milestones-next-container .js-details-container .content{display:none}.milestones-next-container .js-details-container.open .content{display:block}.milestones-next-container .js-details-container.open .hidden-text-expander{display:none}.milestones-next-container .js-details-container.open .milestone-summary{display:none}.page-new-repo .new-repo-container{width:700px;margin:0 auto;padding-top:20px}.page-new-repo .new-repo-container h2{font-size:22px;font-weight:normal;color:#666;border-bottom:1px solid #ddd;padding-bottom:5px;margin-bottom:.5em}.page-new-repo ul.repo-templates{margin:10px 0}.page-new-repo ul.repo-templates>li{list-style-type:none;display:inline-block;margin:0 10px 0 0}.page-new-repo ul.repo-templates .select-menu{float:left}.page-new-repo .owner-reponame{position:relative}.page-new-repo .owner-reponame dl.form{margin-top:5px;margin-bottom:0}.page-new-repo .owner-reponame .owner,.page-new-repo .owner-reponame .slash,.page-new-repo .owner-reponame .reponame{float:left}.page-new-repo .owner-reponame .slash{font-size:21px;color:#666;padding-top:32px;margin:0 8px}.page-new-repo .owner-reponame .icon-preview{display:none;position:absolute;top:20px;left:-95px}.page-new-repo .owner-reponame .icon-preview .mega-octicon,.page-new-repo .owner-reponame .icon-preview .label{text-align:right;display:inline-block;position:relative}.page-new-repo .owner-reponame .icon-preview .mega-octicon{top:10px;left:5px;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none;transition:none}.page-new-repo .owner-reponame .icon-preview .label{font-size:11px;text-transform:uppercase;color:#B9B9B9;font-weight:300;width:50px;top:4px}.page-new-repo .owner-reponame .icon-preview-public .octicon-repo{color:#bbb;top:12px}.page-new-repo .owner-reponame .icon-preview-private .octicon-lock{color:#e9dba8}.page-new-repo .owner-reponame .icon-preview-private .label{top:4px;right:5px}.page-new-repo .owner-reponame .icon-preview-private .label span{padding:3px 6px 2px;background-color:#F8EEC7;border-radius:3px;color:#A1882B}.page-new-repo .reponame-suggestion{color:#34631a;cursor:pointer}.page-new-repo .team-select{display:none}.page-new-repo div.form-checkbox .mega-octicon{color:#666;font-size:24px;float:left;margin-right:5px}.page-new-repo div.form-checkbox .octicon-repo{color:#bbb}.page-new-repo div.form-checkbox .octicon-lock{color:#e9dba8}.page-new-repo .upgrade-upsell{padding-left:33px}.page-new-repo .upgrade-upsell .cc-upgrade{padding-left:20px}.page-new-repo .license-info{float:left;margin-top:5px;margin-left:10px;color:#ccc}.page-new-repo .license-container{border-left:1px solid #ccc;padding-left:15px}.featured-license{font-weight:bold}.oauth-section{margin:20px auto}.oauth-section .flash{margin-bottom:20px;padding:0 15px}.oauth-section .access-heading{font-weight:normal;margin-top:0;margin-bottom:5px}.oauth-section .access-leader{margin-bottom:25px}.oauth-section .access-owner{margin-top:0}.oauth-section .box{float:left;color:#999;border:1px solid #ddd;margin:0 31px 15px 0;border-radius:3px;height:80px;width:80px;padding:5px}.oauth-section .box img{border-radius:3px;height:80px;width:80px}.oauth-section .description{padding-top:1px;margin-left:120px}.oauth-section .description p{color:#999;font-size:15px}.oauth-section .details .content{display:none}.oauth-section .details.open .content{display:block}.oauth-section .open .hidden-text-expander{display:none}.oauth-section .hidden-text-expander{float:left}.oauth-section .avatar{vertical-align:middle;border-radius:3px}.oauth-section .access-details{border-top:1px solid #ddd;clear:both}.oauth-section .access-details .user-box{float:left;width:92px;margin-right:32px}.oauth-section .access-details .avatar{vertical-align:middle;border-radius:2px}.oauth-section .access-details .octicon-arrow-down{color:#ddd;margin:-7px 0 6px 36px}.oauth-section .access-details .details-user{text-align:center}.oauth-section .access-details .details-user p{color:#999;margin:8px 0 0 0;border-top:1px solid #DDD;padding-top:12px;font-size:11px}.oauth-section .access-details .details-user p.login{margin-top:5px;padding:0;border:none;font-size:14px;font-weight:bold}.oauth-section .access-details .permissions{float:left;width:500px;color:#666;margin-top:5px}.oauth-section .access-details .permissions p{font-size:18px}.oauth-section .access-details .question{font-size:16px;border-top:1px solid #eee;padding:30px 0 40px 0}.oauth-section .access-details .question button{padding:7px 32px}.oauth-section .access-details .sidebar{float:right;width:277px;background:#EEE;margin-top:20px;border-radius:2px}.oauth-section .access-details .infotip{font-size:13px;color:#777;background:#fff;border:1px solid #BBB;border-radius:2px;margin:3px;padding:15px}.oauth-section ul.permission-list{font-size:14px;margin:20px 0}.oauth-section ul.permission-list>li{list-style-type:none;padding:7px 0 7px 0}.oauth-section ul.permission-list>li:first-child span.permission{font-weight:bolder}.oauth-section span.permission{display:inline-block;margin-left:4px}.oauth-section .circle{display:inline-block;width:5px;height:5px;border-radius:5px;margin-right:5px;border:2px solid}.oauth-section span.label{display:inline-block;font-weight:bold;text-align:center;font-size:14px;padding:3px 10px;margin-right:4px;border-radius:3px;border:2px solid;text-shadow:0 1px 0 #fff}.oauth-section span.read{color:#7cc45c;background:rgba(124,196,92,0.2);border-color:#7cc45c}.oauth-section span.read .circle{background:#7cc45c;border-color:#7cc45c}.oauth-section span.write{color:#ee9c49;background:rgba(238,156,73,0.2);border-color:#ee9c49}.oauth-section span.write .circle{background:#ee9c49;border-color:#ee9c49}.oauth-section span.delete{color:#c64939;background:rgba(198,73,57,0.3);border-color:#c64939;min-width:123px;text-shadow:0 1px 0 rgba(255,255,255,0.6)}.oauth-section span.delete .circle{background:#c64939;border-color:#c64939}.oauth-section span.off{color:#dddddd;background:#eeeeee;border-color:#dddddd}.oauth-section span.off .circle{background:none;border-color:#dddddd}.header-with-actions{position:relative}.header-with-actions h3{margin-top:5px}.header-with-actions .select-menu{float:right;margin-top:-5px}.header-with-actions .select-menu-modal-holder{right:0}.header-with-actions .select-menu-modal{width:140px}.pulse-blankslate{margin-top:20px}.diffstat-summary{font-size:16px;text-align:center;vertical-align:middle;border-radius:3px;color:#777;line-height:1.8;text-align:left;padding:0 20px 0 0}.diffstat-summary a{color:#555}.diffstat-summary strong{color:#333}.overall-summary .graphs{border-bottom:1px solid #eee}.overall-summary .graphs .graph{-moz-box-sizing:border-box;box-sizing:border-box;display:table-cell;width:459px;padding:15px}.overall-summary .graphs .graph:first-child{border-right:1px solid #eee}.overall-summary .graphs .desc{color:#777;margin-bottom:0}.overall-summary .graphs .num{font-weight:bold;color:#333}.overall-summary .graphs a{font-weight:bold;color:#333}.overall-summary .graphs .mini-bar-graph{display:table;width:100%;background:#eee}.overall-summary .graphs .mini-bar-graph a{background:#6cc644;display:table-cell;height:10px}.overall-summary .graphs .mini-bar-graph a.merged-pulls{background:#333333}.overall-summary .graphs .mini-bar-graph a.closed-issues{background:#bd2c00}.authors-and-code{margin:20px 0 0 0}.authors-and-code .insertions{color:#6cc644}.authors-and-code .deletions{color:#bd2c00}.authors-and-code .section{-moz-box-sizing:border-box;box-sizing:border-box;height:100px;display:table-cell;width:459px}.authors-and-code .code-stats{padding:0 0 0 20px}.authors-and-code .code-stats .files-changed{color:#333;display:block;font-size:24px;border-bottom:1px solid #eee}.authors-and-code .code-stats .files-changed .mega-octicon{color:#999}.pulse-authors-graph{min-height:150px}.pulse-authors-graph .dots{margin:0 auto;margin-top:20px;width:64px;height:64px;-moz-box-sizing:border-box;box-sizing:border-box}.pulse-authors-graph .bar rect{fill:#ff9933;fill-opacity:0.7}.pulse-authors-graph .bar rect:hover{fill-opacity:1;cursor:pointer}.pulse-authors-graph .bar image{cursor:pointer}.pulse-authors-graph .commit-label{fill:#333;text-anchor:middle;font-weight:bold;text-shadow:1px 1px 0 #fff}.page-pulse .overall-summary{border-radius:3px}ul.summary-stats li{-moz-box-sizing:border-box;box-sizing:border-box;list-style-type:none;display:table-cell;margin:0;width:229px;text-align:center;color:#999;border-left:1px solid #eee}ul.summary-stats li a{display:block;text-decoration:none;color:#999;padding-bottom:10px}ul.summary-stats li a:hover{background:#fafafa}ul.summary-stats li .octicon-git-pull-request{color:#333333}ul.summary-stats li .octicon-git-branch-create{color:#6cc644}ul.summary-stats li .octicon-issue-closed{color:#bd2c00}ul.summary-stats li .octicon-issue-opened{color:#6cc644}ul.summary-stats li:first-child{border-left:none;border-bottom-left-radius:3px}ul.summary-stats li .num{display:block;padding-top:10px;font-size:16px;font-weight:bold;color:#000}ul.summary-stats li .lbl{display:block;margin-top:10px;padding-top:3px;padding-bottom:6px;font-size:11px;color:#999;border-top:1px solid #f7f7f7}.participants-list:before,.participants-list:after{content:" ";display:table}.participants-list:after{clear:both}.pulse-sections{clear:both;margin-top:20px}.pulse-section{clear:both;padding:0 0 0 0;font-size:14px;color:#666}.pulse-section.first-section{padding-top:15px}.pulse-section p{margin-top:20px}table.tag-list{margin:20px 0;width:100%;border-top:1px solid #eee}table.tag-list tr{border-bottom:1px solid #eee}table.tag-list td{padding:12px 0;vertical-align:top}table.tag-list td.date{padding-right:10px;white-space:nowrap}table.tag-list td.date a{color:#999}table.tag-list td.main{padding-right:10px}table.tag-list td.ancillary{white-space:nowrap;text-align:right}table.tag-list h4{margin:0;font-size:14px}table.tag-list p{margin:0;color:#999;font-size:13px}table.tag-list p a{color:#666;font-weight:bold}.tag-info h3{margin-top:0;margin-bottom:0;font-size:14px;line-height:20px}.tag-info h3 a{color:#666}.tag-info h3 a .tag-name{color:#000}.tag-references{margin:0;list-style-type:none;font-size:13px}.tag-references>li{margin-right:10px;display:inline-block}.tag-references>li.commit{font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:12px;line-height:20px}.tag-references>li a{color:#999;text-decoration:none}.tag-references>li a:hover{color:#4183c4}.release-downloads{margin:15px -5px 0;list-style-type:none}.release-downloads li{display:inline-block;margin:5px}.release .tag-references{margin-top:8px}.release .tag-references>li{display:block;margin:0 0 5px}.release-timeline{position:relative;border-top:2px solid #eee}.release-timeline-tags{list-style-type:none}.release-timeline-tags>li{display:block}.release-timeline-tags>li:before,.release-timeline-tags>li:after{content:" ";display:table}.release-timeline-tags>li:after{clear:both}.release-timeline-tags .date,.release-timeline-tags .main{position:relative;float:left;-moz-box-sizing:border-box;box-sizing:border-box;padding:20px}.release-timeline-tags .main{width:80%;border-left:2px solid #eee}.release-timeline-tags .date{width:20%;line-height:40px;text-align:right;color:#999}.release-timeline-tags .date:after{content:" ";display:block;position:absolute;top:50%;right:-7px;z-index:10;width:8px;height:8px;margin-top:-6px;background-color:#eee;border:2px solid #fff;border-radius:6px}.release-timeline-tags .octicon-tag{padding-left:5px;color:#ccc}.release-timeline-tags .expander{position:relative;display:none}.release-timeline-tags .expander .date{padding-right:35px;line-height:20px}.release-timeline-tags .expander .date:after{display:none}.release-timeline-tags .expander .main{padding-left:35px;line-height:20px}.release-timeline-tags.is-collapsed .expander{display:block}.release-timeline-tags.is-collapsed>.collapsable{display:none}.release-timeline-tags .expander-dots{position:absolute;top:18px;left:-22px;width:40px;height:20px;text-align:center;background-color:#eee;border:2px solid #fff;border-radius:4px;z-index:10;cursor:pointer}.release-timeline-tags .expander-dots .expander-dot{display:inline-block;margin-top:-2px;width:4px;height:4px;vertical-align:middle;border-radius:2px;background-color:#999}.release-timeline-tags .expander-text{font-weight:bold;color:#666;cursor:pointer}.release-timeline-tags .expander-text:hover{color:#4183c4}.release-timeline-tags .expander-text:hover .expander-dots{background-color:#4183c4}.release-timeline-tags .expander-text:hover .expander-dots .expander-dot{background-color:#fff}.release:before,.release:after{content:" ";display:table}.release:after{clear:both}.release .release-meta,.release .release-body{-moz-box-sizing:border-box;box-sizing:border-box;float:left}.release .release-meta{width:20%;padding:40px 20px;text-align:right;vertical-align:top}.release .release-body{width:80%;padding:40px 20px;border-left:2px solid #eee}.release .release-title{margin:0 60px 0 0}.release .release-edit{float:right}.release .release-authorship{margin-top:5px;margin-bottom:20px;font-size:14px;color:#999}.release .release-authorship a{font-weight:bold;color:#666}.release .release-authorship .avatar img{border-radius:3px;vertical-align:middle}.release .release-label{display:inline-block;margin-top:1px;margin-bottom:10px;padding:5px 10px;font-size:14px;font-weight:bold;color:#fff;background-color:#000;border-radius:4px}.release .release-label.latest{background-color:#6cc644}.release .release-label.draft{background-color:#bd2c00}.release .release-label.prerelease{background-color:#ff9933}.tag-detail{margin:20px 0;padding:12px 0 0 50px;border-top:1px solid #ddd}.tag-detail .octicon-tag{float:left;margin:10px 0 0 -50px;color:#bbb}.tag-detail h2{margin:10px 0 5px 0;font-size:20px;font-weight:normal}.tag-detail h2 .tag-name{font-weight:bold}.tag-detail p{margin:0 0 15px 0;font-size:16px;color:#999}.tag-detail .rule{margin-top:25px;border-color:#eee}.tag-detail .downloads .minibutton{margin-right:10px}.tag-detail .downloads .octicon{margin-right:0;vertical-align:0}.tag-detail .tag-references{margin:15px 0;font-size:14px;font-weight:bold}.tag-detail .tag-references>li{margin-right:20px}.tag-detail .tag-references>li a{color:#4183c4}.new-release .sidebar h3{margin:40px 0 -10px;font-size:14px}.new-release .sidebar h3:first-child{margin-top:15px}.new-release .default,.new-release .saved,.new-release .saving,.new-release .error{display:none}.new-release .error{color:#bd2c00}.new-release .is-default .default{display:inline-block}.new-release .is-saving .saving{display:inline-block}.new-release .is-saving .saving img{vertical-align:top}.new-release .is-saved .saved{display:inline-block}.new-release .is-failed .error{display:inline-block}.drop-target .mega-octicon{vertical-align:middle;color:#e5e5e5}.drop-target p{height:65px;font-size:14px;line-height:65px;text-align:center;border-color:#ddd;border-style:dashed}.drop-target .octospinner{vertical-align:middle}.uploaded-files.is-populated+.drop-target p{border-top-right-radius:0;border-top-left-radius:0;border-top:none}.uploaded-files{background:#fff;border-top-right-radius:4px;border-top-left-radius:4px}.uploaded-files.is-populated{border:1px solid #ddd;border-bottom-color:#e5e5e5}.uploaded-files>li{list-style-type:none;margin:0;padding:8px 10px;border-top:1px solid #eee;line-height:22px}.uploaded-files>li.template{display:none}.uploaded-files>li .delete-pending{display:none}.uploaded-files>li.delete{background:#f9f9f9;color:#999}.uploaded-files>li.delete:nth-child(2){border-top-right-radius:4px;border-top-left-radius:4px}.uploaded-files>li.delete .delete-pending{display:block}.uploaded-files>li.delete .live{display:none}.uploaded-files>li.delete .filename{color:#bd2c00}.uploaded-files>li:nth-child(2){border-top:none}.uploaded-files .filename{font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:11px}.uploaded-files .filesize{font-size:12px;color:#999}.uploaded-files input[type=text]{width:490px;margin-right:6px;padding:2px 4px;border-radius:2px}.uploaded-files .remove{float:right;margin-top:2px;color:#999}.uploaded-files .remove:hover{color:#bd2c00}.uploaded-files .undo{float:right}.upload-progress{background:#fff;border:none;border-radius:30px;box-shadow:0 1px 1px #fff,inset 0 1px 1px rgba(255,255,255,0.5);height:3px;margin-top:3px;position:relative}.upload-progress .upload-meter{background-color:#58b8f4;background-image:-moz-linear-gradient(#8dd2f7, #58b8f4);background-image:-webkit-linear-gradient(#8dd2f7, #58b8f4);background-image:linear-gradient(#8dd2f7, #58b8f4);background-repeat:repeat-x;border-radius:30px;height:100%;position:absolute;top:0}.release-body-form .previewable-comment-form .write-content,.release-body-form .previewable-comment-form .preview-content{padding:0 0 10px}.release-tag-form .for-loading,.release-tag-form .for-empty,.release-tag-form .for-valid,.release-tag-form .for-invalid,.release-tag-form .for-duplicate,.release-tag-form .for-pending{display:none}.release-tag-form.is-loading .for-loading{display:block}.release-tag-form.is-empty .for-empty{display:block}.release-tag-form.is-valid .for-valid{display:block}.release-tag-form.is-invalid .for-invalid{display:block}.release-tag-form.is-duplicate .for-duplicate{display:block}.release-tag-form.is-pending .for-pending{display:block}.release-target-wrapper{display:inline-block}.release-target-wrapper.hidden{display:none}.releases-target-menu{display:inline-block;margin-left:5px}.releases-target-menu .minibutton{line-height:32px}.releases-target-menu .select-menu-button:before{top:14px}.release-show{border-top:2px solid #eee}.release-show .release-edit{display:none}.repolist{padding-top:10px}.repolist .repolist-name{font-size:20px;line-height:32px;margin-top:0;margin-bottom:0;white-space:nowrap}.repolist .repolist-name .css-truncate-target{max-width:540px}.repolist .repolist-icon{float:left;margin-left:-35px;color:#bbb}.repolist .octicon-lock,.repolist .octicon-mirror-private,.repolist .private .octicon-repo-forked{color:#e9dba5}.repolist .fork-flag{margin-top:-5px;margin-bottom:5px;font-size:12px;color:#777}.repolist>li{position:relative;min-height:66px;padding-left:35px;padding-bottom:20px;margin:0 0 20px;list-style:none;border-bottom:1px solid #eee}.repolist>li.simple{min-height:0}.repolist>li.simple .fork-flag{display:none}.repolist .body{text-shadow:0 0 5px #fff, 0 0 5px #fff, 0 0 5px #fff}.repolist .participation-graph{position:absolute;right:0;bottom:0;z-index:-1;width:640px}.repolist .participation-graph.disabled{display:none}.repolist .participation-graph .bars{position:absolute;bottom:0}.repolist .description{margin:0 0 5px;color:#333333}.repolist .updated-at{margin:0;font-size:11px;color:#999999}.repolist .repo-stats{position:relative;top:9px;z-index:5;float:right}.repolist .repo-stats .is-starred .octicon-star{color:#e9dba5}.page-security .filter-list h4{padding-bottom:6px}.page-security p.explain{margin-top:-3px;margin-bottom:15px;font-size:12px}.page-security p.explain a{color:#999}.page-security p.explain a strong{color:#666}.page-security p.explain a .octicon{color:#ccc}.page-security .security-section .mega-octicon{float:left;margin:-4px 4px 0 -4px;color:#ccc}.page-security .security-section h2{margin-top:0;margin-bottom:1px;font-weight:normal;color:#999}.page-security .security-section h2 strong{color:#666}.page-security .security-section .explain{color:#666}.page-security .security-section span.label{border-radius:4px;padding:3px 5px;color:white;text-shadow:-1px -1px 0 rgba(0,0,0,0.2);margin:0 2px;opacity:0.8}.page-security .security-section span.repo-scope{background:#E80C02}.page-security .security-section span.public-repo-scope{background:#FF9E00}.page-security .security-section span.user-scope{background:#666}.page-security .security-section span.gist-scope{background:#6CC644}.page-security .security-section a.audit{float:right;margin-top:8px}.page-security .security-section a.application{font-size:16px}.page-security .security-section a.revoke{float:right;margin-top:4px}.page-security span.red{color:#c54242}.page-security .main ul.numbers{margin-left:40px;font-size:72px;color:#999;overflow:hidden}.page-security .main ul.numbers>li{position:relative;list-style-type:none;float:left;margin:0 15px 5px 0}.page-security .main ul.numbers>li span{font-size:12px;color:#bababa}.page-security .sidebar{margin-bottom:23px;color:#999}.page-security .sidebar h2{color:#777;margin-bottom:13px}.page-security .sidebar .security-tips{font-size:12px}.page-security .sidebar ul.security-tips>li{list-style-type:none;margin-bottom:4px}.page-security .sidebar ul.security-tips .octicon-check{margin-right:2px;display:none}.page-security ul.user-filter{margin:20px 0;list-style-type:none;float:right}.page-security ul.user-filter:before,.page-security ul.user-filter:after{content:" ";display:table}.page-security ul.user-filter:after{clear:both}.page-security ul.user-filter>li{float:left;margin:0 18px 0 0;font-size:13px;color:#999}.page-security ul.user-filter>li>a.selected{color:#999}.page-security ul.app-security-graph{margin:5px 0 32px 0;padding-top:5px;overflow:hidden}.page-security ul.app-security-graph>li{position:relative;list-style-type:none;float:left;height:20px;width:20px;margin-right:5px;margin-bottom:5px}.page-security ul.app-security-graph>li a{display:block}.page-security ul.app-security-graph>li .avatar{position:absolute;bottom:0;border-radius:2px}.page-security img.almost-hidden{opacity:0.15}.page-security ul.user-security-graph{margin:20px 0 0 0px;width:600px;padding-top:10px}.page-security ul.user-security-graph>li{position:relative;list-style-type:none;float:left;width:600px;height:20px;margin-bottom:5px;margin-left:20px}.page-security ul.user-security-graph>li a{display:block;height:20px}.page-security ul.user-security-graph>li .avatar{position:absolute;bottom:0;border-radius:2px}.page-security ul.user-security-graph>li .key-graph-bar{display:block;position:absolute;left:23px;height:100%;border-radius:2px;background:#ddd}.page-security ul.user-security-graph>li .deploy-key-graph-bar{display:block;position:absolute;left:23px;height:100%;border-radius:2px;background:#999}.page-security ul.user-security-graph>li .app-graph-bar{display:block;position:absolute;left:23px;height:100%;border-radius:2px;background:#90D35B}.page-security ul.user-security-graph>li .private-repo-app-graph-bar{display:block;position:absolute;left:23px;height:100%;border-radius:2px;background:#C52323}.page-security ul.user-security-graph>li.org{height:40px;margin-left:0}.page-security ul.user-security-graph>li.org a{height:40px}.page-security ul.user-security-graph>li.org .org-graph-bar{left:43px}.select-menu-button{padding-right:25px}.select-menu-button .octicon{margin-right:1px}.select-menu-button:before{position:absolute;top:10px;right:10px;display:block;width:0;height:0;content:"";border:4px solid #333;border-color:#333 transparent transparent}.select-menu-button.with-gravatar:before{top:13px}.select-menu-button.icon-only{padding-right:18px;padding-left:7px}.select-menu-button.icon-only:before{right:8px}.select-menu-button.primary:before{border-top-color:#fff}.select-menu-button.primary:hover:active{background-color:#4a993e}.select-menu .spinner{float:left;margin:4px 0 0 -24px}.select-menu.active .select-menu-modal-holder{display:block}.select-menu.right-aligned{float:right;position:relative}.select-menu.right-aligned .select-menu-modal-holder{right:0}.select-menu.is-showing-clear-item .select-menu-clear-item{display:block}.select-menu.is-showing-clear-item .select-menu-clear-item .octicon{color:inherit}.select-menu.is-showing-clear-item .select-menu-clear-item+.select-menu-no-results{display:none}.select-menu.is-loading .select-menu-loading-overlay{display:block}.select-menu.has-error .select-menu-error-shell{display:block}.select-menu-loading-overlay{display:none;text-indent:100%;height:100%;width:100%;position:absolute;top:0;border-radius:5px;box-sizing:border-box;border:1px solid transparent;background-color:rgba(255,255,255,0.8);animation:pulse 2s infinite linear;-webkit-animation:pulse 2s infinite linear;-moz-animation:pulse 2s infinite linear}.select-menu-loading-overlay:before{position:absolute;left:50%;top:50%;margin:-16px 0 0 -16px;width:32px;content:"\f008";font:normal normal 32px "octicons";line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased;text-indent:0}@keyframes pulse{0%{color:rgba(170,170,170,0.1)}10%{color:#aaaaaa}100%{color:rgba(170,170,170,0.1)}}@-webkit-keyframes pulse{0%{color:rgba(170,170,170,0.1)}10%{color:#aaaaaa}100%{color:rgba(170,170,170,0.1)}}@-moz-keyframes pulse{0%{color:rgba(170,170,170,0.1)}10%{color:#aaaaaa}100%{color:rgba(170,170,170,0.1)}}@-o-keyframes pulse{0%{color:rgba(170,170,170,0.1)}10%{color:#aaaaaa}100%{color:rgba(170,170,170,0.1)}}.select-menu-error-shell{padding:5px;border-bottom:1px solid #eee;display:none}.select-menu-error-shell .select-menu-error{display:block;padding:5px 10px;font-weight:bold;color:#900;background-color:#FFEAEA;border:1px solid #E2A0A0}.select-menu-modal-holder{position:absolute;display:none;z-index:21}.select-menu-modal{position:relative;width:300px;margin-top:4px;margin-bottom:20px;overflow:hidden;font-size:12px;color:#666;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:5px;box-shadow:0 3px 12px rgba(0,0,0,0.25)}.select-menu-header{padding:8px 10px;background-color:#eeeeee;background-image:-moz-linear-gradient(#fafafa, #eee);background-image:-webkit-linear-gradient(#fafafa, #eee);background-image:linear-gradient(#fafafa, #eee);background-repeat:repeat-x;border-bottom:1px solid #ddd}.select-menu-header .select-menu-title{font-weight:bold;color:#333;text-shadow:0 1px 0 #fff}.select-menu-header .octicon{display:block;float:right;color:#ccc;cursor:pointer}.select-menu-header .octicon:hover{color:#555}.select-menu-filters{background-color:#f8f8f8}.select-menu-text-filter{padding:10px 10px 0}.select-menu-text-filter:first-child:last-child{padding-bottom:10px;border-bottom:1px solid #DDD}.select-menu-text-filter input{display:block;width:100%;max-width:100%;padding:5px;border:1px solid #DDD;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.select-menu-text-filter input::-webkit-input-placeholder,.select-menu-text-filter input:-moz-placeholder{color:#aaa}.select-menu-tabs{height:33px;border-bottom:1px solid #ddd}.select-menu-tabs ul{overflow:hidden;padding:14px 10px 0 10px}.select-menu-tabs .select-menu-tab{display:inline-block}.select-menu-tabs a{height:20px;padding:5px 8px;font-size:11px;font-weight:bold;color:#888;text-decoration:none;line-height:20px;border-radius:3px 3px 0 0;cursor:pointer}.select-menu-tabs a:hover{color:#333}.select-menu-tabs a.selected{padding:4px 5px;border:1px solid #ddd;border-bottom:1px solid #fff;background-color:#fff;color:#333}.select-menu-list{max-height:400px;overflow:auto;position:relative}.select-menu-list.select-menu-tab-bucket{display:none}.select-menu-list.select-menu-tab-bucket.selected{display:block}.select-menu-item{cursor:pointer;border-bottom:1px solid #eee;display:table;table-layout:fixed;width:100%;overflow:hidden;color:inherit}.select-menu-item:hover{text-decoration:none}.select-menu-item.select-menu-item-template{display:none}.select-menu-item.select-menu-clear-item{display:none}.select-menu-item.disabled,.select-menu-item.disabled.selected{color:#999}.select-menu-item.disabled .select-menu-item-gravatar,.select-menu-item.disabled.selected .select-menu-item-gravatar{opacity:.5}.select-menu-item .octicon{color:#333}.select-menu-item input[type="radio"]{display:none}.select-menu-item .select-menu-item-icon{display:table-cell;color:transparent;vertical-align:top;padding:8px 0 8px 8px;width:24px;text-align:center;-moz-box-sizing:border-box;box-sizing:border-box}.select-menu-item .select-menu-item-icon.is-shown{color:inherit}.select-menu-item.navigation-focus,.select-menu-item.navigation-focus.selected,.select-menu-item.navigation-focus.select-menu-action{background-color:#4183c4;color:#fff}.select-menu-item.navigation-focus>.octicon,.select-menu-item.navigation-focus.selected>.octicon,.select-menu-item.navigation-focus.select-menu-action>.octicon{color:#fff}.select-menu-item.navigation-focus .description,.select-menu-item.navigation-focus.selected .description,.select-menu-item.navigation-focus.select-menu-action .description{color:#fff}.select-menu-item.select-menu-action,.select-menu-item.selected{color:#333}.select-menu-item.select-menu-action .description,.select-menu-item.selected .description{color:#666}.select-menu-item.select-menu-action>.octicon,.select-menu-item.selected>.octicon{color:#333}.select-menu-item.select-menu-action .select-menu-item-text{font-weight:bold}.select-menu[data-multiple] .select-menu-item:active{background-color:transparent !important}.select-menu-item a{color:inherit;text-decoration:none}.select-menu-item .hidden-select-button-text{display:none}.select-menu-item .css-truncate-target{display:table-cell;max-width:none}form.select-menu-item>div:first-child{display:none !important}.select-menu-item.last-visible,.select-menu-list:last-child .select-menu-item:last-child{border-bottom:0;border-radius:0 0 3px 3px}.select-menu-actions .select-menu-item:hover{background-color:#4183c4;color:#fff}.select-menu-actions .select-menu-item:hover>.octicon{color:#fff}.select-menu-actions .select-menu-item:hover .description{color:#fff}.select-menu-no-results{padding:9px;display:none;cursor:auto;color:#999}.select-menu-list.filterable-empty .select-menu-no-results,.select-menu-no-results:only-child{display:block}.select-menu-button-gravatar,.select-menu-item-gravatar{overflow:hidden;line-height:0;width:20px}.select-menu-button-gravatar img,.select-menu-item-gravatar img{height:20px;width:20px;display:inline-block;border-radius:3px}.select-menu-item-gravatar{display:table-cell;padding:6px 0 6px 8px;vertical-align:top;width:28px;-moz-box-sizing:border-box;box-sizing:border-box}.select-menu-button-gravatar{display:inline-block;margin:6px 3px 6px 0;margin-right:5px;vertical-align:middle}.select-menu-item-text{display:table-cell;vertical-align:top;padding:8px 0 8px 8px}.select-menu-item-text:first-child{margin-left:5px}.select-menu-item-text .description{color:#999;font-size:11px;max-width:265px;display:block;margin-top:2px;margin-bottom:2px}.select-menu-item-text h4{margin-top:0;margin-bottom:0}.select-menu-item-text h4 .description{font-weight:normal;display:inline}.select-menu-footer{padding:8px;font-weight:bold;border-top:1px solid #eee}.select-menu-footer a{display:inline-block;margin-top:1px;vertical-align:top}.select-menu-footer .octicon{color:#666}.select-menu-new-item-form{display:none}.select-menu-new-item-form .octicon{color:#4183c4}.select-menu-list.is-showing-new-item-form .select-menu-new-item-form{display:table}.select-menu-list.is-showing-new-item-form .select-menu-no-results,.select-menu-list.is-showing-new-item-form .select-menu-clear-item{display:none}.modal-backdrop{display:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.menu-active .modal-backdrop{display:block;position:fixed;top:0;left:0;height:100%;width:100%;z-index:20}.facebox .sudo{padding:0}.facebox .sudo .auth-form-header{border-width:0 0 1px}.facebox .sudo .auth-form-header .mini-icon{display:none}.facebox .sudo .auth-form-body{border-width:0}.facebox .sudo+.facebox-close{padding:5px;color:#fff}#js-sudo-prompt{display:none}.js-sudo-error{display:none}.discussions-header{margin:0 0 8px;padding:0 0 10px}.discussions-header h3{margin:0;line-height:1.85}.discussions-filters .select-menu{display:inline-block}.discussions-filters .tabnav-widget{margin-top:0}.discussions-menu .select-menu-modal{width:260px}.discussions-menu .select-menu-item{position:relative}.discussions-menu .counter{position:absolute;right:15px;top:9px}.discussions{margin:0 0 20px}.discussions .discussion{color:#9B9B9B;font-size:15px;list-style-type:none;padding:16px 0 16px 43px;border-top:1px solid #eee;position:relative}.discussions .discussion .discussion-icon{position:absolute;left:0}.discussions .discussion p,.discussions .discussion h3{margin:0;line-height:1.6;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.discussions .discussion h3 a{font-size:18px;color:#333;font-weight:normal;letter-spacing:-0.055em}.discussions .discussion .avatar img{width:20px;height:20px;position:relative;top:4px}.discussions .discussion .discussion-extra{margin:0 0 4px}.discussions .discussion .pull-info{background:#e8f1f6;border-radius:3px;color:rgba(0,0,0,0.5);display:inline-block;font-size:12px;margin-top:5px;padding:3px 7px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.12)}.discussions .discussion .pull-info em{font-style:normal}.discussions .discussion .discussion-meta{font-size:13px}.discussions .discussion .discussion-username{margin-left:4px;color:#333}.discussions .discussion .discussion-participants{float:right}.discussions .discussion.unseen .mega-octicon{color:#4183c4}.discussions .discussion.unseen h3 a{font-weight:bold}.user-list em{background-color:rgba(255,255,140,0.5);font-weight:bold;padding:2px 1px 0;font-style:normal;margin:0 -1px}.user-list .tabnav-widget{clear:right;float:right;margin-top:0}.user-list .gravatar{position:absolute;left:0px;top:0px;width:48px;height:48px}.user-list .gravatar img{border-radius:5px}.user-list .user-list-info{padding:0;min-height:48px;font-weight:normal;font-size:18px}.user-list .user-list-info a:visited{color:#7C65C2}.user-list .user-list-meta{font-size:11px;margin:3px 0 0;list-style-type:none;overflow:hidden;color:#999999}.user-list .user-list-meta>li{float:left;margin-right:10px}.user-list .user-list-meta a{color:#333333}.user-list .user-list-meta .octicon{color:#838383;vertical-align:bottom;margin:0 3px 0 0}.user-list .user-list-item{border-bottom:1px solid #f1f1f1;padding:0 0 20px 58px;margin:0 0 20px 0;position:relative}.follow-list{list-style-type:none}.follow-list .follow-list-container{margin-left:90px}.follow-list .follow-list-item{float:left;width:305px;padding-bottom:20px;margin-bottom:20px;margin-right:20px;border-bottom:1px solid #eee}.repository-with-sidebar .follow-list .follow-list-item{width:285px}.follow-list .follow-list-name{font-weight:normal;margin:0 0 5px}.follow-list .follow-list-name a{color:inherit}.follow-list .follow-list-info{margin-top:0;margin-bottom:10px;font-size:12px;color:#666666}.follow-list .css-truncate.css-truncate-target{max-width:195px}.repository-with-sidebar .follow-list .css-truncate.css-truncate-target{max-width:170px}.follow-list .gravatar{float:left;display:block;width:75px;height:75px}.zeroclipboard-link{color:#4183c4;cursor:pointer}.zeroclipboard-link .octicon{display:block}.zeroclipboard-inline{display:inline-block;padding:0 10px;line-height:24px;box-shadow:none} \ No newline at end of file diff --git a/public/css/github2.css b/public/css/github2.css new file mode 100644 index 0000000..66fb115 --- /dev/null +++ b/public/css/github2.css @@ -0,0 +1 @@ +.addon-store .pagehead .container{position:relative}.addon-store .pagehead h1{display:inline-block}.addon-store .pagehead .electrocat-small{position:absolute;bottom:-27px;right:0}.addon-store .marketing-nav{right:370px;bottom:-20px}.addon-store .addon-install-arrow{display:block;color:#999;text-align:center}.addon-summary{-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #eee;border-radius:5px;box-shadow:0 1px 3px rgba(0,0,0,0.05);float:left;list-style-type:none;margin:0 10px 10px 0;padding:10px;position:relative;width:32%}.addon-summary:before,.addon-summary:after{content:" ";display:table}.addon-summary:after{clear:both}.addon-summary a:hover{text-decoration:none}.addon-summary .addon-icon,.addon-summary .addon-summary-contents{display:inline-block;vertical-align:middle}.addon-summary .addon-icon{width:100px;height:100px;margin-right:10px}.addon-summary .addon-details{width:170px}.addon-summary .addon-name{font-size:18px;line-height:1em}.addon-summary .addon-provider{font-size:13px;color:#aaa}.addon-summary .addon-provider a{color:#222;font-weight:bold}.addon-summary .addon-actions{margin-top:5px}.addon-summary .private-addon-indicator{background:#E9DBA5;border:1px solid #D6C685;border-radius:3px 0 0 3px;box-shadow:inset 0 1px 0 rgba(255,255,255,0.3);text-shadow:0 1px 0 rgba(255,255,255,0.3);color:#B7A353;padding:3px 0;position:absolute;top:21px;right:-5px;width:24px;text-align:center}.addon-summary .private-addon-indicator:before{content:"";position:absolute;top:-5px;right:-1px;border-color:transparent transparent #D6C685 #D6C685;border-style:solid;border-width:2px;width:0;height:0}.addon-summary .addon-actions .octicon{margin-right:0}.addon-form{margin-top:40px}.addon-form .addon-enclosure{-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #eee;border-radius:5px;box-shadow:0 1px 3px rgba(0,0,0,0.05)}.addon-form .addon-enclosure:before,.addon-form .addon-enclosure:after{content:" ";display:table}.addon-form .addon-enclosure:after{clear:both}.addon-form .addon-enclosure .icon-upload,.addon-form .addon-enclosure dl.form{margin:5px}.addon-form .addon-field-group{padding:10px;border-top:1px solid #eee}.addon-form .addon-field-group:first-child{border-top:none}.addon-form .addon-name,.addon-form .addon-owner{display:inline-block;vertical-align:middle}.addon-form .addon-name{width:210px}.addon-form .addon-name>dd input[type="text"]{width:100%}.addon-form .icon-upload,.addon-form .primary-addon-fields{display:inline-block;vertical-align:top}.icon-upload{-moz-box-sizing:border-box;box-sizing:border-box;background-color:#eee;border:1px solid #ccc;border-radius:3px}.icon-upload .icon-placeholder{color:#999;text-align:center;text-shadow:0 1px 0 #fff;padding:23px 0}.icon-upload .icon-placeholder .mega-octicon,.icon-upload .icon-placeholder p{margin:0}.icon-upload .icon-message{color:#aaa;background-color:#fafafa;padding:5px 10px;border-radius:0 0 3px 3px;border-top:1px solid #ccc}.addon-event-types{width:600px}.addon-event-types .addon-event-type{-moz-box-sizing:border-box;box-sizing:border-box;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;display:inline-block;vertical-align:top;width:140px;height:40px;margin:0 5px 10px 0;border:1px solid #ddd;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.05);padding:10px;color:#666;cursor:pointer;text-shadow:0 1px 0 rgba(255,255,255,0.5);position:relative}.addon-event-types .addon-event-type .addon-event-icon,.addon-event-types .addon-event-type .addon-event-name{display:inline-block}.addon-event-types .addon-event-type:before{content:"";width:6px;height:20px;position:absolute;right:10px;background:#c00;border-radius:15px;box-shadow:inset 0 1px 3px rgba(0,0,0,0.3),0 1px 0 rgba(255,255,255,0.5)}.addon-event-types .addon-event-type.is-selected{background-color:#d8f8dc;background-image:-moz-linear-gradient(#bae8c3, #d8f8dc);background-image:-webkit-linear-gradient(#bae8c3, #d8f8dc);background-image:linear-gradient(#bae8c3, #d8f8dc);background-repeat:repeat-x;border-color:#76A172;box-shadow:inset 0 1px 5px rgba(0,0,0,0.3)}.addon-event-types .addon-event-type.is-selected .addon-event-icon{color:#425542}.addon-event-types .addon-event-type.is-selected .addon-event-name{color:#587258}.addon-event-types .addon-event-type.is-selected:before{background:#6cc644;box-shadow:inset 0 1px 3px rgba(0,0,0,0.3),0 1px 0 rgba(255,255,255,0.5),0 0 10px rgba(108,198,68,0.5)}.addon-event-types .addon-event-checkbox{display:none}.addon-event-types .addon-event-icon{color:#888}.addon-event-types .addon-event-name{color:#666;font-weight:bold;margin-top:1px;font-size:13px}.addon-field-editor{-moz-box-sizing:border-box;box-sizing:border-box;float:left;width:auto;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.1)}.addon-field-editor .addon-field-list,.addon-field-editor .addon-new-field{text-align:center}.addon-field-editor .addon-field-list{border:1px solid #ddd;border-bottom:none;border-radius:3px 3px 0 0}.addon-field-editor .addon-new-field{background-color:#d0e3ef;background-image:-moz-linear-gradient(#d8ebf8, #d0e3ef);background-image:-webkit-linear-gradient(#d8ebf8, #d0e3ef);background-image:linear-gradient(#d8ebf8, #d0e3ef);background-repeat:repeat-x;border:1px solid #97c1da;border-radius:0 0 3px 3px}.addon-field-editor .addon-field-property,.addon-field-editor .addon-field-actions{display:inline-block}.addon-field-editor .addon-field,.addon-field-editor .addon-new-field,.addon-field-editor .no-addon-fields{padding:6px 5px}.addon-field-editor .addon-field{border-bottom:1px solid #ddd}.addon-field-editor .addon-field:last-child{border-bottom:none}.addon-field-editor .no-addon-fields{text-align:center}.addon-field-editor .no-addon-fields p{margin:.5em 0}.addon-field-editor .button{width:50px;text-align:center}dl.form>dd .addon-field-editor .addon-field-input{width:290px}.addon-config-editor .addon-field{margin:10px 0}.addon-config-editor .addon-field-name{display:block}.addon-select-target{text-align:center}.addon-select-target .addon-target-selector,.addon-select-target .addon-owner-select,.addon-select-target .addon-target-slash,.addon-select-target .addon-target-repository,.addon-select-target .addon-install-button{display:inline-block;text-align:left}.addon-select-target .addon-target-slash{font-size:21px;color:#666;margin:0 5px;position:relative;top:4px}.addon-select-target .addon-target-repository .select-menu-button{padding:4px 30px 4px 10px}.addon-select-target .addon-target-repository .select-menu-button:before{top:14px}.addon-select-target .addon-install-button{margin-left:5px}.avatar-stack{position:relative;width:auto}.avatar-stack .avatar{float:left;width:20px;height:20px;border-radius:2px;position:relative}.avatar-stack.multiple-avatars{padding-left:1px}.avatar-stack.multiple-avatars.leftmost{border-left:0;border-right:1px solid #ddd;padding-left:0;padding-right:1px}.avatar-stack.multiple-avatars:before{content:"";float:left;display:block;position:absolute;top:0;left:-3px;width:18px;height:18px;border:1px solid #d7d7d7;border-right:none;border-radius:2px;background-color:#ccc;box-shadow:inset 1px 0 0 #eee}.avatar-stack.multiple-avatars .avatar{display:none}.avatar-stack.multiple-avatars .avatar:last-child{display:inline-block;box-shadow:-1px 0 0 #eee}.avatar-stack.multiple-avatars.leftmost .avatar:last-child{display:none}.avatar-stack.multiple-avatars.leftmost .avatar:first-child{display:inline-block}.avatar-stack.multiple-avatars:hover{border:none}.avatar-stack.multiple-avatars:hover:before{display:none}.avatar-stack.multiple-avatars:hover .avatar{display:inline-block;margin-left:2px}.avatar-stack.multiple-avatars:hover.leftmost .avatar{margin-left:0;margin-right:2px;display:inline-block}.heat1{background-color:#ffeca7}.heat2{background-color:#ffdd8c}.heat3{background-color:#ffdd7c}.heat4{background-color:#fba447}.heat5{background-color:#f68736}.heat6{background-color:#f37636}.heat7{background-color:#ca6632}.heat8{background-color:#c0513f}.heat9{background-color:#a2503a}.heat10{background-color:#793738}.blame-breadcrumb .css-truncate-target{max-width:680px}.blame{font-size:12px;font-family:Monaco, "Liberation Mono", Courier, monospace;background-color:#fff}.blame .commitinfo{padding:5px 10px;background-color:#f7f7f7;border-right:1px solid #e5e5e5}.blame .file-blame .diff-line-num{vertical-align:middle;cursor:pointer}.blame .commit-date{color:#888}.blame .section-first td{border-top:1px solid #ccc}.blame .line-data{white-space:pre}.blame .commitinfo code{font-size:12px}.blame .commitinfo .date{color:#666;display:block;float:left;padding-right:5px}.blame .commitinfo .message{display:block;width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;float:right}.line-age{padding:0 1px}.line-age-legend{float:right;margin-top:-25px;font-size:12px;color:#777}.line-age-legend ol{display:inline-block;list-style:none;margin:0 5px}.line-age-legend ol li{display:inline-block;width:8px;height:10px}.blankslate{text-align:center;padding:30px;background-color:#fafafa;border:solid 1px #ddd;border-radius:3px;box-shadow:inset 0 0 8px #eee;position:relative}.blankslate.has-fixed-width{margin:0 auto;width:485px}.blankslate.large-format h3{margin:0.75em 0 0.75em 0;font-size:20px}.blankslate.large-format p{font-size:16px}.blankslate.large-format .mega-octicon{font-size:40px;height:40px;width:40px;color:#aaa}.blankslate code{padding:2px 5px 3px;background:#fff;font-size:14px;border:1px solid #eee;border-radius:3px}.blankslate>.mega-octicon{color:#aaa}.blankslate .mega-octicon+.mega-octicon{margin-left:10px}.tabnav+.blankslate{margin-top:20px}.blankslate .context-loader.large-format-loader{padding-top:50px}#blog-main .pagehead h1{margin-top:3px;font-size:24px}#blog-main .pagehead h1 a.title{color:#333333}.blog-search{position:relative;float:right}.blog-search .blog-search-input{padding-left:28px;width:200px}.blog-search .octicon-search{position:absolute;left:7px;top:9px;z-index:5;color:#999}.blog-search-results em{background-color:#FAFFA6;padding:.1em}.blog-aside{float:right}.blog-aside .button{margin-bottom:20px;text-align:center}.blog-aside .menu-container{float:none;margin-bottom:30px}.blog-aside .rss{display:inline-block;margin-left:5px;color:#999999}.blog-aside .rss .octicon{float:left;margin-right:5px;color:#ff9933}.blog-content{width:685px;font-family:"Helvetica Neue", Helvetica, Arial, freesans, sans-serif}.blog-content h1,.blog-content h2,.blog-content h3{font-weight:500}.blog-draft .blog-draft-indicator{color:#bd2c00}.blog-post+.blog-post{margin-top:60px}.blog-post-meta{list-style:none;margin-bottom:10px;color:#999999}.blog-post-meta li{display:inline;padding-right:20px}.blog-post-meta a{color:#999999}.blog-post-meta .octicon,.blog-post-meta .author-avatar{vertical-align:top;border-radius:3px}.blog-post-title{margin-top:0;margin-bottom:10px;font-size:32px}#blog-home{color:#ccc;font-size:15px;font-weight:100;margin-right:10px;margin-left:-25px;vertical-align:middle}#blog-home:hover{color:#999}.blog-post-body{font-size:16px;line-height:1.6;color:#444;padding-top:10px}.blog-post-body code{font-size:16px}.blog-post-body img{padding:3px;border:1px solid #D8D8D8}.blog-post-body img.emoji{width:30px !important;height:30px !important;border:0}.blog-post-body iframe{border:none;width:100%;height:500px}.blog-content .pagination{margin-top:60px}.blog-feedback{margin:50px 0;background-color:#f1f1f1;background-image:-moz-linear-gradient(#fafafa, #f1f1f1);background-image:-webkit-linear-gradient(#fafafa, #f1f1f1);background-image:linear-gradient(#fafafa, #f1f1f1);background-repeat:repeat-x;border:1px solid #ddd;border-bottom-color:#ccc;border-radius:3px;box-shadow:inset 0 1px 0 #fff, 0 1px 5px #f1f1f1}.blog-feedback-header{background:url("/images/icons/twitter.png?34a6a9a3") 648px 1px no-repeat;background-size:32px auto;margin:0;padding:10px;border-bottom:1px solid #ddd;box-shadow:0 1px 0 #fff;font-size:14px;font-weight:bold}.blog-feedback-description{margin:0;padding:10px;color:#999}.boxed-group{position:relative;background:#efefef;padding:3px;border-radius:3px;margin:0 0 15px 0}.boxed-group+.boxed-group{margin-top:35px}.boxed-group .boxed-group-action{position:absolute;right:0;top:0;z-index:10;margin:9px 10px 0 0}.boxed-group .boxed-group-inner{padding:1px 10px;background:#fff;border:1px solid #d8d8d8;border-top:1px solid #ccc;border-bottom-left-radius:1px;border-bottom-right-radius:1px;color:#666;font-size:13px}.boxed-group .boxed-group-inner strong{color:#000}.boxed-group .boxed-group-inner.markdown-body{padding-top:10px;padding-bottom:10px}.boxed-group .boxed-group-inner.seamless{padding:0}.boxed-group .boxed-group-inner h4{margin:15px 0 -5px 0;font-size:14px;color:#000}.boxed-group .boxed-group-inner .boxed-action{float:right}.boxed-group .boxed-group-inner .help{clear:both;margin:1em -10px 0 -10px;padding:1em 10px 1em 35px;border-top:1px solid #ddd;color:#999}.boxed-group .boxed-group-inner .help .octicon{margin-left:-25px;margin-right:5px}.boxed-group.flush .boxed-group-inner{padding:0}.boxed-group.condensed .boxed-group-inner{font-size:12px;padding:0}.boxed-group>h3,.boxed-group .heading{background-color:#e0e0e0;background-image:-moz-linear-gradient(#fafafa, #e0e0e0);background-image:-webkit-linear-gradient(#fafafa, #e0e0e0);background-image:linear-gradient(#fafafa, #e0e0e0);background-repeat:repeat-x;margin:0;border-top-left-radius:1px;border-top-right-radius:1px;border:1px solid #d8d8d8;border-bottom:none;padding:10px 10px 11px 10px;font-size:14px;text-shadow:0 1px 0 #fff}.boxed-group>h3 a.boxed-group-breadcrumb,.boxed-group .heading a.boxed-group-breadcrumb{color:#666;font-weight:normal;text-decoration:none}.boxed-group>h3 .avatar,.boxed-group .heading .avatar{margin-top:-4px;border-radius:3px;vertical-align:middle}.boxed-group.dangerzone>h3{background-color:#df3e3e;background-image:-moz-linear-gradient(#f97171, #df3e3e);background-image:-webkit-linear-gradient(#f97171, #df3e3e);background-image:linear-gradient(#f97171, #df3e3e);background-repeat:repeat-x;border-bottom:1px solid #900;color:#fff;text-shadow:0 -1px 0 #900}.boxed-group.condensed>h3{padding:6px 6px 7px;font-size:12px}.boxed-group.condensed>h3 .octicon{padding:0 6px 0 2px}.boxed-group hr.bleed-flush{width:100%;padding:0 10px;margin-left:-10px}.boxed-group hr.compact{margin-top:10px;margin-bottom:10px}.boxed-group .form-help{float:right;margin-top:40px;width:200px;text-align:center}.boxed-group .form-help a{font-weight:bold}.boxed-group .form-help p{margin:10px 0}.fieldWithErrors{display:inline}ul.compact-options{margin:-6px 0 13px 0}ul.compact-options li{margin:0 12px 0 0;display:inline-block;list-style-type:none;font-weight:bold}ul.compact-options li label{float:left}ul.compact-options li .spinner{float:left;width:16px;height:16px;margin-left:5px;display:block}.boxed-group-list{list-style:none;margin:0}.boxed-group-list>li{display:block;margin-left:-10px;margin-right:-10px;padding:5px 10px;line-height:23px;border-bottom:1px solid #e5e5e5;-moz-box-sizing:border-box;box-sizing:border-box}.boxed-group-list>li:hover{background:#ffe}.boxed-group-list>li:first-child{border-top:1px solid #ddd}.boxed-group-list>li:last-child{border-bottom:none}.boxed-group-list>li.selected{background:#e5f9e2}.boxed-group-list>li.approved .minibutton,.boxed-group-list>li.rejected .minibutton{display:none}.boxed-group-list>li.approved:before,.boxed-group-list>li.rejected:before{margin-right:5px;font:normal normal 16px "octicons";line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased;content:"\f03a";color:#5ec051;font-size:16px}.boxed-group-list>li.rejected:before{content:"\f050";color:#bc0000}.boxed-group-list>li.rejected a{text-decoration:line-through}.boxed-group-list>li img{margin-top:-2px;margin-right:4px;vertical-align:middle;border-radius:3px}.boxed-group-list>li .minibutton{float:right;margin:-1px 0 0 10px}.boxed-group-list>li .button-group{float:right}.boxed-group-list>li .button-group .minibutton{float:left}.boxed-group-list .access-level{color:#777;margin-left:10px}.boxed-group.flush .boxed-group-list li{margin-left:0;width:auto;padding-left:0;padding-right:0}.boxed-group-list.standalone{margin-top:-1px}.boxed-group-list.standalone>li:first-child{border-top:none}.boxed-group-list>li.linked-item{position:relative}.boxed-group-list>li.linked-item>a{display:block}.boxed-group-list>li.linked-item>a:hover{background-position:100% -98px}.boxed-group-list>li.linked-item>a:hover:after{color:#73a2d4;background-color:#e7ecf0}.boxed-group-list>li.linked-item>a .description{color:#999;font-style:normal}.boxed-group-list>li.linked-item>a:after{position:absolute;top:7px;right:7px;padding:1px 1px 1px 2px;font:normal normal 16px "octicons";line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased;content:"\f03e";color:#b3b3b3;text-decoration:none;font-size:16px;line-height:16px;float:right;border-radius:20px;border:1px solid #E5E5E5;background-color:#eee;width:15px;text-align:center}.boxed-group-list>li.linked-item .item-stat{float:right;margin-right:25px;color:#999}.boxed-group-list>li.linked-item .item-stat strong{color:#333}.boxed-group-table{width:100%;text-align:left}.boxed-group-table th,.boxed-group-table td{padding:9px;border-bottom:1px solid #eee}.boxed-group-table th{background-color:#fafafa}.boxed-group-table td{vertical-align:top}#ajax-error-message{display:none;position:fixed;top:-200px;left:50%;width:914px;z-index:9999;margin:0 3px;margin-left:-457px;-moz-box-sizing:border-box;box-sizing:border-box;transition:top 0.5s ease-in;-webkit-transition:top 0.5s ease-in 0}#ajax-error-message.visible{top:0}#ajax-error-message>.octicon-alert{vertical-align:text-top}.command-bar{position:relative;float:left;margin-top:6px}.header-logged-out .command-bar{width:626px;margin-top:3px;margin-left:15px}.homepage .header-logged-out .command-bar{width:770px}.command-bar .command-bar-form{position:relative;z-index:95;width:220px;transition:width 0.2s ease-in-out;-webkit-transition:width 0.2s ease-in-out 0}.command-bar input[type="text"]{position:relative;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;min-height:28px;padding:4px 20px 4px 8px;font-size:12px;transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out 0}.command-bar:not(.command-bar-focus) input[type="text"]{border-color:#ddd;background:#fcfcfc;box-shadow:1px 1px 0 #fff}.command-bar .help{position:absolute;top:0;bottom:0;right:10px;width:12px;height:auto;line-height:24px;z-index:96;color:#999}.command-bar .octicon-question{font-size:12px;cursor:pointer}.command-bar.in-repository .command-bar-form{width:340px}.command-bar.in-repository input[type="text"]{padding-left:123px}.command-bar.in-repository .search-context-select-menu{text-shadow:none}.command-bar.in-repository .search-context-select-menu .select-menu-button{position:absolute;top:1px;left:1px;margin:0;width:118px;height:26px;padding-right:7px;line-height:26px;font-size:11px;border:none;border-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-right:1px solid #ddd;background-color:#f4f4f4;background-image:-moz-linear-gradient(#f8f8f8, #f4f4f4);background-image:-webkit-linear-gradient(#f8f8f8, #f4f4f4);background-image:linear-gradient(#f8f8f8, #f4f4f4);background-repeat:repeat-x;-moz-box-sizing:border-box;box-sizing:border-box;box-shadow:none}.command-bar.in-repository .search-context-select-menu .select-menu-button:hover,.command-bar.in-repository .search-context-select-menu .select-menu-button.selected{background-color:#e4e4e4;background-image:-moz-linear-gradient(#e8e8e8, #e4e4e4);background-image:-webkit-linear-gradient(#e8e8e8, #e4e4e4);background-image:linear-gradient(#e8e8e8, #e4e4e4);background-repeat:repeat-x}.command-bar.in-repository .search-context-select-menu .select-menu-button:before{top:11px;border-color:#999 transparent transparent}.command-bar.in-repository .search-context-select-menu .select-menu-modal{width:150px}.header-logged-in .command-bar .top-nav{position:absolute;top:0;left:230px;z-index:99;width:211px;transition:opacity 0.2s linear;-webkit-transition:opacity 0.2s linear 0;opacity:1;z-index:1}.header-logged-out .command-bar .top-nav{position:absolute;top:0;z-index:99;transition:opacity 0.2s linear;-webkit-transition:opacity 0.2s linear 0;opacity:1;z-index:1;margin-top:0px;margin-right:0;right:0}.header-logged-in .in-repository .top-nav{left:350px}.header-logged-in .command-bar-focus .top-nav,.header-logged-out .command-bar-focus .top-nav{opacity:0}.header-logged-in .command-bar-hidden .top-nav{left:0}.command-bar-focus .command-bar-form{width:400px}.command-bar-focus.in-repository .command-bar-form{width:520px}.command-bar-focus .help{display:none}.enterprise.logged_out.private-mode .command-bar{width:765px}.enterprise.logged_out .command-bar{width:678px}.enterprise .command-bar-form input[type="text"]{border-color:#080909;box-shadow:inset 0 1px 0 rgba(0,0,0,0.075),0 1px 0 rgba(255,255,255,0.075)}.enterprise .command-bar-form input[type="text"]:focus{border-color:#000;box-shadow:inset 0 1px 0 rgba(0,0,0,0.075)}.enterprise .in-repository .minibutton.select-menu-button{background-color:#313436;background-image:-moz-linear-gradient(#4a4e50, #313436);background-image:-webkit-linear-gradient(#4a4e50, #313436);background-image:linear-gradient(#4a4e50, #313436);background-repeat:repeat-x;color:#eee;text-shadow:0 -1px 0 #222}.enterprise .in-repository .minibutton.select-menu-button:hover{background-color:#393b3e;background-image:-moz-linear-gradient(#525558, #393b3e);background-image:-webkit-linear-gradient(#525558, #393b3e);background-image:linear-gradient(#525558, #393b3e);background-repeat:repeat-x}.enterprise .in-repository .active .minibutton.select-menu-button{background-color:#4a4e50;background-image:-moz-linear-gradient(#313436, #4a4e50);background-image:-webkit-linear-gradient(#313436, #4a4e50);background-image:linear-gradient(#313436, #4a4e50);background-repeat:repeat-x;box-shadow:inset 0 3px 5px rgba(0,0,0,0.3);text-shadow:0 1px 3px #222}.commandbar{position:relative}.commandbar .display{position:absolute;top:100%;left:0;right:0;z-index:95;-moz-box-sizing:border-box;box-sizing:border-box;max-height:300px;overflow-y:auto;font-size:13px;background-color:#fff;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:3px;box-shadow:0 1px 5px rgba(0,0,0,0.25);-webkit-transition:opacity .2s linear, visibility 0s linear .21s;-moz-transition:opacity .2s linear, visibility 0s linear .21s;transition:opacity .2s linear, visibility 0s linear .21s;opacity:1;visibility:visible}.commandbar .display.hidden{opacity:0;visibility:hidden}.commandbar .choice,.commandbar .loading{position:relative;padding:8px;margin-bottom:-1px;overflow:hidden;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);white-space:nowrap;border:solid rgba(0,0,0,0.05);border-width:1px 0;display:block}.commandbar .choice:last-child,.commandbar .loading:last-child{border-radius:0 0 2px 2px;border-bottom:0;margin-bottom:0}.commandbar .choice:hover,.commandbar .loading:hover{background-color:#eff7fd;z-index:2;border-color:rgba(0,0,0,0.1);text-decoration:none}.commandbar .choice .command,.commandbar .loading .command{display:inline-block;margin-right:10px;color:#333}.commandbar .choice .prefix,.commandbar .loading .prefix{text-align:right;float:left;width:20px;height:20px;margin-right:5px}.commandbar .choice .prefix .octicon,.commandbar .loading .prefix .octicon{vertical-align:middle}.commandbar .choice .octicon-lock,.commandbar .choice .octicon-git-fork-private,.commandbar .loading .octicon-lock,.commandbar .loading .octicon-git-fork-private{color:#d5ba53}.commandbar .choice .command-user-avatar,.commandbar .loading .command-user-avatar{height:20px;width:20px;border-radius:3px}.commandbar .choice mark,.commandbar .loading mark{background-color:transparent;font-weight:bold;color:inherit}.commandbar .choice.selected,.commandbar .loading.selected{z-index:3;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#3269a0;background-image:-moz-linear-gradient(#4183c4, #3269a0);background-image:-webkit-linear-gradient(#4183c4, #3269a0);background-image:linear-gradient(#4183c4, #3269a0);background-repeat:repeat-x}.commandbar .choice.selected .command,.commandbar .choice.selected .octicon,.commandbar .choice.selected mark,.commandbar .loading.selected .command,.commandbar .loading.selected .octicon,.commandbar .loading.selected mark{color:#fff}.commandbar .loading .description{background:url("/images/spinners/octocat-spinner-16px.gif?8c695afe") 0 50% no-repeat;display:block;line-height:16px;margin:-1px 0;padding-left:24px}.commandbar .display table{width:100%;border-collapse:collapse}.commandbar .display table td{padding:0 8px;color:#999;line-height:30px;white-space:nowrap;border-top:1px solid rgba(0,0,0,0.05)}.commandbar .display table td span{display:block;overflow:hidden;text-overflow:ellipsis}.commandbar .display table td:first-child{font-weight:bold;width:1px;color:#333}.commandbar .display table tr:first-child td{border:0}.commandbar .message{position:absolute;top:0;left:0;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;padding:5px 8px;background:#fff;border-radius:4px;border:1px solid #51A7E8;z-index:97;overflow:hidden;-webkit-transition:opacity .2s linear, visibility 0s linear .21s;-moz-transition:opacity .2s linear, visibility 0s linear .21s;transition:opacity .2s linear, visibility 0s linear .21s;opacity:0;visibility:hidden;white-space:nowrap;text-overflow:ellipsis;text-shadow:none}.commandbar .message.visible{-webkit-transition:left .06s linear, opacity .2s linear;-moz-transition:left .06s linear, opacity .2s linear;transition:left .06s linear, opacity .2s linear;opacity:1;visibility:visible}.commandbar .message.visible ~ input::-webkit-input-placeholder{color:transparent}.commandbar .message.loading{color:#999}.commandbar .message.success{color:#396}.commandbar .message.error{color:#911}h3.conversation-list-heading{margin:35px 0 10px 0;height:0;text-align:center;font-size:16px;font-weight:normal;color:#999999;border-bottom:1px solid #ddd}h3.conversation-list-heading .inner{display:inline-block;position:relative;top:-10px;padding:0 5px;background:#fff}h3.conversation-list-heading strong{font-weight:bold;color:#333333}.simple-conversation-list{margin:15px 0;font-size:13px;color:#999999}.simple-conversation-list>li{margin:0;padding:8px 0;list-style-type:none;border-top:1px solid #eeeeee}.simple-conversation-list>li:first-child{border-top:none}.simple-conversation-list>li .title{font-weight:bold}.simple-conversation-list>li .title .num{color:#999999}.simple-conversation-list>li .state{display:inline-block;margin-right:3px;height:20px;padding:0 10px;line-height:20px;font-size:12px;font-weight:bold;color:#fff;text-align:center;text-shadow:0 1px 1px rgba(0,0,0,0.2);background:#666;border-radius:2px}.simple-conversation-list>li .state-merged{background:#8fb6dc}.simple-conversation-list>li .state-closed{background:#bd2c00}.simple-conversation-list>li .state-open{background:#6cc644}.simple-conversation-list>li .state-proposed{background:#6cc644}.simple-conversation-list>li .meta{float:right}.simple-conversation-list.varied-states .state{width:80px;-moz-box-sizing:border-box;box-sizing:border-box}.simple-conversation-list .pull-meta a{color:#999}.simple-conversation-list .pull-meta .a{color:#6cc644}.simple-conversation-list .pull-meta .d{color:#bd2c00}.logged_out.enter-coupon{background-color:#f9f9f9}.logged_out.enter-coupon .coupon-form-body{margin-bottom:-20px}.logged_out.enter-coupon .header-logged-out{background-color:#fff}.logged_out.enter-coupon .site-footer{border-top:0}.logged_out.enter-coupon .coupon-form-body{background-image:none;box-shadow:0 1px 3px rgba(0,0,0,0.075),inset 1px 0 #fff,0 0 200px #fff}.coupons .setup-plans td img{vertical-align:middle;margin-top:-2px}.coupons .is-hidden{display:none}.coupons .coupon-signin-title{margin-top:40px}.coupons .coupon-form-body{width:230px;margin:100px auto 60px;padding:20px;font-size:14px;font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;text-align:center;background-color:#fff;background-image:linear-gradient(#fefefe, #fafafa);border:1px solid #ccc;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,0.075),inset 1px 0 #fff}.coupons .coupon-form-body .coupon-icon{width:80px;height:80px;margin:0 auto 15px;color:#4183c4;border:1px solid #dedede;border-radius:40px}.coupons .coupon-form-body .coupon-icon .mega-octicon{margin-left:2px;font-size:48px;line-height:80px}.coupons .coupon-form-body .coupon-title{margin-bottom:20px;font-weight:500}.coupons .coupon-form-body .input-block{margin-bottom:15px}.coupons .coupon-form-body .small_notice{display:inline;padding:0 10px}.coupons .coupon-form-body .button{display:block;width:100%}.ghe-license-status{padding:40px 0;font-size:16px;text-align:center}.ghe-license-status .octocat{width:225px;margin-bottom:20px}.ghe-license-status h1{margin-bottom:10px}.ghe-license-status p{margin-top:0;margin-bottom:5px;color:#777}.fakelogin{text-align:center;font-size:14px;line-height:34px;background-color:#b33630;background-image:-moz-linear-gradient(#dc5f59, #b33630);background-image:-webkit-linear-gradient(#dc5f59, #b33630);background-image:linear-gradient(#dc5f59, #b33630);background-repeat:repeat-x;border-bottom:1px solid #900;color:#fff;text-shadow:0 -1px 0 rgba(153,0,0,0.25)}.fakelogin a{color:#f3d9d7;text-decoration:underline}.fakelogin a:hover{color:#fff}#fork-select:before,#fork-select:after{content:" ";display:table}#fork-select:after{clear:both}#fork-select img{border-radius:5px;margin-bottom:5px;opacity:.3}#fork-select .target{width:100px;padding:10px;margin:0 8px 10px 8px;float:left;text-align:center;border:2px solid transparent;border-radius:5px}#fork-select .target .css-truncate-target{max-width:90px}#fork-select .target.disabled{cursor:not-allowed;color:#999999}#fork-select .target:not(.disabled){cursor:pointer;font-weight:bold}#fork-select .target:not(.disabled) img{opacity:1}#fork-select .target:not(.disabled):hover{background-color:#dde9f4;color:#4183c4;border-color:#4183c4}#fork-select .target:not(.disabled):active{color:#265079;background-color:#8fb6dc}#fork-select-page h2{font-weight:400}#fork-select-page .target{margin-left:0}.enable-fullscreen.minibutton{display:inline-block;margin-top:4px;margin-left:5px;padding:0 6px}.enable-fullscreen.minibutton .octicon{margin-right:0}.new-file .enable-fullscreen{margin-left:11px}.write-content{position:relative}.write-content .enable-fullscreen{position:absolute;top:5px;right:16px;color:#333333;opacity:.5;line-height:1em}.write-content .enable-fullscreen:hover{opacity:1}.fullscreen-overlay{display:none;position:fixed;top:0;bottom:0;left:0;right:0;background:#fff;text-shadow:none;z-index:1000}.fullscreen-overlay .fullscreen-container{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-width:800px;height:100%;margin:0 auto;padding:30px 0}.fullscreen-overlay .textarea-wrap{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;position:relative}.fullscreen-overlay textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;padding:20px;border:0;background:#fff;color:#999999;font-size:21px;line-height:1.6em;resize:none;-moz-transition:color 0.15s ease-in 0;-webkit-transition:color 0.15s ease-in 0;transition:color 0.15s ease-in 0;box-shadow:none}.fullscreen-overlay textarea:focus,.fullscreen-overlay textarea:hover{outline:none;color:#333333}.fullscreen-overlay .fullscreen-sidebar{position:absolute;top:30px;right:30px;text-align:right;z-index:1002}.fullscreen-overlay .fullscreen-sidebar .exit-fullscreen,.fullscreen-overlay .fullscreen-sidebar .fullscreen-info,.fullscreen-overlay .fullscreen-sidebar .theme-switcher{color:#b3b3b3;float:right;clear:right;margin-bottom:15px}.fullscreen-overlay .fullscreen-sidebar .exit-fullscreen:hover,.fullscreen-overlay .fullscreen-sidebar .fullscreen-info:hover,.fullscreen-overlay .fullscreen-sidebar .theme-switcher:hover{color:#333333;text-shadow:0 0 10px #fff}.fullscreen-overlay .fullscreen-sidebar .theme-switcher{margin-right:8px}.fullscreen-overlay.dark-theme{background:#1d1f21}.fullscreen-overlay.dark-theme textarea{background:#1d1f21;color:#a4b1b1}.fullscreen-overlay.dark-theme textarea:focus,.fullscreen-overlay.dark-theme textarea:hover{color:#dbe0e0}.fullscreen-overlay.dark-theme .fullscreen-sidebar{color:#dbe0e0}.fullscreen-overlay.dark-theme .fullscreen-sidebar .exit-fullscreen,.fullscreen-overlay.dark-theme .fullscreen-sidebar .theme-switcher{color:#a4b1b1}.fullscreen-overlay.dark-theme .fullscreen-sidebar .exit-fullscreen:hover,.fullscreen-overlay.dark-theme .fullscreen-sidebar .theme-switcher:hover{color:#dbe0e0;text-shadow:0 0 10px #000}.fullscreen-overlay .suggester-container{top:5px;left:0}.fullscreen-overlay-enabled .wrapper,.fullscreen-overlay-enabled #footer{display:none}.fullscreen-overlay-enabled .fullscreen-overlay{display:block}.previewable-comment-form .input-with-fullscreen-icon{padding-right:24px;margin-right:-24px}.previewable-comment-form .upload-enabled .fullscreen-overlay textarea{max-height:none;border:none;border-radius:0}#wiki-wrapper .ie #gollum-editor{padding-bottom:1em}#gollum-editor{margin:10px 0 50px;padding:10px;background-color:#f9f9f9;border:1px solid #e4e4e4;border-radius:5px}.singleline{display:block;margin:10px 0}#gollum-editor-title-field.active{border-bottom:1px solid #ddd;display:block;margin:0 0 3px 0;padding:0 0 5px 0}#gollum-editor-page-title{font-weight:bold;margin-top:0}#gollum-editor-page-title.ph{color:#000}#gollum-editor-function-bar{margin:10px 0}#gollum-editor-type-switcher{display:none}#gollum-editor-function-bar{height:26px;padding-bottom:10px;border-bottom:1px solid #ddd}#gollum-editor-function-bar #gollum-editor-function-buttons{display:none;float:left}#gollum-editor-function-bar.active #gollum-editor-function-buttons{display:block}#gollum-editor-function-bar #gollum-editor-format-selector{padding-top:5px}#gollum-editor-function-bar #gollum-editor-format-selector select{float:right;margin:0}#gollum-editor-function-bar #gollum-editor-format-selector label{color:#999;float:right;font-size:11px;font-weight:bold;line-height:17px;padding:0 5px 0 0}#gollum-editor-function-buttons .minibutton{width:30px;padding-left:0;padding-right:0;text-align:center}#gollum-editor-function-buttons .minibutton .octicon{margin-right:0}#gollum-error-message{display:none;padding-top:12px;font-size:1.8em;color:#f33}#gollum-editor #gollum-editor-body{font-family:Monaco, "Liberation Mono", Courier, monospace;line-height:22px;margin:13px 0 5px;height:390px;resize:vertical}#gollum-editor #gollum-editor-body+.collapsed,#gollum-editor #gollum-editor-body+.expanded{border-top:1px solid #ddd;margin-top:7px}#gollum-editor .collapsed,#gollum-editor .expanded{border-bottom:1px solid #ddd;display:block;overflow:hidden;padding:10px 0 5px}#gollum-editor .collapsed a.button,#gollum-editor .expanded a.button{border:1px solid #ddd;color:#333;display:block;float:left;height:25px;overflow:hidden;margin:2px 5px 7px 0;padding:0;text-shadow:0 1px 0 #fff;width:25px;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border-radius:3px}#gollum-editor .collapsed a.button:hover,#gollum-editor .expanded a.button:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.3);text-decoration:none;background-color:#3072b3;background-image:-moz-linear-gradient(#599bdc, #3072b3);background-image:-webkit-linear-gradient(#599bdc, #3072b3);background-image:linear-gradient(#599bdc, #3072b3);background-repeat:repeat-x}#gollum-editor .collapsed a.button span,#gollum-editor .expanded a.button span{margin:4px}#gollum-editor .collapsed h4,#gollum-editor .expanded h4{font-size:16px;float:left;margin:0;padding:6px 0 0 4px;text-shadow:0 -1px 0 #fff}#gollum-editor .collapsed a.button span.octicon-triangle-right{display:inline-block}#gollum-editor .collapsed textarea,#gollum-editor .collapsed a.button span.octicon-triangle-down{display:none}#gollum-editor .expanded a.button span.octicon-triangle-down{display:inline-block}#gollum-editor .expanded a.button span.octicon-triangle-right{display:none}#gollum-editor .expanded textarea{border:1px solid #ddd;clear:both;display:block;font-size:12px;font-family:Monaco, "Liberation Mono", Courier, monospace;height:84px;margin:8px 0;padding:6px;width:883px;resize:vertical}#gollum-editor a.gollum-minibutton,#gollum-editor a.gollum-minibutton:visited{background-color:#f7f7f7;border:1px solid #d4d4d4;color:#333;cursor:pointer;display:block;font-size:12px;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-weight:bold;margin:0 0 0 9px;padding:5px 12px;text-shadow:0 1px 0 #fff;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border-radius:3px}#gollum-editor a.gollum-minibutton:hover,#gollum-editor a.gollum-minibutton:visited:hover{background:#3072b3;border-color:#518cc6 #518cc6 #2a65a0;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.3);text-decoration:none;background-color:#3072b3;background-image:-moz-linear-gradient(#599bdc, #3072b3);background-image:-webkit-linear-gradient(#599bdc, #3072b3);background-image:linear-gradient(#599bdc, #3072b3);background-repeat:repeat-x}#gollum-editor-help{margin-top:-10px;overflow:hidden;padding:0;border:1px solid #ddd;border-width:0 1px 1px 1px}#gollum-editor-help-parent,#gollum-editor-help-list{display:block;float:left;height:170px;list-style-type:none;overflow:auto;margin:0;padding:10px 0;width:160px;border-right:1px solid #eee}#gollum-editor-help-parent li,#gollum-editor-help-list li{font-size:12px;line-height:1.6;margin:0;padding:0}#gollum-editor-help-parent li a,#gollum-editor-help-list li a{border:1px solid transparent;border-width:1px 0;display:block;font-weight:bold;padding:2px 12px;text-shadow:0 -1px 0 #fff}#gollum-editor-help-parent li a:hover,#gollum-editor-help-list li a:hover{background:#fff;border-color:#f0f0f0;text-decoration:none;box-shadow:none}#gollum-editor-help-parent li a.selected,#gollum-editor-help-list li a.selected{border:1px solid #eee;border-bottom-color:#e7e7e7;border-width:1px 0;background:#fff;color:#000;box-shadow:0 1px 2px #f0f0f0}#gollum-editor-help-list{background:#fafafa}#gollum-editor-help-wrapper{background:#fff;overflow:auto;height:170px;padding:10px}#gollum-editor-help-content{font-size:12px;margin:0 10px 0 5px;padding:0;line-height:1.8}#gollum-editor-help-content p{margin:0 0 10px 0;padding:0}.ie #gollum-editor .singleline input{padding-top:0.25em;padding-bottom:0.75em}#gollum-footer{font-size:12px;line-height:19px}#gollum-footer #last-edit{color:#999;margin:10px 0 0}#gollum-dialog-dialog h4{border-bottom:1px solid #ddd;color:#333;font-size:16px;line-height:normal;font-weight:bold;margin:0 0 12px 0;padding:0 0 6px;text-shadow:0 -1px 0 #f7f7f7}#gollum-dialog-dialog-body{font-size:12px;line-height:16px;margin:0;padding:0}#gollum-dialog-dialog-body fieldset{display:block;border:0;margin:0;overflow:hidden;padding:0 12px}#gollum-dialog-dialog-body fieldset .field{margin:0 0 18px 0;padding:0}#gollum-dialog-dialog-body fieldset .field:last-child{margin:0 0 12px 0}#gollum-dialog-dialog-body fieldset label{color:#666666;display:block;font-size:14px;font-weight:bold;line-height:1.6;margin:0;padding:0;min-width:80px}#gollum-dialog-dialog-body fieldset input[type="text"]{display:block;margin:3px 0 0 0;width:100%}#gollum-dialog-dialog-body fieldset input.code{font-family:'Monaco', 'Courier New', Courier, monospace}#gollum-dialog-dialog-buttons{border-top:1px solid #ddd;overflow:hidden;margin:14px 0 0 0;padding:12px 0 0}a.gollum-minibutton,a.gollum-minibutton:visited{border:1px solid #d4d4d4;color:#333;cursor:pointer;display:inline;font-size:12px;font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-weight:bold;float:right;width:auto;margin:0 0 0 9px;padding:4px 12px;text-shadow:0 1px 0 #fff;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border-radius:3px}a.gollum-minibutton:hover,a.gollum-minibutton:visited:hover{border-color:#518cc6 #518cc6 #2a65a0;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.3);text-decoration:none;background-color:#3072b3;background-image:-moz-linear-gradient(#599bdc, #3072b3);background-image:-webkit-linear-gradient(#599bdc, #3072b3);background-image:linear-gradient(#599bdc, #3072b3);background-repeat:repeat-x}#wiki-wrapper.edit h1{color:#999;font-weight:normal}#wiki-wrapper.edit h1 strong{color:#000;font-weight:bold;line-height:normal}.boxed-group-critical{background:#bd2c00}.boxed-group-critical .alert-badge{color:#bd2c00}.boxed-group-warn{background:#ff9933}.boxed-group-warn .alert-badge{color:#ff9933}.boxed-group-alert .boxed-group-inner h4{margin-bottom:5px}.boxed-group-alert .boxed-group-inner h4 .mini-bar-legend{float:right}.icon-and-label .col{-moz-box-sizing:border-box;box-sizing:border-box;border-right:1px solid #eee;text-align:center;padding:10px}.icon-and-label .col:last-child{border-right:none}.icon-and-label .label{display:block;font-size:12px;margin-top:10px;color:#555}.icon-and-label .octicon-stop{color:#bd2c00}.icon-and-label .octicon-check{color:#6cc644}.icon-and-label .octicon-alert{color:#ff9933}.alert-item-list{list-style:none;margin-top:10px}.alert-item{padding:10px;border-bottom:1px solid #eee}.alert-item .info{float:right;color:#777}.alert-item .label{font-size:12px;margin-left:10px}.alert-info{font-size:14px}.mini-bar-graph{display:table;width:100%;background:#eee}.mini-bar-graph .graph-bar{background:#333333;display:table-cell;height:10px}.mini-bar-graph .graph-bar.positive-area{background:#6cc644}.mini-bar-graph .graph-bar.negative-area{background:#bd2c00}.mini-bar-graph .graph-bar.neutral-area{background:#333333}.mini-bar-legend{font-size:12px;font-weight:normal;display:table}.mini-bar-legend li.key-value{display:table-cell;padding:5px}.mini-bar-legend .key{width:10px;height:10px;background:#ccc;display:inline-block;margin-right:2px}.mini-bar-legend .key-positive{background-color:#6cc644}.mini-bar-legend .key-negative{background-color:#bd2c00}.mini-bar-legend .key-neutral{background-color:#999999}.mini-bar-legend .value{color:#777}.marketing .pagehead h1{font-size:30px}.marketing .pagehead p{margin-top:4px;margin-bottom:0;font-size:14px;color:#777}.marketing .pagehead ul.actions{margin-top:10px}.marketing h2.subdued{font-size:16px;color:#666}.marketing h2 .secure{float:right;padding:1px 0;font-size:11px;font-weight:bold;text-transform:uppercase;color:#6cc644}p.read-it{margin:36px 0 0 0;color:#000;text-align:center;font-size:25px;font-weight:bold}.marketing .questions textarea{width:100%;padding:5px;height:200px}.marketing .equacols .form-actions{margin-top:15px;margin-bottom:15px}.marketing .questions p{font-size:14px;color:#666}.marketing .questions h2{font-size:16px;margin:15px 0 -10px 0}ul.bottom-nav,.content ul.bottom-nav{margin:15px 0;padding:10px 0;border-top:1px solid #ddd;font-size:14px}ul.bottom-nav:after{content:".";display:block;height:0;clear:both;visibility:hidden}* html ul.bottom-nav{height:1%}ul.bottom-nav{display:inline-block}ul.bottom-nav{display:block}ul.bottom-nav li{list-style-type:none}ul.bottom-nav li.prev{float:left}ul.bottom-nav li.next{float:right}.plan-intro{font-size:18px;padding-bottom:18px}.plan-intro .sub-head{font-size:15px;color:#777;margin-top:-10px}.current-plan-intro{font-size:16px;margin-bottom:26px}.current-plan-intro .price{display:inline}.free-plan-intro{border-bottom:solid 1px #ddd;margin-bottom:26px}.free-plan-intro .button{margin-left:50px}.act-plans{list-style:none}.act-plan{display:block;float:left;margin-bottom:20px;position:relative;border-radius:5px;-moz-box-sizing:border-box;box-sizing:border-box}.act-plan+.act-plan{margin-left:25px}.act-plan.current-plan{position:relative;top:-13px}.act-plan-personal{width:310px}.act-plan-biz{width:226px}.act-plan-header{color:#fff;font-size:24px;padding:10px 10px;border-top-left-radius:5px;border-top-right-radius:5px}.act-plan-header .price{float:right}.act-plan-header .price .symbol{opacity:0.7;position:relative;top:-5px;font-size:16px}.act-plan-header .price .amount{font-weight:bold}.act-plan-header .price .duration{opacity:0.7;font-size:16px}.act-plan-personal-header{background-color:#5294c9}.act-plan-biz-header{background-color:#76c759}.current-plan-indicator{background-color:#ffc;color:#4d4d3e;padding:4px 10px;border-left:solid 1px #dadaae;border-right:solid 1px #dadaae;position:relative}.current-plan-indicator:after{position:absolute;left:15px;bottom:100%;content:" ";height:0;width:0;pointer-events:none;border:solid transparent;border-width:5px;border-bottom-color:#ffc}.act-plan-repos{padding:8px 10px;font-size:18px}.act-plan-personal-repos{background-color:#e3edf5;color:#1b3752;border-left:solid 1px #b4cde6;border-right:solid 1px #b4cde6}.act-plan-biz-repos{background-color:#e7f3e3;color:#234119;border-left:solid 1px #c0deb5;border-right:solid 1px #c0deb5}.act-plan-description{border-bottom-left-radius:5px;border-bottom-right-radius:5px;border:solid 1px #ddd;border-top:0;padding:10px}.act-plan-description .button{display:block;margin-top:12px;text-align:center}.act-plan-points{list-style:none;font-size:14px}.act-plan-points li+li{margin-top:5px}.act-plan-enterprise{margin-top:10px;padding:20px 0 30px;font-size:15px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,0.5);text-align:center;background:#4e3572 url("/images/modules/home/gh-enterprise-bg.jpg?d6f63ced") center center no-repeat;background-size:cover}.act-plan-enterprise h2{font-size:24px}.act-plan-enterprise a{color:#fff;font-weight:bold}.act-plan-enterprise p{margin-bottom:20px}.act-plan-enterprise .button{font-size:14px;border:0;box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 2px 6px rgba(0,0,0,0.25)}.act-plan-enterprise .button:active{box-shadow:inset 0 3px 6px rgba(0,0,0,0.25),0 1px 0 rgba(255,255,255,0.25)}.plan.fi{margin-top:0;background-color:#0f0f0f;background-image:-moz-linear-gradient(#616161, #0f0f0f);background-image:-webkit-linear-gradient(#616161, #0f0f0f);background-image:linear-gradient(#616161, #0f0f0f);background-repeat:repeat-x;border:0}.plan.fi:hover{box-shadow:0 0 25px rgba(0,0,0,0.35)}.fi h3{color:#fff;text-shadow:-1px -1px 0 rgba(0,0,0,0.5)}.fi p{color:#999;text-shadow:-1px -1px 0 rgba(0,0,0,0.8)}.fi .button{border-color:#000}.fi .octicon{vertical-align:top}.plans-features{margin:15px 0 20px;font-size:14px;text-align:center}.plans-features .octicon{color:#60b044}.plans-features li{list-style-type:none;display:inline-block;margin:0 0 0 20px;font-weight:bold;color:#000}.plans-features .intro{font-weight:normal;color:#666;padding:0;background:transparent}.faqs{color:#666;font-size:14px}.faqs strong.highlight{color:#444;background:#fdffe0}.faqs h2{margin:30px 0 -10px 0;font-size:16px;color:#000}.faqs h2:first-child{margin-top:15px}.faqs a{font-weight:bold}.featured-brands{margin:20px 0;padding:5px 10px;background-color:#f2f8fa;background-image:-moz-linear-gradient(#fefefe, #f2f8fa);background-image:-webkit-linear-gradient(#fefefe, #f2f8fa);background-image:linear-gradient(#fefefe, #f2f8fa);background-repeat:repeat-x;border:1px solid #ddd;border-radius:5px;text-align:center;font-size:14px;color:#677a84}.steps{margin:30px auto 0;padding:0;overflow:hidden;list-style:none;border:1px solid #ddd;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.05);-moz-box-sizing:border-box;box-sizing:border-box}.steps li{float:left;width:33.3%;padding:10px 15px;color:#ccc;cursor:default;border-left:1px solid #ddd;background-color:#fafafa;-moz-box-sizing:border-box;box-sizing:border-box}.steps li.current{background-color:#fff;color:#333}.steps li.current .mega-octicon{color:#4183c4}.steps li .mega-octicon{float:left;margin-right:15px}.steps li .step{display:block}.steps li:first-child{border-left:0}.steps .complete{color:#777}.steps .complete .mega-octicon{color:#6cc644}.pagehead .hero{width:958px;padding:0;margin:-16px 0 15px -19px}.pagehead .hero h1{position:relative;margin:0;height:auto;padding:8px 10px;font-size:16px;font-weight:bold;color:#fff;-webkit-font-smoothing:antialiased;letter-spacing:0;text-shadow:-1px -1px 0 rgba(0,0,0,0.2);border-top-left-radius:3px;border-top-right-radius:3px;box-shadow:0 2px 0 rgba(0,0,0,0.15)}.pagehead .hero h1 em{font-weight:normal;color:#fff;opacity:0.75}.hero h1{display:block;background-color:#999999;background-image:-moz-linear-gradient(#ddd, #999);background-image:-webkit-linear-gradient(#ddd, #999);background-image:linear-gradient(#ddd, #999);background-repeat:repeat-x}.hero.golden h1{background-color:#94890d;background-image:-moz-linear-gradient(#ded356, #94890d);background-image:-webkit-linear-gradient(#ded356, #94890d);background-image:linear-gradient(#ded356, #94890d);background-repeat:repeat-x}.hero.features-theme h1{background-color:#405a6a;background-image:-moz-linear-gradient(#829aa8, #405a6a);background-image:-webkit-linear-gradient(#829aa8, #405a6a);background-image:linear-gradient(#829aa8, #405a6a);background-repeat:repeat-x}.hero ul.subnav{position:relative;float:right;margin:-32px 10px 0 0;height:25px;z-index:5}.hero ul.subnav li{list-style-type:none;margin:0 0 0 10px;float:left;font-size:11px;font-weight:bold}.hero ul.subnav li a{display:block;height:23px;padding:0 8px;line-height:23px;color:#fff;color:rgba(255,255,255,0.8);border:1px solid transparent;border-radius:3px;text-decoration:none;-webkit-font-smoothing:antialiased}.hero ul.subnav li a:hover{color:#fff;background:rgba(0,0,0,0.2)}.hero ul.subnav li a.selected{color:#fff;text-shadow:-1px -1px 0 rgba(0,0,0,0.3);background:rgba(255,255,255,0.15);border-top-color:rgba(0,0,0,0.3);border-left-color:rgba(0,0,0,0.3);border-bottom-color:rgba(255,255,255,0.2);border-right-color:rgba(255,255,255,0.2);cursor:pointer}.hero img{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.hero .heroimage{position:relative;line-height:1px}.hero p.photocredit{position:absolute;bottom:0;left:0;margin:0;padding:5px 10px;font-size:11px;line-height:1.3;font-weight:bold;color:#999;background:#000;-webkit-font-smoothing:antialiased;background:rgba(0,0,0,0.5);border-bottom-left-radius:3px}p.photocredit a{color:#999}.hero .textographic{padding:15px 10px;text-align:center;font-size:14px;color:#666;background:url("/images/modules/hero/textographic-border.png?ba91f8f8") 0 100% no-repeat #eee}.hero .textographic p{margin:0}.hero .screenographic{position:relative;padding:15px 10px 0;line-height:1px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background-color:#d3e1e8;background-image:-moz-linear-gradient(#edf3f6, #d3e1e8);background-image:-webkit-linear-gradient(#edf3f6, #d3e1e8);background-image:linear-gradient(#edf3f6, #d3e1e8);background-repeat:repeat-x}.hero .screenographic>.bigcount,.hero .screenographic>.caption,.hero .screenographic>.floating-text{line-height:1.3}.hero .screenographic:after{content:".";display:block;height:0;clear:both;visibility:hidden}* html .hero .screenographic{height:1%}.hero .screenographic{display:inline-block}.hero .screenographic{display:block}.screenographic .browsercap{float:left;margin:0 5px 0 -5px;width:540px;height:145px;padding:21px 23px 0 17px;background:url("/images/modules/features/hero_browser.png?4369ed15") 0 0 no-repeat}.screenographic .caption{float:right;margin:25px 13px 0 0;width:320px;padding:12px;font-size:14px;color:#555;text-align:left;background:#f8fcff;border:1px solid #d0d7da;border-right:none;border-bottom:none;border-radius:4px}.screenographic .caption p{margin:0}.screenographic .bottom{position:absolute;left:0;bottom:0;width:100%;height:6px;background:url("/images/modules/features/screenographic-bottom.png?1ebeb8a9");opacity:0.07}.screenographic.community img{margin:-14px 0 0 -10px}.hero .screenographic p.photocredit{color:#aaa;background:rgba(0,0,0,0.75);border-bottom-left-radius:4px}.hero .screenographic p.photocredit a{color:#fff}.screenographic .bigcount{padding:12px 20px;line-height:1.0;color:#fff;white-space:nowrap;background:#1a2933;background:rgba(35,45,52,0.8);border-radius:5px}.screenographic .bigcount p.count{margin:-6px 0 0 0;font-size:50px;line-height:50px;text-shadow:0 0 10px rgba(0,0,0,0.8)}.screenographic .bigcount p.subtext{margin:0 0 0 0;font-size:12px;font-weight:bold;text-align:center;color:#ccc;color:rgba(255,255,255,0.7)}.screenographic.hosting{padding-top:20px;padding-bottom:22px;padding-right:15px}.screenographic.hosting .bigcount{float:left;margin:0 15px 0 5px}.screenographic.community .bigcount{display:none;position:absolute;top:25px;left:50%}.screenographic .floating-text h3{margin-top:7px;margin-bottom:0;font-size:18px;color:#2f424e}.screenographic .floating-text p{margin-top:5px;margin-bottom:0;font-size:14px;color:#50585d}.wider .pagehead{position:relative;margin-top:20px;padding-left:6px;padding-right:6px}.wider .pagehead .hero{margin-left:0}div.content{font-size:14px;color:#333}.marketing .content h2{margin:40px 0 -10px 0;font-size:18px;color:#000}.feature-content h2{margin:0 0 -10px 0;font-size:18px}.content h2:first-child,.content .rule+h2{margin-top:0}.marketing .content h3{color:#000;margin:1.5em 0 -0.5em 0}.marketing .content h3:first-child{margin-top:5px}.content .figure{margin:15px 0;padding:1px;border:1px solid #e5e5e5}.content .figure:first-child{margin-top:0}.marketing .content ul{margin:25px 0 25px 25px}.miniprofile{margin:15px 0}.miniprofile h3{margin:0;font-size:16px}.miniprofile p{margin:0 0 10px 0;color:#666}.miniprofile .profile-link,.miniprofile .public-info{margin:2px 0;font-size:11px;color:#999}ul.checklist{margin:20px 0;font-size:12px;font-weight:bold}.miniprofile ul.checklist{margin:30px 0}ul.checklist li{list-style-type:none;margin:15px 0;padding-left:25px;background:url("/images/modules/marketing/check.png?af172011") 0 2px no-repeat}ul.dates{margin:20px 0;font-size:12px}ul.dates li{list-style-type:none;margin:15px 0;padding-left:25px;background:url("/images/modules/marketing/calendar.png?2cfd5c0a") 0 2px no-repeat}ul.dates li strong{color:#000;display:block}.content .quote{margin:25px 30px}.sidebar .quote{margin:20px 0}.content .quote blockquote{margin:0;font-family:Georgia, Times, serif;font-style:italic;color:#666}.content .quote cite{display:block;font-size:12px;font-weight:bold;font-style:normal;color:#333;text-align:right}.popout{padding:10px;font-size:12px;color:#36361d;background:#e3f2d4;border-radius:4px}.popout p{margin:0;line-height:1.5}.popout p+p{margin-top:10px}pre.terminal{padding:10px 10px 10px 23px;color:#fff;background:url("/images/modules/features/terminal_sign.png?c8a21285") 10px 50% no-repeat #333;border-radius:4px}.wider .centered-graphic{text-align:center;line-height:1px;padding-bottom:37px;background:url("/images/modules/features/centered-graphic-glow.gif?7085b33b") 50% 100% no-repeat}.centered-graphic .feature-text{line-height:1}.centered-graphic h2{margin-top:20px}.centered-graphic p{color:#444}.big-notice{margin:15px 0;padding:5px 20px;background-color:#bedebe;background-image:-moz-linear-gradient(#efe, #bedebe);background-image:-webkit-linear-gradient(#efe, #bedebe);background-image:linear-gradient(#efe, #bedebe);background-repeat:repeat-x;border:1px solid #bedebe;border-radius:5px}.big-notice h3{margin-bottom:-10px}.contact-notice{margin:15px 0;padding:5px 20px;background-color:#bebebe;background-image:-moz-linear-gradient(#eee, #bebebe);background-image:-webkit-linear-gradient(#eee, #bebebe);background-image:linear-gradient(#eee, #bebebe);background-repeat:repeat-x;border:1px solid #bebebe;border-radius:5px}.contact-notice h3{margin-bottom:-10px}ul.feature-tabs{position:relative;margin:15px 0;padding:0 2px 29px;background:url("/images/modules/features/curly_rule.png?c34bbe30") 0 100% no-repeat}ul.feature-tabs li{list-style-type:none;position:relative;float:left;margin:0 0 0 30px;width:215px;height:150px;text-align:center;z-index:5}ul.feature-tabs li:first-child{margin-left:0}ul.feature-tabs li.highlight{position:absolute;bottom:5px;left:-1000px;margin:0;width:224px;height:97px;background:url("/images/modules/features/feature-tab-highlight.png?32168763");z-index:1}.feature-tabs a{text-decoration:none}.feature-tabs .tab-button{display:block;position:absolute;top:80px;left:0;width:100%;padding:15px 0;text-decoration:none;text-shadow:1px 1px 0 rgba(255,255,255,0.5);background-color:#eeeeee;background-image:-moz-linear-gradient(#fdfdfd, #eee);background-image:-webkit-linear-gradient(#fdfdfd, #eee);background-image:linear-gradient(#fdfdfd, #eee);background-repeat:repeat-x;border:1px solid #e9e9e9;border-radius:4px;cursor:pointer;z-index:5}.feature-tabs a:hover .tab-button{border-color:#ddd;box-shadow:0 0 10px rgba(65,131,196,0.3)}.feature-tabs .tab-button h3{margin:0;font-size:14px}.feature-tabs .tab-button p{margin:0;color:#888}.feature-tabs a.selected{cursor:default}.feature-tabs a.selected .tab-button{background-color:#f1efcc;background-image:-moz-linear-gradient(#fdfdf6, #f1efcc);background-image:-webkit-linear-gradient(#fdfdf6, #f1efcc);background-image:linear-gradient(#fdfdf6, #f1efcc);background-repeat:repeat-x;box-shadow:none;cursor:default}.feature-tabs .selected .tab-button h3{color:#000}.feature-tabs .selected .tab-button p{color:#666}.browsered{margin-bottom:-15px;width:460px;background:url("/images/modules/features/browsered_browser.png?9a3593be") 0 0 no-repeat}.browsered.mini{width:300px;background-image:url("/images/modules/features/browsered_browser-mini.png?cd12a059")}.browsered .inner{line-height:1px;padding:14px 16px 35px 13px;background:url("/images/modules/features/browsered_shadow.png?105ba720") 0 100% no-repeat}.browsered.mini .inner{padding-top:10px;background-image:url("/images/modules/features/browsered_shadow-mini.png?d3250b3f")}.caption{margin-top:-5px;margin-bottom:30px;padding:18px 8px 8px;font-size:11px;text-align:center;color:#384141;background:url("/images/modules/features/caption_back.png?4d18f3f8") 50% 0 no-repeat;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.caption p{margin:0}.browsered+h3{margin-top:5px}.access-infographic{text-align:center}.access-infographic p{margin:10px 0;font-size:12px;font-weight:bold;color:#444}.access-infographic p.subtext{margin-top:-10px;font-weight:normal;font-size:11px}.access-infographic p.repo{height:80px;padding-top:12px;font-size:22px;color:#fff;text-shadow:-1px -1px 0 rgba(0,0,0,0.2);-webkit-font-smoothing:antialiased;background:url("/images/modules/features/infographics/hosting-access.png?8085dbf0") 0 0 no-repeat}.access-infographic p.methods{margin-top:15px;margin-bottom:-5px;font-size:16px;color:#000}.access-infographic .sep{padding:0 5px}.logged_out.signup .header-logged-out .container,.logged_out.signup .site-footer{width:750px}.logged_out.signup .site-footer{margin-right:auto;margin-left:auto}.logged_out.signup .header-actions .primary,.logged_out.signup .site-footer-links,.logged_out.signup .command-bar{display:none}.logged_out.signup .site-footer .octicon-mark-github{top:30px}.logged_out.signup.alt-signup .setup-secondary{display:none}.logged_out.signin.alt-signin .header-actions .signin,.logged_out.signin.alt-signin .command-bar{display:none}.setup-wrapper{padding-top:60px;font-family:"Helvetica Neue", Helvetica, Arial, sans-serif}.setup-header,.setup-wrapper{width:750px;margin:0 auto;-moz-box-sizing:border-box;box-sizing:border-box}.setup-header{padding-bottom:20px;margin-bottom:30px;text-align:left;text-shadow:0 1px 0 white;border-bottom:1px solid #ddd}.setup-header h1{margin-top:0;margin-bottom:0;font-size:45px;font-weight:normal;letter-spacing:-1px}.setup-header .lead{margin-top:2px;margin-bottom:0;font-size:21px}.setup-org{padding-bottom:0;border-bottom:0}.setup-main{float:left;width:450px}.setup-secondary{float:right;width:250px}.setup-secondary .info{padding:0 15px;color:#777;font-size:13px;text-align:center}.setup-info-module{margin-top:31px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,0.075);border:1px solid #ccc;border-radius:3px}.setup-info-module h2{padding:15px;margin-top:0;margin-bottom:15px;overflow:hidden;font-size:16px;border-bottom:1px solid #ddd}.setup-info-module h2 .price{float:right;color:#777;font-weight:bold}.setup-info-module h3{margin:0 0 -7px;padding:0 15px;font-size:14px}.setup-info-module p{margin:15px 0;padding:0 15px}.setup-info-module .features-list{margin:0;padding:0 15px 15px;list-style:none;font-size:14px}.setup-info-module .features-list li{margin-top:10px}.setup-info-module .features-list li:first-child{margin-top:0}.setup-info-module .features-list .list-divider{border-top:1px solid #eee;margin:15px -15px}.setup-info-module .features-list .octicon{margin-right:5px;color:#60b044}.setup-info-module .features-list-org{padding-bottom:0}.setup-info-module .footer-repos{margin:0;padding:15px;font-size:14px;border-top:1px solid #eee}.setup-info-module .footer-repos a{font-size:12px}.setup-form-container .setup-form-title{margin-top:0;font-size:16px}.setup-form-container .secure{float:right;margin-top:2px;color:#60b044;font-size:11px;text-transform:uppercase}.setup-form-container .note{margin-top:-10px;color:#999}.setup-form-container hr{margin-top:25px;margin-bottom:25px}.setup-form-container .form-actions{padding-top:0;padding-bottom:0;text-align:left}.setup-form{padding-bottom:15px}.setup-form .form dt.input-label{display:none}.setup-form .form dd input[type="text"],.setup-form .form dd input[type="password"],.setup-form .form dd input[type="email"]{padding:10px;width:100%}.setup-form dd{position:relative}.setup-form dd .octicon{position:absolute;right:25px;top:8px}.setup-form .octicon-alert:before{color:#bd2c00}.setup-form .octicon-check:before{color:#6cc644}.setup-form .text-muted{margin-top:5px}.setup-form .tos-info{padding:15px 0;margin:15px 0;border-top:1px solid #eee;border-bottom:1px solid #eee}.setup-form .setup-plans{margin-bottom:25px;border:solid #ccc;border-width:1px 1px 0 1px;border-collapse:separate;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.075);overflow:hidden}.setup-form .setup-plans tr.selected{background-color:#f0f7fd}.setup-form .setup-plans th,.setup-form .setup-plans td{vertical-align:middle;border-bottom:1px solid #ccc}.setup-form .setup-plans .name{font-weight:bold}.setup-creditcard-form .form dd input.input-expiration,.setup-creditcard-form .form dd input.input-cvv{float:left}.setup-creditcard-form .form dd input.input-expiration{width:160px}.setup-creditcard-form .form dd input.input-cvv{width:86px}.setup-creditcard-form .form select.select-country{width:160px}.setup-creditcard-form .form select.select-state{width:86px}.setup-creditcard-form.is-eu-country .vat-field{display:block}.setup-creditcard-form.is-international .form select.select-country{width:250px}.setup-creditcard-form.is-international .select-state{display:none}.setup-creditcard-form .vat-field{display:none}.instructor-bio{padding-left:150px}.instructor-bio img{float:left;margin-top:5px;margin-left:-150px;padding:1px;border:1px solid #ddd}.instructor-bio h2{margin-top:15px}#signup_form dd{position:relative}#signup_form dd .octicon{position:absolute;right:25px;top:8px}#signup_form .octicon-alert:before{color:#bd2c00}#signup_form .octicon-check:before{color:#6cc644}.hanging-list li,.hanging-icon-list li{margin:10px 0;font-size:14px}.hanging-list li{margin-left:12px;list-style-position:inside}.hanging-icon-list li{padding-left:25px;list-style-type:none}.hanging-icon-list .octicon{float:left;margin-left:-20px;color:#999}.hanging-icon-list .octicon-check{color:#6cc644}.hanging-icon-list .octicon-x{color:#bd2c00}.logos-page h3{font-size:18px}.logos-download{position:relative;display:block;float:left;width:32%;height:290px;margin-bottom:30px;padding-top:20px;text-align:center;border:1px solid #ddd;border-radius:6px;-moz-box-sizing:border-box;box-sizing:border-box}.logos-download+.logos-download{margin-left:2%}.logos-download-link{position:absolute;right:0;bottom:0;left:0;display:block;padding:15px 20px;font-size:16px;font-weight:bold;background-color:#f5f5f5;border-top:1px solid #ddd;border-radius:0 0 5px 5px}.logos-download-link .octicon{vertical-align:2px}.logos-download:hover{text-decoration:none}.logos-download:hover .logos-download-link{background-color:#eee}.logos-download .gh-logo{margin-top:70px}.logos-download .gh-octocat{margin-top:10px}.col-2 ul.members-list li{display:block;border-bottom:1px solid #f1f1f1;width:inherit}.col-2 ul.members-list li:before,.col-2 ul.members-list li:after{content:" ";display:table}.col-2 ul.members-list li:after{clear:both}ul.members-list{font-size:0;margin:5px 0}ul.members-list li{display:inline-block;width:165px;position:relative;list-style-type:none;margin:0;padding:10px 0 10px 58px;vertical-align:top}ul.members-list li h4{margin:-1px 0 0 0;font-size:16px;line-height:1.2}ul.members-list li h4 a{display:inline-block;text-overflow:ellipsis;overflow-x:hidden;width:100%}ul.members-list li h4 em{font-style:normal;font-weight:normal;color:#99a7af;display:block}ul.members-list li p{margin:-1px 0 0 0;font-size:11px;color:#bbb}ul.members-list .gravatar{float:left;margin-left:-58px;border-radius:3px}ul.members-list .placeholder .gravatar{opacity:0.5}ul.members-list .placeholder h4 a{color:#999}ul.members-list .minibutton{position:absolute;top:10px;right:0}ul.members-list p.details span.octicon{margin-left:15px;vertical-align:middle}ul.members-list p.details span.octicon:first-child{margin-left:0}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(-360deg)}}.merge-pr{margin:20px 0 0 0;padding-top:10px;border-top:1px solid #ddd}.merge-pr .push-more{margin:10px 0;font-size:12px;color:#777}.merge-pr .push-more code{color:#333}.merge-pr .push-more a{color:#333;font-weight:bold}.merge-branch{margin:10px 0}.merge-branch,.new-commit{padding-left:60px}.merge-status-icon,.new-commit-icon{float:left;margin-left:-60px;width:48px;height:48px;color:#fff;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,0.1);border-radius:3px;background-color:#999;box-shadow:inset 0 1px 1px rgba(0,0,0,0.1)}.merge-status-icon .mega-octicon,.new-commit-icon .mega-octicon{margin-top:8px}.merge-status-icon .octicon-git-merge{display:none}.merge-branch .bubble,.new-commit .bubble{position:relative}.merge-branch .bubble:after,.new-commit .bubble:after{position:absolute;top:15px;right:100%;content:" ";height:0;width:0;pointer-events:none;border:solid transparent;border-right-color:#eee;border-width:10px}.merge-branch .mergeable,.new-commit .bubble-contents{padding:15px 11px;background-color:#fff;border:1px solid #c5c5c5;border-radius:1px}.merge-branch-heading,.merge-branch-description{margin:0}.merge-branch-description{margin-right:160px;color:#777}.merge-branch-description .zeroclipboard-link .octicon{top:2px}.merge-branch-action,.desktop-app-action{float:right;margin-left:5px}.desktop-app-action{padding-left:10px;padding-right:10px}.merged .merge-branch-description .commit-ref .css-truncate-target{max-width:180px}.merge-branch .branch-status{padding:7px 12px;font-size:11px;color:#666;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:transparent;border:1px solid #ccc;border-bottom:none;border-top-right-radius:1px;border-top-left-radius:1px}.merge-branch .branch-status p{margin:0}.merge-branch .branch-status .octicon{display:none}.merge-branch .branch-status+.mergeable{border-top-left-radius:0;border-top-right-radius:0}.mergeable .spinner{display:block;float:right;width:32px;height:32px;margin-top:3px;margin-left:10px;background:url("/images/spinners/octocat-spinner-32.gif?ca28a0dd") no-repeat}.mergeable-dirty .mergeable{background-image:url("/images/modules/pulls/dirty-shade.png?aa53f501");background-repeat:repeat-x}.merge-branch-form{display:none}.merge-branch.open .merge-branch-form{display:block}.merge-branch.open .merge-message{display:none}.merge-branch-form .author,.new-commit .author{float:left;padding:2px 0 0 36px;font-size:12px;line-height:15px;color:#999}.merge-branch-form .author img,.new-commit .author img{float:left;margin-left:-36px;border-radius:3px}.merge-branch-form .author .author-email,.new-commit .author .author-email{display:block}.merge-branch-form .merge-commit-message{width:100%;margin:10px 0;background-color:#fafafa}.merge-branch-form-actions{text-align:right}.merge-branch-form .merge-form-failed{display:none}.merge-branch-form.error .merge-form-failed{display:block}.merge-branch-form.error .merge-form-contents{display:none}.merge-branch .delete-branch-failure{display:none}.merge-branch.error .delete-branch-failure{display:block}.merge-branch.error .merge-message{display:none}.merge-branch-manually{display:none;margin-top:14px;padding-top:15px;border-top:1px solid #ddd}.merge-branch-manually h3,.merge-branch-manually p{margin:0}.merge-branch-manually .intro{margin-top:0;padding-bottom:10px}.merge-branch-manually .step{margin:15px 0 5px}.merge-branch-manually .url-box{margin-left:0;max-width:585px;padding:0;border:0}.merge-branch-manually .clone-urls{width:100%}.merge-branch-manually .copyable-terminal{margin-right:25px;margin-bottom:10px;padding:10px;color:#fff;background-color:#333;border:none;border-radius:4px 0 4px 4px;overflow:auto}.merge-branch-manually .for-copyable-terminal .zeroclipboard-button{float:right;border-radius:0 4px 4px 0;width:19px;text-align:center}.merge-branch-manually .for-copyable-terminal{float:right}.merge-branch-manually .for-copyable-terminal .zeroclipboard-button .octicon{margin:0 auto;padding-left:1px}.open>.merge-branch-manually{display:block}.merge-branch-manually-steps{max-width:585px}.mergeable-clean .branch-status{color:#5d8a4a;border-color:#95c97e}.mergeable-clean .bubble{background-color:#d8f5cd}.mergeable-clean .bubble:after{border-right-color:#d8f5cd}.mergeable-clean .merge-status-icon{background-color:#74c550}.mergeable-clean .bubble .mergeable{border-color:#95c97e}.mergeable-unknown .branch-status,.mergeable-unstable .branch-status{color:#a1882b;border-color:#e2cc7a}.mergeable-unknown .bubble,.mergeable-unstable .bubble{background-color:#f8eec7}.mergeable-unknown .bubble:after,.mergeable-unstable .bubble:after{border-right-color:#f8eec7}.mergeable-unknown .merge-status-icon,.mergeable-unstable .merge-status-icon{background-color:#f0d266}.mergeable-unknown .bubble .mergeable,.mergeable-unstable .bubble .mergeable{border-color:#e2cc7a}.mergeable-error .branch-status{color:#ca534d;border-color:#e97a74}.mergeable-error .bubble{background-color:#f4cdcb}.mergeable-error .bubble:after{border-right-color:#f4cdcb}.mergeable-error .merge-status-icon{background-color:#e4514a}.mergeable-error .bubble .mergeable{border-color:#e97a74}.mergeable-merged .bubble{background-color:#dde9f4}.mergeable-merged .bubble:after{border-right-color:#dde9f4}.mergeable-merged .merge-status-icon{background-color:#8fb6dc}.mergeable-merged .bubble .mergeable{border-color:#8fb6dc}.mergeable-closed-dirty .merge-status-icon{background-color:#8c8c8c}.merge-branch.open .merge-status-icon .octicon-git-pull-request{display:none}.merge-branch.open .merge-status-icon .octicon-git-merge{display:inline-block}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.mergeable .spinner{background-image:url("/images/spinners/octocat-spinner-64.gif?e25ff4c8");background-size:32px 32px}.mergeable-dirty .mergeable{background-size:3px 2px}}#network h2{margin-bottom:.25em}#network p{font-size:120%;margin:1em 0}#network .repo{font-size:140%}#network .repo img{vertical-align:middle}#network .repo img.gravatar{padding-right:4px;padding:1px;border:1px solid #ccc;background-color:#fff}#network .repo span{background-color:#FFF6A9}#network .repo a.commit{color:#888;font-size:80%;line-height:1em}#network .help_actions{margin-left:5px}#network .help_actions a{font-size:12px}#network .network-help .show-help,#network .network-help.open .hide-help{display:block}#network .network-help .hide-help,#network .network-help.open .show-help{display:none}#network .network-help #help{display:none}#network .network-help.open #help{display:block}#network #help pre{font-size:80%;line-height:1.2em;margin-bottom:1.5em;border:1px solid black;color:#eee;background-color:#222;padding:1em}#network .notice{border:1px solid #EFCF00;background-color:#FFFAD6;padding:.5em;color:#837200;text-align:center}#network .explain{color:#666;font-size:13px;font-style:italic;margin:-5px 0 20px 2px}#network .explain b{color:#333;font-weight:normal}#network .graph-date{text-align:right;margin:-30px 4px 5px 0;color:#555;font-size:12px}#network .graph-date abbr{font-style:normal;color:#444}#network #ng{position:relative}#network #ng .large-loading-area{position:absolute;top:0;right:0;left:0;display:none}.text-success{color:#6cc644}.notifications .list-group-item{padding-left:34px;border-width:1px 0}.notifications .list-group-item:first-child{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.notifications .list-group-item-name a{display:block;max-width:460px}.notifications .issue-notification .type-icon{color:#489d00}.notifications .commit-notification .type-icon{color:#156f9e}.notifications .pull-request-notification .type-icon{color:#9e157c}.notifications .notifications-more{padding:0}.notifications .notifications-more>a{display:block;padding:10px 15px;font-weight:bold;color:#4183c4;text-align:center}.notifications .notifications-more>a:hover{text-decoration:underline}.notifications .confirmation{color:#666;text-align:center}.notifications .confirmation+.list-group-item{margin-top:-1px;border-top-color:#d5d5d5}.notifications .read{background-color:#fafafa}.notifications .read .type-icon{color:#999}.notifications .read .list-group-item-name a{color:#777}.notifications .read .notification-actions{opacity:.5}.notifications .read .delete{visibility:hidden}.notifications .read.navigation-focus{background-color:#f5f9fc}.notifications-list{float:left;width:100%}.notification-actions{float:right;list-style:none}.notification-actions li{float:right;margin-left:10px;font-size:16px;line-height:20px}.notification-actions .age{width:100px;font-size:12px;color:#999}.notification-actions .button-link{padding-left:5px;padding-right:5px;color:#999}.notification-actions .button-link:hover{color:#4183c4;text-decoration:none}.repo-subscription-container{margin:0 auto;width:600px}.repo-subscription-container .spinner{float:right}.repo-subscription-container h2{font-size:22px;margin-bottom:-10px;font-weight:normal}.repo-subscription-container p.intro{font-size:14px;color:#666}.subscriptions-sidebar p.checkbox label{position:relative;font-size:14px}.subscriptions-sidebar p.checkbox label img{position:absolute;right:-21px;top:-2px}.subscriptions-sidebar .note{color:#666}.subscriptions-content .repo-list .subscription-row>.octicon{vertical-align:middle;color:#999}.subscriptions-content .repo-list form{display:inline}.subscriptions-content .repo-list .only-loading{display:none}.subscriptions-content .repo-list .loading .only-loading{display:inline-block}.subscriptions-content .repo-list .only-unsubed{display:none}.subscriptions-content .repo-list .unsubscribed .only-unsubed{display:inline}.subscriptions-content .repo-list .unsubscribed .only-subed{display:none}.subscriptions-content .repo-list .only-unignored{display:none}.subscriptions-content .repo-list .unsubscribed .only-unignored{display:inline}.subscriptions-content .repo-list .unsubscribed .only-ignored{display:none}.subscriptions-content .unsubscribed{background-color:#f5f5f5}.subscriptions-content .unsubscribed a{color:#666}.subscriptions-content .unsub-all-button{float:right;margin-top:8px}.thread-subscription-status{clear:both;margin:40px 0 20px 0;padding:10px;background:#fff;border:1px solid #eee;border-radius:4px}.thread-subscription-status .mega-octicon{vertical-align:middle;margin-right:10px}.thread-subscription-status .mega-octicon:before{color:#ccc}.thread-subscription-status .octicon.unread{color:#4183c4}.thread-subscription-status .minibutton:hover .octicon.unread{color:#fff}.thread-subscription-status p.reason{vertical-align:middle;display:inline-block;margin:0 10px;color:#999}.thread-subscription-status .thread-subscribe-form{display:inline-block;vertical-align:middle}.thread-subscription-status .octicon-mute{color:#cc0000}.inbox-zero-octocat{margin-top:20px;text-align:center}.subscription .loading{opacity:.5}.equacols .column>.fieldgroup:first-child{margin-top:0}ul.fieldpills.usernames li img{margin-right:2px;padding:1px;background:#fff;border:1px solid #ddd;vertical-align:middle}ul.fieldpills.repos-pills>li{margin:0 0 5px 0;padding:3px 0 3px 5px}ul.fieldpills.repos-pills>li .fork-flag{line-height:18px;font-weight:normal}ul.grouplist{margin:15px 0 20px 0;border-top:1px solid #ddd}ul.grouplist>li{list-style-type:none;position:relative;padding:8px 0;border-bottom:1px solid #ddd}ul.grouplist .icontip{position:absolute;display:block;width:32px;height:32px;top:8px;left:0}ul.grouplist>li.iconed{padding-left:38px}ul.grouplist>li.org-icon{background:url("/images/modules/organizations/org_icon.gif?11cf48c6") 0 0 no-repeat}ul.grouplist>li.admin.org-icon{background-position:0 -100px}ul.grouplist li h3{margin:0;font-size:16px}ul.grouplist li p{margin:-2px 0 0 0;font-size:12px;color:#999}ul.grouplist>li ul.actions{position:absolute;top:50%;right:0;margin:-12px 0 0 0}ul.grouplist>li ul.actions li{display:inline-block;margin:0 0 0 5px}.pagehead.orgs-next-pagehead .button{z-index:2;display:inline-block}.orgs-next-filter-bar{width:150px;float:left;margin-right:30px}.orgs-next-filter-bar input[type=text]{width:100%}.orgs-next-filter-bar .button{margin-top:10px;width:120px;text-align:center}.orgs-next-nav{float:right;width:170px}.orgs-next-nav a.selected{cursor:inherit}.orgs-next-nav .menu-container{box-sizing:border-box;margin-bottom:10px;width:170px}.orgs-next-content{position:relative;float:left;width:790px}.orgs-next-content.people{width:600px}.orgs-next-content.people .is-showing-all .blankslate{display:none}.orgs-next-content img.avatar{border-radius:3px}.orgs-next-content .capped-box{width:385px}.orgs-next-content .add-member-link{float:right;line-height:35px}.orgs-next-content #all-teams{display:none}.orgs-next-content #all-teams-filter-field{display:none}.orgs-next-content .pending-invitations .error{color:#bd2c00;margin-bottom:15px}.orgs-next-content .pending-invitations li{margin-bottom:15px;list-style-type:none}.orgs-next-content .pending-invitations li time{color:#999999}.orgs-next-content .pending-invitations li img{border-radius:2px;margin-right:4px;float:left}.orgs-next-content .pending-invitations .actions{float:right}.orgs-next-content .new-member{padding:0;padding-top:10px;position:relative}.orgs-next-content .new-member .add-to-button{display:none}.orgs-next-content .new-member .danger{display:inline-block}.orgs-next-content .new-member .avatar{float:left;margin:0 10px 0 0;border-radius:3px}.orgs-next-content .new-member .avatar .mega-octicon{font-size:46px}.orgs-next-content .new-member .login{display:block;font-weight:bold;margin-bottom:3px}.orgs-next-content .new-member .login .no-link{display:none}.orgs-next-content .new-member li{height:40px;clear:both;margin-bottom:20px;display:block}.orgs-next-content .new-member li .octicon-lock{color:#e9dba5}.orgs-next-content .new-member .select-menu{float:left;margin-right:10px}.org-dash-header .no-results{display:none}.org-dash-header.open .new-member-form{display:block}.org-dash-header.no-results .no-results{display:block}.org-dash-header.no-results .new-member-form{display:block}.org-dash-header input.is-loading+.spinner{display:inline-block}.no-results p{margin-top:0px}.add-member{width:340px}.new-team-form input{margin-top:10px}.new-team-form .team-name{width:430px}.new-team-form .team-description{width:430px}.restore-team h3{margin-top:5px}.org-dash-filter{padding:0 0 10px 0;margin:0 0 10px 0;border-bottom:1px solid #eaeaea}.org-dash-filter .button{float:right}.org-dash-filter input[type="text"]{width:350px}.member-list{list-style:none}.member-list li{position:relative;float:left;width:50%;padding:10px 0;border-bottom:1px solid #ddd}.member-list img.avatar{float:left;margin:0 10px 0 0;border-radius:3px}.member-list .member>a{display:block;font-weight:bold}.member-list .member-details{float:left}.member-list p{font-size:13px;color:#777;margin:0;line-height:25px;min-height:25px}.member-list .repo-capabilities{width:700px}.member-list select,.member-list small,.member-list .spinner{position:absolute;top:10px;right:50px}.member-list .spinner{right:135px;top:12px;display:inherit}.member-list .hidden{display:none}.member-list small{color:#999}.member-list .team-member .notice{color:#ff9933;font-weight:bold}.member-list .team-member .select-menu{float:right;margin-right:5px}.member-list .team-member .select-menu-modal{width:200px}.member-list .team-member .remove-member{float:right;margin-right:10px;width:10px}.member-list .octicon-credit-card{color:#999;position:absolute;top:25px;right:50px}.team-list{list-style:none}.team-list li{position:relative;float:left;width:355px;clear:left}.team-list li:nth-child(2n){float:right;clear:none}.team-list .delete-team{position:absolute;top:8px;right:10px;color:#999}.team-list .delete-team:hover{color:#bd2c00}.team-list p{padding:0 10px}.team-list .meta{margin:0;padding-top:5px;padding-left:5px;padding-bottom:0px;border-top:1px solid #eaeaea;font-size:12px;height:24px;overflow:hidden}.team-list .meta a{color:#999;text-decoration:none}.team-list .meta img{border-radius:3px}.team-list .meta .team-repo-count{float:right}.team-list .meta .show-more-members{background:#eee;border-radius:3px;cursor:pointer;height:20px;width:20px;display:inline-block;vertical-align:top;text-align:center;font-weight:bold;text-decoration:none}.team-list .meta .show-more-members:hover{background:#f3f3f3}.team-list .meta .show-more-members:active{background:#e0e0e0}.team-list .meta.show-all{height:auto;min-height:24px}.team-suggestions .notice,.repository-suggestions .notice,.org-member-suggestions .notice{color:#ff9933}.team-suggestions select,.team-suggestions .select-menu,.repository-suggestions select,.repository-suggestions .select-menu,.org-member-suggestions select,.org-member-suggestions .select-menu{display:none}.team-suggestions .login .no-link,.repository-suggestions .login .no-link,.org-member-suggestions .login .no-link{display:inherit}.team-suggestions .login .link,.repository-suggestions .login .link,.org-member-suggestions .login .link{display:none}.full-width-team-list li{float:none;width:730px;border-bottom:1px solid #ddd;line-height:20px;padding:0 10px}.full-width-team-list>a{display:block;font-weight:bold;font-size:14px}.full-width-team-list .team-description{display:block;margin:5px 0;width:100%;color:#777;font-size:14px;line-height:20px}.full-width-team-list .team-meta{float:right;color:#777}.team-list .new-team{background:#6cc644;margin:0 0 0 5px;padding:1px 6px 0 6px;border-radius:3px;display:inline-block;color:#fff;line-height:14px;font-size:11px;font-weight:bold;cursor:pointer}.team-list .member-count{display:inline-block;vertical-align:top;text-align:center;float:right;color:#999999;font-size:10px}.create-team .spinner{display:none}.create-team.is-loading .spinner{margin:2px;display:inline-block}ul.fieldpills .org-member .spinner{display:inline-block}.org-member.is-loading .spinner{display:inline-block}.member-view .member{padding:10px;margin-bottom:10px}.create-team-message{display:none}.filterable-empty.filterable-active+.create-team-message{display:block}.new-team-form .warning{display:inline-block;background:#333333;color:#fff;margin-top:10px;padding:2px 4px;font-weight:normal;font-size:10px;border-radius:3px}.team-reference-list .open{color:#6cc644}.team-reference-list .closed{color:#bd2c00}.team-reference-list .merged{color:#333333}#activity-list>li{list-style-type:none;padding:10px;border-bottom:1px solid #eee}#activity-list>li.activity-timestamp{font-size:10px;color:#999999}.update-member-form .success{color:#6cc644}.update-member-form .select-menu .octicon-check{color:transparent}.update-member-form .selected .octicon-check{color:inherit}.update-member-form .remove-member{float:right}.org .pagehead{color:#666;border:0;margin-bottom:0}.org .pagehead .container{min-height:80px;padding-left:100px;position:relative}.org .pagehead .avatar,.org .pagehead .avatar img{width:80px;height:80px;display:block}.org .pagehead .avatar{position:absolute;top:0;left:0}.org .pagehead .avatar img{border-radius:3px}.org .pagehead h1{font-size:24px;line-height:1.125;color:#000}.org .pagehead h1 a{color:#000}.org .pagehead p{font-size:16px;line-height:1.25;margin:0.25em 0 0.75em}.org .pagehead .details{list-style:none}.org .pagehead .details li{margin-right:2em;display:inline-block}.org .pagehead .details .octicon{color:#ccc}.org .tabnav{margin-bottom:0}.org-section{margin:20px 0 40px}.org-section *,.org-section *:before,.org-section *:after{-moz-box-sizing:border-box;box-sizing:border-box}.org-section header{border-bottom:1px solid #ddd;margin-bottom:20px}.org-section header h2{font-size:24px;line-height:1.25;font-weight:normal;margin:2px 0 4px;display:inline-block}.org-section header p{font-size:16px;line-height:1.25;color:#666;margin:0 0 20px}.org-section header form{margin-bottom:10px;display:inline-block}.org-section .actions{background:#f5f5f5;padding:10px;border:1px solid #ddd;border-bottom:0}.org-section .actions .select-menu{display:inline-block;position:relative}.org-section .actions .split-button .select-menu{float:left}.org-section .actions .split-button .select-menu .minibutton{border-radius:0;border-top-right-radius:3px;border-bottom-right-radius:3px;margin-left:-1px}.org-section .actions .split-button .select-menu-button{width:0}.org-section .actions .select-menu-modal-holder{top:100%;left:0}.org-section .actions .select-menu-item-text p{margin:0}.org-section .more{width:25%;text-align:center;margin:auto}.org-section .more .button{width:100%}.org-overview .org-section{margin-top:35px}.org input[type="search"]{width:355px;min-height:26px;padding:3px 6px;outline:none;color:#333;background-color:#fff;background-repeat:no-repeat;background-position:right center;border:1px solid #ccc;border-radius:3px;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075);-moz-box-sizing:border-box;box-sizing:border-box;transition:all 0.15s ease-in;-webkit-transition:all 0.15s ease-in 0;vertical-align:middle}.org input[type="search"].focus,.org input[type="search"]:focus{border-color:#51a7e8;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(81,167,232,0.5)}.org input[type="search"]+.octicon-search{font-size:14px;color:#999;vertical-align:middle;position:relative;left:-24px}.org input[type="search"]+.octicon-search+.spinner{vertical-align:text-top;margin-left:-10px;height:16px;width:16px}.repo-grid{width:1000px;position:relative;left:-10px}.repo-grid:before,.repo-grid:after{content:" ";display:table}.repo-grid:after{clear:both}.repo-grid .repo-item{width:33.3333333333%;height:172px;padding:0 11px;margin-bottom:20px;float:left;position:relative}.repo-grid .repo-item:before{content:'';border:1px solid #ddd;border-radius:5px;position:absolute;top:0;right:10px;bottom:0;left:10px;z-index:-1}.repo-grid .repo-item:hover:before{box-shadow:0 0 6px #ccc}.repo-grid .repo-item>a:first-child{height:108px;text-decoration:none;padding:16px;display:block}.repo-grid .repo-item>a:first-child:hover h2,.repo-grid .repo-item>a:first-child:focus h2,.repo-grid .repo-item>a:first-child:active h2,.repo-grid .repo-item>a:first-child:hover h3,.repo-grid .repo-item>a:first-child:focus h3,.repo-grid .repo-item>a:first-child:active h3{text-decoration:underline}.repo-grid .repo-item>a:first-child h2,.repo-grid .repo-item>a:first-child h3{font-size:16px;line-height:1.25;margin:0 0 2px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.repo-grid .repo-item>a:first-child .description{font-size:13px;line-height:18px;color:#333;margin:0}.repo-grid .repo-item footer{color:#666;background:#f2f2f2;position:absolute;right:11px;bottom:1px;left:11px}.repo-grid .repo-item .participation-graph{height:68px;position:absolute;bottom:100%;z-index:-1}.repo-grid .repo-item .participation-graph.disabled{display:none}.repo-grid .repo-item .participation-graph canvas{position:absolute;bottom:-1px}.repo-grid .repo-item .repository-lang-stats-graph{height:6px;line-height:6px;border-radius:0;position:absolute;top:0;left:0;z-index:2}.repo-grid .repo-item .repository-lang-stats-graph .language-color{line-height:6px;border-radius:0;float:left}.repo-grid .repo-item .updated{margin:0}.repo-grid .repo-item .updated>a{text-decoration:none;color:#666;padding:12px 16px 12px 58px;border-top:6px solid #e6e6e6;border-bottom-right-radius:3px;border-bottom-left-radius:3px;position:relative;display:block}.repo-grid .repo-item .updated>a>span{display:block}.repo-grid .repo-item .updated>a .avatar,.repo-grid .repo-item .updated>a .avatar img{width:32px;height:32px;display:block}.repo-grid .repo-item .updated>a .avatar{margin:auto;position:absolute;top:0;bottom:0;left:16px}.repo-grid .repo-item .updated>a .avatar img{border-radius:3px}.repo-grid .repo-item .updated>a .username{color:#333}.repo-grid .repo-item .updated>a:hover .username,.repo-grid .repo-item .updated>a:focus .username,.repo-grid .repo-item .updated>a:active .username{text-decoration:underline}.person-grid{width:1000px;position:relative;left:-10px}.person-grid .person{width:12.5%;height:150px;padding:0 10px;margin-bottom:20px;float:left;position:relative}.person-grid .person a:hover,.person-grid .person a:focus,.person-grid .person a:active{text-decoration:none}.person-grid .person input[type="checkbox"]{position:absolute;top:25%;left:25%;z-index:-1}.person-grid .person label{display:block;position:relative;cursor:pointer}.person-grid .person input[type="checkbox"]:checked+label{width:100%;background:#3998f7;border:3px solid #3998f7;top:-3px;left:-3px;-moz-box-sizing:content-box;box-sizing:content-box}.person-grid .person .octicon-check{text-align:center;display:block;position:absolute;top:2px;right:2px;bottom:2px;left:2px;z-index:2;display:block;opacity:0;transition:opacity 0.2s ease;-webkit-transition:opacity 0.2s ease 0}.person-grid .person label:hover .octicon-check,.person-grid .person input[type="checkbox"]:focus+label .octicon-check{opacity:1}.person-grid .person .octicon-check:before{width:24px;height:24px;color:#b3b3b3;background:#fff;padding-top:4px;border-radius:50%;margin:20px 0 0 20px;display:block;position:absolute;top:50%;left:50%;z-index:1}.person-grid .person input[type="checkbox"]:checked+label .octicon-check{opacity:1}.person-grid .person input[type="checkbox"]:checked+label .octicon-check:before{color:#3998f7}.person-grid .person img{max-width:100%;height:auto;border:2px solid transparent;margin-bottom:6px;display:block}.person-grid .person a:hover img,.person-grid .person a:focus img,.person-grid .person a:active img,.person-grid .person label:hover img,.person-grid .person input[type="checkbox"]:focus+label img{border-color:#fff;box-shadow:0 0 6px rgba(0,0,0,0.5)}.person-grid .person input[type="checkbox"]:checked+label img{margin-bottom:0;border-color:transparent;box-shadow:none}.person-grid .person h2,.person-grid .person h3{margin:0}.person-grid .person a:hover .username,.person-grid .person a:focus .username,.person-grid .person a:active .username,.person-grid .person .username:hover,.person-grid .person .username:focus,.person-grid .person .username:active{text-decoration:underline}.person-grid .person a.username{color:#333}.person-grid .person .username,.person-grid .person .full-name{margin-left:2px;display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.person-grid .person .username{font-size:16px;line-height:1.25}.person-grid .person .full-name{font-size:13px;line-height:1.38461538461;font-weight:normal;color:#666}.person-grid .labels{position:absolute;top:2px;left:12px}.person-grid .labels .label{border-radius:0;display:block;float:left;clear:left}.person-grid .labels .label,.team-grid .labels .label,.team-list-view .labels .label{font-size:10px;font-weight:bold;text-transform:uppercase;vertical-align:text-bottom;color:#fff;background:#ccc;padding:2px 6px;border-radius:2px;display:inline-block}.person-grid .labels .label.label-admin,.team-grid .labels .label.label-admin,.team-list-view .labels .label.label-admin{background:rgba(255,0,255,0.9)}.person-grid .labels .label.label-billing,.team-grid .labels .label.label-billing,.team-list-view .labels .label.label-billing{background:rgba(2,215,225,0.9)}.person-grid .labels .label.label-guest,.team-grid .labels .label.label-guest,.team-list-view .labels .label.label-guest{background:rgba(255,153,51,0.9)}.person-grid .labels .label.label-new,.team-grid .labels .label.label-new,.team-list-view .labels .label.label-new{background:rgba(108,198,68,0.9)}.person-grid .labels .label.label-private,.team-grid .labels .label.label-private,.team-list-view .labels .label.label-private{background:rgba(242,204,102,0.9)}.team-list-view{position:relative;top:-20px}.team-list-view .team{float:left;width:48%;margin-right:10px;margin-top:10px;padding:10px;padding-bottom:5px;border:1px solid #ddd;border-radius:3px;position:relative}.team-list-view .team:before,.team-list-view .team:after{content:" ";display:table}.team-list-view .team:after{clear:both}.team-list-view .team:hover{background:#f5f9fc}.team-list-view .team a.team-link{text-decoration:none;display:block;width:364px;margin-bottom:5px}.team-list-view .team a.team-link .avatar{width:40px;height:40px;border-radius:3px;margin-right:8px;float:left}.team-list-view .team a.team-link h2,.team-list-view .team a.team-link h3{font-size:18px;line-height:1.25;margin:-4px 3px 6px 0;display:inline-block}.team-list-view .team .description{font-size:13px;line-height:18px;margin-top:5px;color:#333;margin:0}.team-list-view .team .description .blank{color:#aaa}.team-list-view .team>.minibutton{text-align:center;float:right}.team-list-view .team>.labels{text-align:center;margin-top:-13px;position:absolute;top:50%;right:2px}.team-list-view .team>.labels{margin-top:-11px}.team-list-view .team>.minibutton,.team-list-view .team>.labels .label{width:80px}.team-list-view .team ul.members{margin-top:8px;clear:both}.team-list-view .team ul.members li{float:left;list-style:none}.team-list-view .team ul.members li:before,.team-list-view .team ul.members li:after{content:" ";display:table}.team-list-view .team ul.members li:after{clear:both}.team-list-view .team ul.members li a,.team-list-view .team ul.members li img{width:20px;height:20px;display:block}.team-list-view .team ul.members li a{line-height:20px;text-align:center;text-decoration:none;color:#333;background:#f2f2f2;border-radius:3px;margin-right:3px;overflow:hidden;opacity:0.9}.team-list-view .team ul.members li a:hover,.team-list-view .team ul.members li a:focus,.team-list-view .team ul.members li a:active{color:#4183c4;opacity:1}.team-grid{width:1000px;position:relative;left:-10px}.team-grid:before,.team-grid:after{content:" ";display:table}.team-grid:after{clear:both}.team-grid .team{width:50%;height:178px;padding:0 11px;margin-bottom:20px;float:left;position:relative}.team-grid .team:before{content:'';border:1px solid #ddd;border-radius:5px;position:absolute;top:0;right:10px;bottom:0;left:10px;z-index:-1}.team-grid .team:hover:before{box-shadow:0 0 6px #ccc}.team-grid .team>a:first-child{height:90px;text-decoration:none;padding:16px;display:block}.team-grid .team>a:first-child:hover h2,.team-grid .team>a:first-child:focus h2,.team-grid .team>a:first-child:active h2,.team-grid .team>a:first-child:hover h3,.team-grid .team>a:first-child:focus h3,.team-grid .team>a:first-child:active h3{text-decoration:underline}.team-grid .team>a:first-child .avatar{width:60px;height:60px;border-radius:3px;margin-right:12px;float:left}.team-grid .team>a:first-child h2,.team-grid .team>a:first-child h3{font-size:16px;line-height:1.25;margin:2px 3px 2px 0;display:inline-block}.team-grid .team>a:first-child .description{font-size:13px;line-height:18px;color:#333;margin:0}.team-grid .team>.minibutton,.team-grid .team>.labels{position:absolute;right:26px;bottom:10px;z-index:2}.team-grid .team>.labels{bottom:12px}.team-grid .team footer{color:#666;background:#f2f2f2;padding-bottom:44px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;position:absolute;right:11px;bottom:1px;left:11px;overflow:hidden}.team-grid .team footer h3,.team-grid .team footer h4{font-size:13px;font-weight:normal;line-height:18px;margin:0;position:absolute;bottom:13px;left:16px}.team-grid .team footer ul{width:9999em;list-style:none}.team-grid .team footer ul:before,.team-grid .team footer ul:after{content:" ";display:table}.team-grid .team footer ul:after{clear:both}.team-grid .team footer ul li{display:block;float:left}.team-grid .team footer ul li a,.team-grid .team footer ul li img{display:block}.team-grid .team footer ul li img{width:42px;height:42px}.team-grid .team footer ul li a{opacity:0.9}.team-grid .team footer ul li a:hover,.team-grid .team footer ul li a:focus,.team-grid .team footer ul li a:active{opacity:1}.add-people-form{padding-right:270px;position:relative}.add-people-form input[type="text"]{width:100%}.add-people-form .octicon-search{color:#999;position:absolute;top:9px;right:279px}.add-people-form>img{width:16px;height:16px;background:#fff;position:absolute;top:9px;right:279px;z-index:2}.add-people-form .button{width:250px;text-align:center;position:absolute;top:0;right:0}.org .member-adder{width:710px;padding:0;border:5px solid #eee;border-radius:3px;margin-top:10px;top:100%;z-index:3}.org .member-adder ul{border-radius:3px;overflow:hidden}.org .member-adder ul li{min-height:58px;padding:10px;border:none;border-top:1px solid #ddd;margin:0;position:relative}.org .member-adder ul li:first-child{border:0}.org .member-adder .avatar{margin-right:10px}.org .member-adder .avatar img{width:36px;height:36px}.org .member-adder .login{font-size:16px;line-height:1.25}.org .member-adder .name{line-height:18px;color:#666}.org .member-adder .octicon.octicon-plus{width:24px;height:24px;text-align:center;color:#fff;padding-top:2px;border:2px solid transparent;border-radius:50%;position:absolute;top:17px;right:13px}.org .member-adder .navigation-focus{color:#333;background:#f5f9fc}.org .member-adder .navigation-focus .octicon.octicon-plus{color:rgba(65,131,196,0.5);border-color:rgba(65,131,196,0.5)}.org-invite .blankslate{width:710px;margin-top:20px}.person-list{width:710px;list-style:none}.person-list li{min-height:58px;padding:10px 0;border-bottom:1px solid #ddd;position:relative}.person-list li>a:first-child{line-height:18px;text-decoration:none;color:#666;padding-left:48px;display:block}.person-list li>a:first-child img{width:36px;height:36px;border-radius:3px;position:absolute;top:12px;left:2px}.person-list li>a:first-child strong{font-size:16px;line-height:1.25;color:#333;display:block}.person-list li>a:first-child:hover strong,.person-list li>a:first-child:focus strong,.person-list li>a:first-child:active strong{text-decoration:underline}.person-list li .buttons{position:absolute;top:12px;right:0}.person-list li .buttons .button,.person-list li .buttons .minibutton{font-weight:normal;color:#666;background:transparent;border-color:#ddd}.person-list li .buttons .button{padding:7px 12px}.person-list li .buttons .minibutton.switcher{min-width:160px;height:34px}.person-list li .buttons .minibutton.switcher>span{height:32px;line-height:32px;padding:0 44px 0 12px}.person-list li .buttons .minibutton.switcher>span:before{border-width:5px;border-color:#666 transparent transparent;top:13px;right:12px}.person-list li .buttons .minibutton.switcher>span:after{background:#ddd;right:34px;box-shadow:none}.confirm-removal{padding:10px;margin-bottom:10px;border:1px solid #aaa;border-radius:3px}.confirm-removal h3{margin-top:0px}.confirm-removal p{margin-bottom:0px}.confirm-removal li{list-style-type:none}.confirm-removal img{border-radius:3px;width:20px;height:20px}.removing{background:#fafafa;padding:10px;border:1px solid #eee;border-radius:3px;margin-top:10px}.removing h3{margin-top:0px}.removing li{list-style-type:none}.org-invite .roles{width:250px;color:#666;float:right}.org-invite .roles>div{padding:0 10px;margin:26px 0}.org-invite .roles h4{font-size:16px;line-height:1.25;color:#333;margin:0 0 2px}.org-invite .roles p{margin:0px}.page-notice{margin:15px auto;width:400px;padding:20px;color:#333;font-size:14px;background:#fffeeb;border:1px solid #ddd;border-radius:5px}.page-notice h2{margin:0;font-size:16px;color:#000}.page-notice p:last-child{margin-bottom:0}.pagehead{position:relative;margin-bottom:20px;padding-top:20px;padding-bottom:20px;border-bottom:1px solid #eee}.pagehead .account-switcher{display:inline-block;margin-top:-2px;margin-bottom:-4px;margin-right:10px}.pagehead ul.pagehead-actions{margin:0;float:right;z-index:21}.pagehead h1{margin-top:0;margin-bottom:0;font-size:20px;font-weight:normal;line-height:28px}.pagehead h1 strong{font-weight:bold}.pagehead h1 a{color:#4183c4;white-space:nowrap}.pagehead h1.avatared img{vertical-align:middle;margin-right:5px;width:32px;height:32px;margin-top:-3px;margin-bottom:-2px}.admin{background:url("/images/modules/pagehead/background-yellowhatch-v3.png?8793ced3") 0 0 repeat-x}.pagehead.repohead.mirror h1,.pagehead.repohead.fork h1{margin-top:-5px;margin-bottom:15px;height:auto}.pagehead.repohead h1{color:#666;padding-left:34px;position:relative;float:left}.pagehead.repohead h1.private .mega-octicon:before{color:#e9dba5}.pagehead.repohead h1.private .repo-label span{padding:3px 6px 2px;background-color:#f8eec7;border-radius:3px;color:#A1882B}.pagehead.repohead h1 .octicon-lock,.pagehead.repohead h1 .octicon-mirror-private,.pagehead.repohead h1 .octicon-repo,.pagehead.repohead h1 .octicon-mirror-public,.pagehead.repohead h1 .octicon-repo-forked{position:absolute;left:0;top:12px;line-height:32px;margin-top:-13px}.pagehead.repohead h1 .octicon-lock:before,.pagehead.repohead h1 .octicon-mirror-private:before,.pagehead.repohead h1 .octicon-repo:before,.pagehead.repohead h1 .octicon-mirror-public:before,.pagehead.repohead h1 .octicon-repo-forked:before{color:#bbb}.pagehead.repohead .octicon-mirror-public,.pagehead.repohead .octicon-mirror-private{left:-3px}.pagehead.repohead .octicon-lock{top:10px}.pagehead.repohead span.fork-flag,.pagehead.repohead span.mirror-flag{display:block;font-size:11px;line-height:10px;white-space:nowrap}.pagehead.repohead .repohead-name-divider{padding-right:5px;padding-left:5px}.pagehead.repohead span.repo-label{position:absolute;top:15px;left:-75px;width:65px;margin-top:-14px;text-align:right;font-size:11px;text-transform:uppercase;color:#b9b9b9;font-weight:300;text-shadow:none;transition:all 0.4s ease-in-out;-webkit-transition:all 0.4s ease-in-out 0}@media only screen and (max-width: 1155px){.pagehead.repohead span.repo-label{opacity:0}}.pagehead-actions>li{list-style-type:none;font-size:11px;color:#333;margin:0 10px 0 0;float:left}.pagehead-actions>li:last-child{margin-right:0}.pagehead-actions a.feed{display:inline-block;height:24px;padding:0 6px;line-height:26px;border:1px solid #eee;border-radius:3px}.pagehead-actions a.feed .octicon{vertical-align:middle;margin-top:-2px;color:#ff9933}.pagehead-actions .octicon-mute{color:#cc0000}.context-loader{position:absolute;top:0;left:50%;margin-left:-75px;width:154px;-moz-box-sizing:border-box;box-sizing:border-box;padding:10px 10px 10px 30px;font-weight:bold;font-size:12px;color:#666;background:url("/images/spinners/octocat-spinner-16px.gif?8c695afe") 10px 50% no-repeat #eee;border:1px solid #ddd;border-top:1px solid #fff;border-radius:5px;border-top-left-radius:0;border-top-right-radius:0;z-index:20}@media screen and (-webkit-min-device-pixel-ratio: 2), screen and (max--moz-device-pixel-ratio: 2){.context-loader{background:url("/images/spinners/octocat-spinner-32-EAF2F5.gif?cc07bd9a") 10px 50% no-repeat #eee;background-size:16px auto}}#pages-composer{margin:10px 0 15px 0;padding:3px;background:#eee;border-radius:4px}#pages-composer #editor-body-buffer{display:none}#pages-composer .body{padding:20px;background:#f9f9f9;border:1px solid #ddd;border-radius:2px}#pages-composer dl.form{margin:0 0 20px 0}#pages-composer dt label{text-shadow:0 1px 0 #fff}#pages-composer input{margin-top:10px;width:860px;border:1px solid #DDD}#pages-composer #gollum-editor{width:870px;margin:0 0 20px 0;padding:0 0 5px 0;border:none}#pages-composer .textareaClone{margin:0;padding:0}#gollum-editor-function-bar #load-readme{float:right;margin-top:3px}#gollum-editor-function-bar #load-readme:first-child{padding:0 5px}#gollum-editor-function-bar #undo-load-readme{float:right;margin-top:7px;margin-right:10px;display:none}#pages-composer span.function-divider{display:block;float:left;width:0.5em}#pages-composer #gollum-editor-body{margin-top:10px;border:1px solid #ddd}body.pages_generator{background:url("/images/modules/pages_generator/theme_picker_body_bg.png?a6cd5691") #fff repeat center}#theme-picker-wrap{background:#fff}#theme-picker-full{position:relative;width:920px;margin:0 auto;background:#fff;text-align:center;overflow:hidden}#theme-picker-full .theme-picker-scroll-backwards,#theme-picker-full .theme-picker-scroll-forwards{position:absolute;width:32px;height:32px;margin-top:52px;overflow:hidden;opacity:1;color:#cecece;font-size:32px;top:0}#theme-picker-full .theme-picker-scroll-backwards:hover,#theme-picker-full .theme-picker-scroll-forwards:hover{color:#0084c8;text-decoration:none}#theme-picker-full .theme-picker-scroll-backwards.hide,#theme-picker-full .theme-picker-scroll-forwards.hide{cursor:default;opacity:0}#theme-picker-full .theme-picker-scroll-backwards{left:0}#theme-picker-full .theme-picker-scroll-forwards{right:0}.thumbnail-selector{overflow:hidden;margin:15px auto}.thumbnail-selector.themes{width:845px;white-space:nowrap;padding-top:5px}.thumbnail-selector .theme-thumbnail{display:inline-block;list-style-type:none;margin:0 21px}.theme-thumbnail a{color:#000;font-weight:bold}.theme-thumbnail a:hover{text-decoration:none}.theme-thumbnail a span{display:block;text-align:center}.theme-thumbnail a img{width:120px;height:90px;background:#e0e0e0;border:3px solid #d3d3d3}.theme-thumbnail a:hover img{border-color:#4183C4}.theme-thumbnail a.selected img{border-color:#3db738;box-shadow:0 0px 5px #3db738}.theme-thumbnail .name{display:none}#theme-action-bar{position:relative;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;height:50px;border-top:1px solid #cacaca;border-bottom:1px solid #cacaca;box-shadow:0 3px 10px 0px rgba(0,0,0,0.4)}#theme-action-bar #loader{position:absolute;top:8px;right:50%;opacity:0;transition:opacity 0.2s ease-in;-webkit-transition:opacity 0.2s ease-in 0}#theme-action-bar #loader.visible{opacity:1}#theme-actions-wrap{position:relative;width:940px;height:50px;margin:0 auto}#theme-action-bar ul.page-actions{float:right;height:34px;width:160px;padding:2px 10px 6px 0;text-align:right}#theme-action-bar ul.page-actions li{list-style-type:none;display:inline-block;margin:0}#theme-action-bar ul.page-actions li a{display:block;width:48px;color:#888;font-size:9px;letter-spacing:1px;text-align:center;text-decoration:none;overflow:hidden;text-transform:uppercase}#theme-action-bar ul.page-actions li a:hover .octicon-jump-up,#theme-action-bar ul.page-actions li a:hover .octicon-jump-down,#theme-action-bar ul.page-actions li a:hover .octicon-arrow-left,#theme-action-bar ul.page-actions li a:hover .octicon-check{color:#4183c4}#theme-action-bar ul.page-actions #page-edit .octicon-arrow-left{padding:0 2px}#theme-action-bar ul.page-actions #page-publish .octicon-check{color:#6CC644}#page-hide.hide .for-hiding{display:none}#page-hide.show .for-showing{display:none}#theme-picker-mini{display:inline-block;width:500px;height:46px;background-size:70px 30px;background-position:10px 10px;overflow:hidden;text-overflow:ellipses}#theme-picker-mini a{display:inline-block;float:left;width:16px;height:16px;overflow:hidden;color:#aaa;text-decoration:none}#theme-picker-mini a:hover{color:#4183c4}#theme-picker-mini .theme-picker-section-themes{height:16px;margin:17px 0 0 8px}.theme-name{float:left;margin-left:10px;color:#888;text-shadow:0 1px 1px #fff}#page-preview{position:relative;width:100%;height:100%;border:none;padding:0;z-index:-100;background:#fff;margin-bottom:-5px;box-shadow:0 0 10px rgba(0,0,0,0.5)}.pagination{font-family:helvetica, arial, freesans, clean, sans-serif;margin:7px 0;display:inline-block;overflow:hidden}.pagination a,.pagination span{position:relative;float:left;padding:3px 10px;color:#555;font-size:13px;text-decoration:none;text-shadow:0 1px 0 #fff;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border:1px solid #ddd;border-bottom:1px solid #c5c5c5}.pagination a+a,.pagination a+span,.pagination span+a,.pagination span+span{margin-left:-1px;box-shadow:inset 1px 0 0 rgba(255,255,255,0.2)}.pagination a:first-child,.pagination span:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination a:last-child,.pagination span:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.pagination a:hover,.pagination a:active,.pagination span:hover,.pagination span:active{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.3);background-color:#3072b3;background-image:-moz-linear-gradient(#599bdc, #3072b3);background-image:-webkit-linear-gradient(#599bdc, #3072b3);background-image:linear-gradient(#599bdc, #3072b3);background-repeat:repeat-x;border-color:#2a65a0}.pagination a:active,.pagination span:active{background-color:#599bdc;background-image:-moz-linear-gradient(#3072b3, #599bdc);background-image:-webkit-linear-gradient(#3072b3, #599bdc);background-image:linear-gradient(#3072b3, #599bdc);background-repeat:repeat-x}.pagination a.current,.pagination a.current:hover,.pagination span.current,.pagination span.current:hover{color:#fff;font-weight:bold;text-shadow:0 -1px 0 rgba(0,0,0,0.5);background-color:#9e9e9e;background-image:-moz-linear-gradient(#767676, #9e9e9e);background-image:-webkit-linear-gradient(#767676, #9e9e9e);background-image:linear-gradient(#767676, #9e9e9e);background-repeat:repeat-x;border-color:#686868}.pagination a:hover,.pagination a:active,.pagination a.current,.pagination a.current:hover,.pagination span:hover,.pagination span:active,.pagination span.current,.pagination span.current:hover{z-index:2;box-shadow:none}.pagination a.disabled,.pagination a.disabled:hover,.pagination a.gap,.pagination a.gap:hover,.pagination span.disabled,.pagination span.disabled:hover,.pagination span.gap,.pagination span.gap:hover{color:#bbb;cursor:default;text-shadow:none;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;border-color:#ddd #ddd #c5c5c5}.pagination a.prev_page,.pagination a.next_page,.pagination span.prev_page,.pagination span.next_page{font-size:9px;line-height:18px}.pagination.ajax_paginate{display:block}.pagination.ajax_paginate a{float:none;display:block;padding:6px;text-align:center}.pagination.ajax_paginate.loading a{text-indent:-3000px;background-color:#eaeaea;background-image:url("/images/spinners/octocat-spinner-16px.gif?8c695afe");background-repeat:no-repeat;background-position:center center;border-color:#c5c5c5}@media screen and (-webkit-min-device-pixel-ratio: 2), screen and (max--moz-device-pixel-ratio: 2){.pagination.ajax_paginate.loading a{background-image:url("/images/spinners/octocat-spinner-32.gif?ca28a0dd");background-size:16px auto}}#watchers{margin:15px 0;border-top:1px solid #ddd}#watchers li{border-bottom:1px solid #ddd}#watchers .profile-name{max-width:420px;color:#999}#watchers .tabnav-widget{margin-top:0}ul.members{list-style:none}.members li{position:relative;font-size:14px;margin:0;padding:5px 0;overflow:hidden;line-height:24px;font-weight:bold}.members li em{font-style:normal;color:#999}.members li a.follow,.members li a.unfollow{position:absolute;top:5px;right:0}.members li .gravatar{border:1px solid #ddd;padding:1px;background-color:#fff;float:left;margin-right:10px}body.page-profile .tab-content{position:relative}body.page-profile .feed-icon{position:absolute;right:0;z-index:2}body.page-profile .feed-icon a{display:block;width:18px;height:18px;background:#f37538;color:#fff;border-radius:3px;padding:1px;text-align:center;-moz-box-sizing:border-box;box-sizing:border-box}body.page-profile .box-header .octicon-lock{margin-top:8px;margin-right:10px;color:#999}body.page-profile .profilecols .first{float:left;width:220px}body.page-profile .profilecols .last{float:right;width:740px}body.page-profile .profilecols ul.stats{border-bottom:1px solid #ddd;margin:0 0 17px 0;padding:6px 0 15px 0;text-align:center}body.page-profile .profilecols ul.stats li{display:inline-block;list-style-type:none;min-width:70px}body.page-profile .profilecols ul.stats li:last-child{margin-right:0}body.page-profile .profilecols ul.stats li strong{display:block;font-size:28px;line-height:1;font-weight:bold;color:#222}body.page-profile .profilecols ul.stats li span{display:block;margin-top:-2px;font-size:11px;color:#999}body.page-profile .profilecols ul.stats li a:hover,body.page-profile .profilecols ul.stats li a:active{text-decoration:none}body.page-profile .profilecols ul.stats li a:hover strong,body.page-profile .profilecols ul.stats li a:hover span{color:#4183c4;text-decoration:none}body.page-profile .profilecols .orgs h3{margin:0 0 5px 0;font-size:12px}body.page-profile .profilecols .orgs h3 a{font-weight:normal;margin-left:5px}body.page-profile .profilecols .orgs ul.avatars{margin:0}body.page-profile .profilecols .orgs ul.avatars li{list-style-type:none;display:inline;margin:0 1px 0 0}body.page-profile .profilecols .orgs ul.avatars li img{border:1px solid #ddd;box-shadow:none;padding:1px;width:36px;height:36px}body.page-profile .profilecols .tabnav{position:relative}body.page-profile .profilecols .tabnav .pagehead-actions{float:none;top:0px}body.page-profile .profilecols .tabnav .pagehead-actions li.text{display:inline-block;margin-top:12px}body.page-profile .profilecols .tabnav .subnav li:first-child{margin-left:10px}body.page-profile .profilecols .filter-bar{position:relative;padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid #ddd}body.page-profile .profilecols .filter-bar .repo-search{display:inline}body.page-profile .profilecols .filter-bar .new-repo{float:right;margin-left:15px}body.page-profile .profilecols .filter-bar .filter_input{width:260px}body.page-profile .profilecols .filter-bar .repo_filterer{float:right;margin-top:8px}body.page-profile .profilecols .filter-bar li{position:relative;float:right;list-style:none;margin-left:10px;font-size:14px}body.page-profile .profilecols .filter-bar li a{display:inline-block}body.page-profile .profilecols .filter-bar li .filter-selected{color:#000;font-weight:bold}body.page-profile .profilecols .noactions{margin:5px 0 0 0;padding:10px;color:#333;font-size:14px;font-weight:normal;text-align:center;background:#ffffee;border:1px solid #ddd}body.page-profile .profilecols .noactions p{margin:0;line-height:1.2;text-shadow:1px 1px 0 #fff}body.page-profile .profilecols .blankslate{margin-top:30px}body.page-profile .profilecols h1.avatared .tooltipped{display:inline-block}body.page-profile h1.avatared strong{border-left:1px solid #eee;margin-left:5px;padding:5px 10px;vertical-align:middle}body.page-profile .select-menu-modal{width:130px}body.page-profile .select-menu-modal-holder{right:0}body.page-profile .vcard img{padding:5px;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,0.15);width:222px;height:222px;border:1px solid #ddd;-moz-box-sizing:border-box;box-sizing:border-box}body.page-profile .vcard h1{font-size:26px;letter-spacing:-1px;color:#495961;margin-top:6px;margin-bottom:0}body.page-profile .vcard h1 span{line-height:1;display:inline-block;width:100%;line-height:26px;text-overflow:ellipsis;overflow-x:hidden;padding-bottom:4px;margin-bottom:-12px}body.page-profile .vcard h1 span.name-only{margin-bottom:11px}body.page-profile .vcard h1 em{display:inline-block;width:100%;text-overflow:ellipsis;overflow-x:hidden;font-size:20px;font-style:normal;font-weight:300;line-height:24px;color:#666;margin-bottom:12px;vertical-align:top;letter-spacing:0}body.page-profile .vcard .staff-badge{border-radius:3px;color:#fff;font-size:10px;font-weight:bold;padding:2px 5px;position:relative;text-transform:uppercase;top:-1px;background-color:#4183C4;-webkit-font-smoothing:antialiased}body.page-profile .vcard .avatared{position:relative}body.page-profile .vcard .details{border-top:1px solid #ddd;border-bottom:1px solid #ddd;margin:0 0 8px 0;padding:18px 0 15px 0;-webkit-font-smoothing:antialiased}body.page-profile .vcard .details .join-label{color:#a0a0a0}body.page-profile .vcard dl{margin:5px 0 0 0;font-size:14px;-webkit-font-smoothing:antialiased}body.page-profile .vcard dl:first-child{margin-top:0}body.page-profile .vcard dl dt{margin:0;float:left;width:22px;color:#d0d0d0}body.page-profile .vcard dl dd{margin:0 0 0 22px;width:195px;overflow-x:hidden;text-overflow:ellipsis}.hide-line-numbers .diff-line-num{-webkit-user-select:none;-moz-user-select:none;user-select:none}.hide-line-numbers .diff-line-num:before{content:attr(data-line-number)}.hide-line-numbers .line-num-content{display:none;visibility:hidden}.file-diff:hover [data-number]:before{content:attr(data-number)}.discussion-timeline-cols .main{float:left;width:660px}.discussion-timeline-cols .sidebar{float:right;width:240px}.discussion-timeline-cols ul.discussion-actions{float:right;margin:0 0 0 0;text-align:right}.discussion-timeline-cols ul.discussion-actions li{list-style-type:none;margin:-10px 0 0 5px;display:inline-block}.discussion-timeline .breakout{width:920px}.discussion-timeline p.explain{margin:0;font-size:12px}.discussion-timeline{width:800px}.discussion-timeline .body .commits-compare-link{padding-left:0.5em}.discussion-timeline pre.diff-excerpt{font-size:11px;background:#fafbfc;color:#888;padding:0;margin:0;overflow:auto}.discussion-timeline pre.diff-excerpt div{padding:0 3px}.discussion-timeline pre.diff-excerpt div.gc{color:#777;padding:3px 3px}ul.userlist{margin:0;border-top:1px solid #ddd}ul.userlist li{list-style-type:none;margin:0;padding:4px 0;border-bottom:1px solid #ddd}ul.userlist li .gravatar{display:inline-block;margin-top:-2px;padding:1px;font-size:1px;background:#fff;border:1px solid #eee;vertical-align:middle}ul.userlist li a{display:inline-block;font-size:12px;font-weight:bold;color:#666}#commits_bucket .boxed-group+.boxed-group{margin-top:0}ul.tab-actions{float:right;height:25px;margin:0 0 -25px 0}ul.tab-actions li{list-style-type:none;margin:0 0 0 5px;display:inline-block;font-size:11px;font-weight:bold}.pull-participation{margin:-10px 0 0;padding-left:60px;font-size:13px;font-weight:300;color:#666}.pull-participation p.quickstat{display:inline-block;margin:0 5px 0 0}.pull-participation .avatar{position:relative;display:inline-block;height:24px;top:-2px;margin-right:3px;margin-bottom:3px}.pull-participation .avatar .overlay{position:absolute;top:0;left:0}.pull-participation .avatar img{vertical-align:middle}.pull-participation a{color:#666}.pull-participation a.add-comment{font-weight:bold}.filterbox{margin-bottom:8px}.filterbox input{width:100%;background-color:#fafafa}.filterbox input:focus{background-color:#fff}.browser-title{margin:0 0 10px 0}.browser-title h2{margin:0;font-size:16px;font-weight:bold}.pull-form{margin:0 0 0}.pull-form textarea{height:200px}.pull-form input[type=text]{font-size:14px;padding:5px 5px;margin:0 0 5px 0;width:98%;color:#444}.pull-form .preview-content{background:#fff}.pull-form .preview-content .content-body{padding:10px;font-size:13px}.new-pull-form-error{margin:5px 0 10px 0;font-weight:bold;color:#A00}.pull-dest-repo{margin-top:0}.pull-dest-repo .octicon-arrow-right{position:relative;top:2px}.pull-dest-repo a{font-size:12px;font-weight:bold;padding:5px 0}.pull-dest-repo p{font-size:11px;color:#999;margin:5px 0 15px 0}.new-pull-request .pull-tabs{clear:both}.new-pull-request .tab-content{margin-top:20px}.new-pull-request .explain,.view-pull-request .explain{margin:15px 0}.pull-heading{position:relative;z-index:21}div.pull-head{margin-bottom:20px;background-color:#fafafa;border:1px solid #eee;border-bottom-width:2px;border-radius:3px}div.pull-head .pull-description{height:36px}div.pull-head .pull-description .css-truncate-target{max-width:180px}div.pull-head .pull-description .css-truncate-target+.css-truncate-target{max-width:90px}div.pull-head .pull-description .state-indicator{font-size:13px;display:inline-block;height:20px;line-height:20px;padding:0 5px}div.pull-head .pull-description .pull-state{float:left;padding:8px;margin-right:8px;border-right:1px solid #eee}div.pull-head .pull-description .pull-head-meta{position:relative;float:right;overflow:hidden}div.pull-head .pull-description .pull-head-meta>span{display:block;position:relative;float:left}div.pull-head .pull-description .pull-head-meta .diffstat{padding:0 10px 0 5px;margin:10px 0}div.pull-head .pull-description .pull-head-meta .pull-number{height:36px;padding:0 10px;font-size:14px;font-weight:bold;line-height:36px;border-left:1px solid #eee}div.pull-head .pull-description .pull-head-meta .pull-number a{color:#333}div.pull-head .pull-description .pull-state+p .gravatar:first-child{margin-left:0}div.pull-head .pull-description span.attention-icon{position:relative;float:left;margin-right:10px;padding:10px 12px;border-right:1px solid #eee;color:#D26911}div.pull-head .pull-description p{position:relative;float:left;margin:0;line-height:36px;font-size:13px;max-width:690px;white-space:nowrap}div.pull-head .pull-description p .pull-header-username{font-weight:bold;color:#333}div.pull-head .pull-description p .unknown-repo{color:#aaa}div.pull-head .pull-description p .commit-ref{top:7px;vertical-align:top;z-index:1}div.pull-head .pull-description p .octicon-clippy{color:#666666}.pull-head .commit-ref a,.action-bubble .commit-ref a{color:inherit}.pull-head .commit-ref a:hover,.action-bubble .commit-ref a:hover{text-decoration:none}.pull-head .zeroclipboard-link,.action-bubble .zeroclipboard-link{color:#666666}.mergeable .commit-ref a{color:#fff}.pull-heading.loading .range-loading-overlay{display:block}.pull-heading.loading span.flag{background:#fafafa url("/images/spinners/octocat-spinner-32.gif?ca28a0dd") 12px 12px no-repeat;background-size:16px auto}.pull-heading.loading span.flag .octicon{color:transparent;width:16px}.pull-heading.loading .pull-description,.pull-heading.loading .range-editor-base,.pull-heading.loading .range-editor-head{opacity:0.5}.bubble{padding:3px;background:#eee;border-radius:3px}.bubble .comment-form{margin:0}.bubble .action-bar{width:100%;padding:2px 3px 5px 3px;text-align:right;margin-left:-3px;border-bottom:1px solid #ccc;min-height:26px}.bubble .action-bar .minibutton:last-child{margin-right:2px}.bubble .action-bar h3{margin:5px 0 0 5px;float:left;font-size:13px;font-weight:bold}.bubble .file-box{margin-bottom:0}.avatar img{border-radius:3px}.outdated-diff-comment-container .discussion-bubble-content{display:none}.outdated-diff-comment-container.open .discussion-bubble-content{display:block}.outdated-diff-comment-container .toggle-open{display:none}.outdated-diff-comment-container .toggle-closed{display:inline}.outdated-diff-comment-container.open .toggle-open{display:inline}.outdated-diff-comment-container.open .toggle-closed{display:none}.action-bubble{margin:15px 0 15px 60px}.action-bubble .state-indicator{display:inline-block;margin-right:8px;font-size:12px;padding:0 5px;line-height:24px;width:65px}.action-bubble .action{float:left;line-height:29px}.action-bubble .bubble{font-size:13px;font-weight:300;background-color:transparent}.action-bubble .bubble strong{font-weight:bold}.action-bubble .avatar{position:relative;top:-2px;display:inline-block;height:24px;margin-right:3px;line-height:1px}.action-bubble .avatar img{vertical-align:middle}.action-bubble a{color:#444;color:inherit}.action-bubble a.commit-ref{color:#fff;cursor:pointer}.action-bubble code>a{border-bottom:1px dotted #ccc;text-decoration:none}.action-bubble code>a:hover{border-bottom:1px solid #444}.action-bubble .bubble p{margin:0;line-height:26px}.signed-out-comment{margin:15px 0 0 60px;padding:10px;background:#fafbd2;border:1px solid #e8eac0;border-right-color:#f5f7ce;border-bottom-color:#f5f7ce;border-radius:4px}.signed-out-comment .minibutton{margin-right:3px}.inline-comment-form{max-width:842px}.inline-comment-form .signed-out-comment{margin:3px;padding:0;background:none;border:none}.inline-comment-form .signed-out-comment .minibutton{margin-top:0}.status:before{opacity:0.6}.status:hover{text-decoration:none}.status:hover:before{opacity:1}.status-unknown{color:#999999}.status-pending{color:#ff9933}.status-success{color:#6cc644}.status-error{color:#666666}.status-failure{color:#bd2c00}.stale-files-tab{display:none;margin-bottom:10px}.stale-files-tab .container{width:auto;padding-left:0;padding-right:0}.stale-files-tab.sticky.stick{top:-1px;border-top-left-radius:0;border-top-right-radius:0}#files_bucket.is-stale .stale-files-tab{display:block}#pull_request ul{list-style-type:none}#pull_request label.repo span.name{font-size:160%}#pull_request label.repo span span.sha{color:#aaa}#pull_request .label label{display:inline;margin:0;font-size:100%;font-weight:bold}#pull_request .label div{margin:.2em}#pull_request .recipients{max-height:200px;overflow:auto}#readme{padding:3px;background:#EEE;border-radius:3px}#readme.contributing>div{max-height:250px;overflow:auto}#readme span.name{font-size:16px;line-height:20px;font-weight:bold;padding:10px 10px;color:#555;text-shadow:0 1px 0 #fff;display:block;border:1px solid #CACACA;border-bottom:0 none;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x}#readme .markdown-body,#readme .plain{background-color:#fff;border:1px solid #CACACA;padding:30px}#readme .plain pre{font-size:15px;white-space:pre-wrap}#files #readme{background-color:#fff;border:0 none;padding:0;border-radius:0}#files #readme .markdown-body{border:0 none;padding:30px;border-radius:0}#files #readme .markdown-body table[data-table-type="yaml-metadata"]{line-height:1;font-size:12px}#files #readme .markdown-body table[data-table-type="yaml-metadata"] table{margin:0}#readme.rst .borderless,#readme.rst table.borderless td,#readme.rst table.borderless th{border:0}#readme.rst table.borderless td,#readme.rst table.borderless th{padding:0 0.5em 0 0 !important}#readme.rst .first{margin-top:0 !important}#readme.rst .last,#readme.rst .with-subtitle{margin-bottom:0 !important}#readme.rst .hidden{display:none}#readme.rst a.toc-backref{text-decoration:none;color:black}#readme.rst blockquote.epigraph{margin:2em 5em}#readme.rst dl.docutils dd{margin-bottom:0.5em}#readme.rst div.abstract{margin:2em 5em}#readme.rst div.abstract p.topic-title{font-weight:bold;text-align:center}#readme.rst div.admonition,#readme.rst div.attention,#readme.rst div.caution,#readme.rst div.danger,#readme.rst div.error,#readme.rst div.hint,#readme.rst div.important,#readme.rst div.note,#readme.rst div.tip,#readme.rst div.warning{margin:2em;border:medium outset;padding:1em}#readme.rst div.admonition p.admonition-title,#readme.rst div.hint p.admonition-title,#readme.rst div.important p.admonition-title,#readme.rst div.note p.admonition-title,#readme.rst div.tip p.admonition-title{font-weight:bold;font-family:sans-serif}#readme.rst div.attention p.admonition-title,#readme.rst div.caution p.admonition-title,#readme.rst div.danger p.admonition-title,#readme.rst div.error p.admonition-title,#readme.rst div.warning p.admonition-title{color:red;font-weight:bold;font-family:sans-serif}#readme.rst div.dedication{margin:2em 5em;text-align:center;font-style:italic}#readme.rst div.dedication p.topic-title{font-weight:bold;font-style:normal}#readme.rst div.figure{margin-left:2em;margin-right:2em}#readme.rst div.footer,#readme.rst div.header{clear:both;font-size:smaller}#readme.rst div.line-block{display:block;margin-top:1em;margin-bottom:1em}#readme.rst div.line-block div.line-block{margin-top:0;margin-bottom:0;margin-left:1.5em}#readme.rst div.sidebar{margin:0 0 0.5em 1em;border:medium outset;padding:1em;background-color:#ffffee;width:40%;float:right;clear:right}#readme.rst div.sidebar p.rubric{font-family:sans-serif;font-size:medium}#readme.rst div.system-messages{margin:5em}#readme.rst div.system-messages h1{color:red}#readme.rst div.system-message{border:medium outset;padding:1em}#readme.rst div.system-message p.system-message-title{color:red;font-weight:bold}#readme.rst div.topic{margin:2em}#readme.rst h1.section-subtitle,#readme.rst h2.section-subtitle,#readme.rst h3.section-subtitle,#readme.rst h4.section-subtitle,#readme.rst h5.section-subtitle,#readme.rst h6.section-subtitle{margin-top:0.4em}#readme.rst h1.title{text-align:center}#readme.rst h2.subtitle{text-align:center}#readme.rst hr.docutils{width:75%}#readme.rst img.align-left,#readme.rst .figure.align-left,#readme.rst object.align-left{clear:left;float:left;margin-right:1em}#readme.rst img.align-right,#readme.rst .figure.align-right,#readme.rst object.align-right{clear:right;float:right;margin-left:1em}#readme.rst img.align-center,#readme.rst .figure.align-center,#readme.rst object.align-center{display:block;margin-left:auto;margin-right:auto}#readme.rst .align-left{text-align:left}#readme.rst .align-center{clear:both;text-align:center}#readme.rst .align-right{text-align:right}#readme.rst div.align-right{text-align:left}#readme.rst ol.simple,#readme.rst ul.simple{margin-bottom:1em}#readme.rst ol.arabic{list-style:decimal}#readme.rst ol.loweralpha{list-style:lower-alpha}#readme.rst ol.upperalpha{list-style:upper-alpha}#readme.rst ol.lowerroman{list-style:lower-roman}#readme.rst ol.upperroman{list-style:upper-roman}#readme.rst p.attribution{text-align:right;margin-left:50%}#readme.rst p.caption{font-style:italic}#readme.rst p.credits{font-style:italic;font-size:smaller}#readme.rst p.label{white-space:nowrap}#readme.rst p.rubric{font-weight:bold;font-size:larger;color:maroon;text-align:center}#readme.rst p.sidebar-title{font-family:sans-serif;font-weight:bold;font-size:larger}#readme.rst p.sidebar-subtitle{font-family:sans-serif;font-weight:bold}#readme.rst p.topic-title{font-weight:bold}#readme.rst pre.address{margin-bottom:0;margin-top:0;font:inherit}#readme.rst pre.literal-block,#readme.rst pre.doctest-block{margin-left:2em;margin-right:2em}#readme.rst span.classifier{font-family:sans-serif;font-style:oblique}#readme.rst span.classifier-delimiter{font-family:sans-serif;font-weight:bold}#readme.rst span.interpreted{font-family:sans-serif}#readme.rst span.option{white-space:nowrap}#readme.rst span.pre{white-space:pre}#readme.rst span.problematic{color:red}#readme.rst span.section-subtitle{font-size:80%}#readme.rst table.citation{border-left:solid 1px gray;margin-left:1px}#readme.rst table.docinfo{margin:2em 4em}#readme.rst table.docutils{margin-top:0.5em;margin-bottom:0.5em}#readme.rst table.footnote{border-left:solid 1px black;margin-left:1px}#readme.rst table.docutils td,#readme.rst table.docutils th,#readme.rst table.docinfo td,#readme.rst table.docinfo th{padding-left:0.5em;padding-right:0.5em;vertical-align:top}#readme.rst table.docutils th.field-name,#readme.rst table.docinfo th.docinfo-name{font-weight:bold;text-align:left;white-space:nowrap;padding-left:0}#readme.rst h1 tt.docutils,#readme.rst h2 tt.docutils,#readme.rst h3 tt.docutils,#readme.rst h4 tt.docutils,#readme.rst h5 tt.docutils,#readme.rst h6 tt.docutils{font-size:100%}#readme.rst ul.auto-toc{list-style-type:none}.render-container{background:#ddd;text-align:center;padding:30px;height:70px}.render-container .render-viewer{border:0;display:none;width:100%;height:100%}.render-container .render-viewer-trigger{margin-top:15px}.render-container .octospinner{display:none}.render-container .render-viewer-error{margin-top:25px;display:none}.render-container .render-viewer-fatal{margin-top:25px;display:none}.render-container.is-render-automatic .octospinner{display:inline-block}.render-container.is-render-requested .octospinner{display:inline-block}.render-container.is-render-requested .render-viewer-trigger{display:none}.render-container.is-render-ready.is-render-requested:not(.is-render-failed){background:none;height:500px;padding:0}.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer{display:block}.render-container.is-render-ready.is-render-requested:not(.is-render-failed) :not(.render-viewer){display:none}.render-container.is-render-requested.is-render-failed .render-viewer-error{display:inline-block}.render-container.is-render-requested.is-render-failed>:not(.render-viewer-error){display:none}.render-container.is-render-requested.is-render-failed-fatal .render-viewer-fatal{display:inline-block}.render-container.is-render-requested.is-render-failed-fatal>:not(.render-viewer-fatal){display:none}.render-notice td{background:#f7f7f7;padding:10px;text-align:center;border-bottom:1px solid #eee;font-size:12px}.repo-selector{border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,0.05);margin-bottom:10px;width:425px;-moz-box-sizing:border-box;box-sizing:border-box}.repo-selector .repo-entry-list{background:#fff;border:1px solid #ddd;border-top:0;border-radius:0 0 3px 3px}.repo-selector.scrollable .repo-entry-list{max-height:200px;overflow-y:scroll}.repo-selector .repo-entry,.repo-selector .repo-select-blank,.repo-selector .repo-entry-form{padding:5px}.repo-selector .repo-entry:before,.repo-selector .repo-entry:after,.repo-selector .repo-select-blank:before,.repo-selector .repo-select-blank:after,.repo-selector .repo-entry-form:before,.repo-selector .repo-entry-form:after{content:" ";display:table}.repo-selector .repo-entry:after,.repo-selector .repo-select-blank:after,.repo-selector .repo-entry-form:after{clear:both}.repo-selector .repo-entry .entry-actions,.repo-selector .repo-select-blank .entry-actions,.repo-selector .repo-entry-form .entry-actions{float:right}.repo-selector .repo-entry .entry-content,.repo-selector .repo-select-blank .entry-content,.repo-selector .repo-entry-form .entry-content{float:left}.repo-selector .repo-entry .entry-content,.repo-selector .repo-select-blank .entry-content{line-height:24px;color:#666}.repo-selector .repo-select-blank .entry-content{text-align:center;width:100%;margin:1px 0}.repo-selector .repo-entry{border-bottom:1px solid #ddd}.repo-selector .repo-entry .entry-content{padding-left:5px}.repo-selector .repo-entry .nwo-slash{color:#999}.repo-selector .repo-entry:last-child{border-bottom:none}.repo-selector .repo-entry-form{border:1px solid #d8d8d8;border-bottom:1px solid #ccc;border-radius:3px 3px 0 0;position:relative;background-color:#e0e0e0;background-image:-moz-linear-gradient(#fafafa, #e0e0e0);background-image:-webkit-linear-gradient(#fafafa, #e0e0e0);background-image:linear-gradient(#fafafa, #e0e0e0);background-repeat:repeat-x}.repo-selector .repo-entry-form .nwo-slash,.repo-selector .repo-entry-form .select-menu,.repo-selector .repo-entry-form .target-repo-menu.owner-is-active,.repo-selector .repo-entry-form .repo-action-add{display:inline-block;line-height:1em}.repo-selector .repo-entry-form .target-repo-menu{display:none}.repo-selector .repo-entry-form .nwo-slash{font-size:21px;color:#666;margin:0 5px;position:relative;top:4px}.repo-selector .repo-entry-form .triangle{content:"";border-color:#ccc transparent transparent transparent;border-style:solid;border-width:5px 10px;height:0;width:0;position:absolute;bottom:-10px;left:48%}.repo-list{list-style:none}.repo-list>li:first-child .repo-list-item{border-top:0}.repo-list>li:last-child .repo-list-item{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.repo-list .no-repo{padding:15px;color:#999;text-align:center;-moz-box-sizing:border-box;box-sizing:border-box}.repo-list-item{position:relative;display:block;padding:6px 30px;font-size:14px;border-top:1px solid #e5e5e5;-moz-box-sizing:border-box;box-sizing:border-box}.repo-list-item:hover{text-decoration:none}.repo-list-item:hover .repo,.repo-list-item:hover .owner{text-decoration:underline}.repo-list-item .repo-icon{float:left;margin-top:2px;margin-left:-20px;color:#666}.repo-list-item .repo-and-owner{max-width:220px}.repo-list-item .owner{max-width:110px}.repo-list-item .repo{font-weight:bold}.repo-list-item .stars{position:absolute;top:0;right:10px;margin-top:6px;font-size:12px;color:#888}.repo-list-item .repo-description{display:block;max-width:230px;color:#777;font-size:12px}.popular-repos .repo-list-item .stars{margin-top:16px}.popular-repos .no-description .repo-list-item{padding-top:14px;padding-bottom:14px}.private .repo-list-item{background-color:#fcf8e9}.private .repo-list-item .repo-icon{color:#a1882b}.filter-repos{padding:10px 10px 0;background-color:#fafafa;border-bottom:1px solid #e5e5e5}.filter-repos:before,.filter-repos:after{content:" ";display:table}.filter-repos:after{clear:both}.filter-repos .filter-input{width:100%;min-height:26px;padding:3px 10px;font-size:11px;border-radius:12px}.repo-filterer{margin-top:5px;list-style:none}.repo-filterer .repo-filter{float:left;margin-right:5px;padding:5px;font-size:11px;color:#777}.repo-filterer .repo-filter:hover{text-decoration:none}.repo-filterer .repo-filter:hover,.repo-filterer .filter-selected{padding-bottom:3px;border-bottom:2px solid #e5e5e5}.repo-filterer .filter-selected{color:#333}.more-repos{text-align:center;box-shadow:inset 0 1px 0 #e5e5e5}.more-repos img{margin:11px auto}.more-repos-link{display:block;padding:10px;color:#7ba9d6}.more-repos-link:hover{color:#4183c4;text-decoration:none}.more-repos-link.is-loading{text-indent:-9999px;cursor:default;background-image:url("/images/spinners/octocat-spinner-16px.gif?8c695afe");background-repeat:no-repeat;background-position:center center}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.more-repos-link.is-loading{background-image:url("/images/spinners/octocat-spinner-32.gif?ca28a0dd");background-size:16px 16px}}.empty-repo{margin:0 auto;width:710px}.empty-repo .url-box{display:inline-block;margin:0 0 -10px 0;width:auto;height:auto;padding:0;border:none}.empty-repo .clone-urls{width:499px}.empty-repo .or-text{margin-left:5px;margin-right:5px}.empty-repo h3{margin-top:35px}.empty-repo .new-repo-cli-container{padding-top:10px;text-align:center}.empty-repo .new-repo-cli-container pre{text-align:left}.empty-repo #member-list{margin-top:10px}.empty-repo-recommendations{text-align:center}.repo-stats{margin-left:0}.repo-stats li{float:left;list-style:none;font-size:11px;font-weight:bold;line-height:20px;color:#666}.repo-stats li+li{margin-left:10px}.repo-stats li a{display:inline-block;padding:0 5px;color:#666}.repo-stats li a .octicon{color:#888}.repo-stats li a:hover{color:#4183c4;text-decoration:none}.repo-stats li a:hover .octicon{color:inherit}#change_default_branch{clear:left}#change_default_branch dt,#change_default_branch dd{float:left}#change_default_branch dt{margin:0 30px 0 0}.addon{margin:0;padding:10px}.addon dl.form{margin:0}.addon input[type=checkbox]{float:left;margin:5px 0 0 0}.addon p{margin:0 0 0 20px;color:#444}.addon p+p{margin-top:1em;margin-bottom:0}.addon .hfields{margin-left:2em}.addon.loading .indicator{display:inline-block;margin-left:5px;margin-top:-2px;width:16px;height:16px;background:url("/images/spinners/octocat-spinner-32-EAF2F5.gif?cc07bd9a") 0 0 no-repeat;background-size:16px}.addon.success .indicator:before,.addon.error .indicator:before{font:normal normal 16px "octicons";line-height:1;display:inline-block;text-decoration:none;-webkit-font-smoothing:antialiased;margin-left:5px}.addon.success .indicator:before{content:"\f03a";color:#6cc644}.addon.error .indicator:before{content:"\f02d";color:#bd2c00}.boxed-group .boxed-group-inner .addon h4{margin:2px 0 2px 20px}.rule.no-margin{margin:0}ul.hook-list{margin:0 0 15px 0;border-top:1px solid #ddd}ul.hook-list li{list-style-type:none;margin:0;padding:1px 0;font-size:12px;font-weight:bold;border-bottom:1px solid #ddd}ul.hook-list li .service-indicator{display:none;float:right;margin-top:3px;margin-right:5px;color:#aaa}ul.hook-list li.enabled .service-indicator{display:inline-block}ul.hook-list li.enabled .active{display:inline-block;color:#6cc644}ul.hook-list li.enabled .inactive{display:inline-block;color:#ff9933}ul.hook-list li.selected{color:#fff;background-color:#3d7cb9}ul.hook-list li a{display:inline-block;padding:3px 0 3px 5px;color:#999;text-decoration:none}ul.hook-list li.enabled a{color:#000}ul.hook-list li.selected a{color:#fff}#repo-settings .usage-bar{padding-left:0;padding-right:0}.repo-settings-content{position:relative;float:right;width:685px}.repo-settings-content .fieldgroup .fields{padding:0;background:none}.github-repository-module .github-repository-header{border-left:1px solid #dedede;border-right:1px solid #dedede;background-color:#fbfbfb;padding:10px;margin:0;font-weight:normal}.github-repository-module .github-repository-header.no-languages{border-top:1px solid #dedede;border-top-right-radius:3px;border-top-left-radius:3px}.github-repository-module .github-repository{font-weight:bold}.github-repository-module .github-repository-owner-gravatar{width:24px;height:24px;border-radius:2px;vertical-align:middle;margin-right:5px}.github-repository-module .github-repository-full{background-color:#fff;border:1px solid #d8d8d8;padding:10px;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.github-repository-module .github-repository-description{margin:0 0 10px}.github-repository-module .github-repository-meta{margin:0;padding:0;list-style-type:none}.github-repository-module .github-repository-meta-entry{display:inline-block;margin-right:20px}.github-repository-module .github-repository-meta-entry a,.github-repository-module .github-repository-meta-entry a:hover{color:#999;cursor:pointer;text-decoration:none}.github-repository-module .github-repository-meta-entry a .octicon{color:#ccc}.github-repository-module .github-repository-meta-entry a.is-starred .octicon{color:#E9DBA5}.github-repository-module .github-repository-meta-entry a b{color:#333}.github-repository-module .github-repository-lang-stats-graph{overflow:hidden;border-top-right-radius:3px;border-top-left-radius:3px;background-color:#999;height:10px}.github-repository-module .github-repository-lang-stats-graph .language-color{height:10px;float:left;text-indent:-10000px}.timeout{margin:20px 0;width:auto;height:300px;padding:0;border:none;background-color:transparent}.timeout h3{padding-top:100px;color:#999}.repo-container{min-height:345px}@-webkit-keyframes mini-nav-pulse{0%{-webkit-transform:scale(0.9)}25%{-webkit-transform:scale(1)}70%{-webkit-transform:scale(1.1);opacity:1.0}100%{-webkit-transform:scale(1);opacity:0}}@-moz-keyframes mini-nav-pulse{0%{-moz-transform:scale(0.9)}25%{-moz-transform:scale(1)}70%{-moz-transform:scale(1.1);opacity:1.0}100%{-moz-transform:scale(1);opacity:0}}@keyframes mini-nav-pulse{0%{transform:scale(0.9)}25%{transform:scale(1)}70%{transform:scale(1.1);opacity:1.0}100%{transform:scale(1);opacity:0}}@-webkit-keyframes mini-nav-loader{0%{opacity:0}90%{opacity:0}100%{opacity:1.0}}@-moz-keyframes mini-nav-loader{0%{opacity:0}90%{opacity:0}100%{opacity:1.0}}@keyframes mini-nav-loader{0%{opacity:0}90%{opacity:0}100%{opacity:1.0}}.repo-nav-contents{box-shadow:inset 1px 0 0 #eee;background-image:-webkit-linear-gradient(left, #f6f6f6 0%, #fff 8px);background-image:-moz-linear-gradient(left, #f6f6f6 0%, #fff 8px);background-image:linear-gradient(to right, #f6f6f6 0%, #fff 8px);padding:12px 0 15px;margin:0 0 10px;position:relative}.repo-nav-contents li{list-style-type:none}.repo-nav-contents:before,.repo-nav-contents:after{content:"";position:absolute;height:15px;width:100%;left:0}.repo-nav-contents:before{background-image:-webkit-linear-gradient(top, #fff, rgba(255,255,255,0));background-image:-moz-linear-gradient(top, #fff, rgba(255,255,255,0));background-image:linear-gradient(to bottom, #fff, rgba(255,255,255,0));top:0}.repo-nav-contents:after{background-image:-webkit-linear-gradient(bottom, #fff, rgba(255,255,255,0));background-image:-moz-linear-gradient(bottom, #fff, rgba(255,255,255,0));background-image:linear-gradient(to top, #fff, rgba(255,255,255,0));bottom:0}.repo-menu a{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;padding:8px 10px;margin:5px 0;display:block;text-shadow:0 1px 0 #fff;text-decoration:none;border:1px solid transparent;outline:0}.repo-menu a:focus,.repo-menu a:hover{box-shadow:inset 2px 0 0 #ccc}.repo-menu a.selected{background:#fff;box-shadow:1px 1px 3px rgba(0,0,0,0.05);border:1px solid #eee;border-left:1px solid transparent;color:#333333;font-weight:bold;position:relative}.repo-menu a.selected:after{content:"";position:absolute;width:3px;top:-1px;bottom:-1px;right:-1px;background-color:#ba5d0f;background-image:-moz-linear-gradient(#d26911, #ba5d0f);background-image:-webkit-linear-gradient(#d26911, #ba5d0f);background-image:linear-gradient(#d26911, #ba5d0f);background-repeat:repeat-x;box-shadow:inset -1px -1px 0 rgba(0,0,0,0.1);border-radius:0 2px 2px 0}.repo-menu a .counter{position:absolute;top:8px;right:0;padding:2px 5px;font-size:11px;font-weight:bold;color:#999;background:#eee;border-radius:2px;box-shadow:inset 0 -1px 0 #e3e3e3}.repo-menu a .octicon{left:-1px;color:#999999;transition:color 0.25s ease-in;-webkit-transition:color 0.25s ease-in 0;width:16px;text-align:center}.repo-menu a .mini-loader{display:none;position:absolute;top:9px;left:9px}.repo-menu a.is-loading .mini-loader{display:inline-block;-webkit-animation-duration:0.4s;-moz-animation-duration:0.4s;animation-duration:0.4s;-webkit-animation-fill-mode:forwards;-moz-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-name:mini-nav-loader;-moz-animation-name:mini-nav-loader;animation-name:mini-nav-loader}.repo-menu a.is-loading .octicon{-webkit-animation-duration:0.3s;-moz-animation-duration:0.3s;animation-duration:0.3s;-webkit-animation-fill-mode:forwards;-moz-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-name:mini-nav-pulse;-moz-animation-name:mini-nav-pulse;animation-name:mini-nav-pulse}.repo-menu a:hover .octicon{color:#333333}.repo-menu a.selected .octicon{color:#333333}.repo-menu a .counter{display:none}.repo-menu a .full-word{display:none}.with-full-navigation .repo-menu a .counter{display:block}.with-full-navigation .repo-menu a .full-word{display:inline-block;width:128px;vertical-align:top}.only-with-full-nav{display:none}.with-full-navigation .only-with-full-nav{display:block}.repo-menu-separator{position:relative;display:block;margin:8px 0 6px;height:5px;background-image:-webkit-radial-gradient(left top, farthest-side, #f4f4f4, rgba(244,244,244,0));background-image:-moz-radial-gradient(left top, farthest-side, #f4f4f4, rgba(244,244,244,0));background-image:radial-gradient(farthest-side at left top, #f4f4f4, rgba(244,244,244,0));margin-left:1px}.repo-menu-separator:before{width:100%;position:absolute;height:1px;content:"";background-image:-webkit-linear-gradient(left, #eee 70%, #fff 100%);background-image:-moz-linear-gradient(left, #eee 70%, #fff 100%);background-image:linear-gradient(to right, #eee 70%, #fff 100%);top:0px;border-top:1px solid #eee\9}.new-repository-collaboration{margin:5px 0 10px 0;padding:5px;background:#fffef1;border:1px solid #e5e2c8;border-radius:4px}.new-repository-collaboration label{display:inline-block;margin:0px;color:#666666}.new-repository-collaboration input{padding:3px}.new-repository-collaboration #member-list{margin-top:10px}.new-repository-collaboration #member-list:empty{margin-top:0}.new-repository-collaboration #member-list .avatar{float:left}.new-repository-collaboration #member-list .select-menu{float:right}.new-repository-collaboration #member-list .button.danger{float:right}.new-repository-collaboration #member-list p{margin:0px}.repository-with-sidebar:before,.repository-with-sidebar:after{content:" ";display:table}.repository-with-sidebar:after{clear:both}.repository-with-sidebar .repository-sidebar{float:right;width:38px;overflow:hidden;transition:width 0.1s ease-in-out}.repository-with-sidebar .repository-sidebar .menu-container{margin-bottom:10px;-moz-box-sizing:border-box;box-sizing:border-box;width:170px}.repository-with-sidebar .repository-sidebar .sidebar-button{margin:0 0 10px 0;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;text-align:center}.repository-with-sidebar .repository-sidebar h3{margin:10px 0 5px 0;font-size:11px;font-weight:normal;color:#999}.repository-with-sidebar .repository-sidebar h3>strong{font-weight:bold;color:#000}.repository-with-sidebar .repository-sidebar .clone-url{display:none;overflow:hidden;margin-top:-5px}.repository-with-sidebar .repository-sidebar .clone-url.open{display:block}.repository-with-sidebar .repository-sidebar .clone-url-box{display:table;-moz-box-sizing:border-box;box-sizing:border-box;border-collapse:separate}.repository-with-sidebar .repository-sidebar input.clone{display:table-cell;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;white-space:nowrap;min-height:26px;padding:4px 5px;font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:11px;color:#999;border-top-right-radius:0;border-bottom-right-radius:0}.repository-with-sidebar .repository-sidebar .url-box-clippy{display:table-cell;-moz-box-sizing:border-box;box-sizing:border-box;width:1%}.repository-with-sidebar .repository-sidebar .clone-options{margin:8px 0 15px 0;font-size:11px;color:#666}.repository-with-sidebar .repository-sidebar .clone-options .octicon-question{position:relative;bottom:1px;font-size:11px;cursor:pointer;color:#000}.repository-with-sidebar .repository-content{float:left;width:920px}.repository-with-sidebar.with-full-navigation .repository-content{width:790px}.repository-with-sidebar.with-full-navigation .repository-sidebar{width:170px}.overall-summary{margin-bottom:0;border-radius:3px 3px 0 0;border-bottom:none;position:relative;box-shadow:0 1px 0 rgba(0,0,0,0.1)}.overall-summary.without-lang-stats{border-radius:3px;border-bottom:1px solid #ddd;box-shadow:none}.overall-summary .numbers-summary a,.overall-summary .numbers-summary span.nolink{display:block;padding:10px 0;color:#999;transition:color 0.1s ease-in;-webkit-transition:color 0.1s ease-in 0;text-decoration:none}.overall-summary .numbers-summary li{padding:0;white-space:nowrap;list-style-type:none;display:table-cell;margin:0;width:1%;text-align:center;color:#999}.overall-summary .numbers-summary li a:hover{color:#4183c4}.overall-summary .numbers-summary li a:hover .num{color:#4183c4;transition:color 0.1s ease-in;-webkit-transition:color 0.1s ease-in 0}.overall-summary .numbers-summary li a:hover .num .octicon{color:#4183c4;opacity:0.4}.overall-summary .numbers-summary li .num{display:inline;padding:0;font-size:13px;font-weight:bold;color:#000}.overall-summary .numbers-summary li .num .octicon{color:#ccc}.repository-meta{margin:0 0 13px 0}.repository-meta:before,.repository-meta:after{content:" ";display:table}.repository-meta:after{clear:both}.repository-meta p{margin:0}.repository-meta .repository-description{display:inline;font-size:16px;color:#666}.repository-meta .repository-description>p{display:inline}.repository-meta .repository-website{display:inline-block;font-size:16px}.repository-meta .edit-link{font-size:16px;color:#999}.repository-meta .edit-link a{color:#999}.repository-meta .edit-repository-meta{display:none;margin-bottom:5px}.repository-meta .edit-repository-meta .description-field input,.repository-meta .edit-repository-meta .website-field input{padding:7px 8px 8px;font-family:Helvetica, arial, freesans, clean, sans-serif;font-size:14px;color:#444;border-radius:4px}.repository-meta .edit-repository-meta .description-field input{width:380px}.repository-meta .edit-repository-meta .website-field input{width:270px}.repository-meta .edit-repository-meta .field{display:inline-block;margin-right:5px}.repository-meta .edit-repository-meta label{display:block;font-weight:bold;color:#333}.repository-meta.open .repository-description,.repository-meta.open .repository-website,.repository-meta.open .edit-link{display:none}.repository-meta.open .edit-repository-meta{display:block}.file-navigation.in-mid-page{margin-top:10px}.file-navigation .select-menu{display:inline-block;margin-right:5px}.file-navigation .breadcrumb{position:relative;top:2px;margin:0;display:inline-block}.file-navigation .pull-request-link{position:relative;top:1px;display:inline-block;margin-right:5px;font-size:13px;font-weight:bold;padding:0 8px 0;height:24px;line-height:24px;border:1px solid rgba(65,131,196,0.5);border-radius:3px}.file-navigation .pull-request-link:hover{background:#4183c4;border-color:#4183c4;color:#fff;text-decoration:none}.minibutton.compact .octicon{margin-right:2px}.files-bubble{margin:10px 0}table.files{-moz-box-sizing:border-box;box-sizing:border-box;width:100%;border:1px solid #d8d8d8;border-top:none;border-radius:3px;background:#f8f8f8}table.files td{padding:7px 3px;border-top:1px solid #eee}table.files td.icon{width:17px;padding-left:10px;padding-right:2px;color:#777}table.files td.icon .octicon-file-directory{color:#80A6CD}table.files td.icon .spinner{display:none;position:relative;top:3px;margin-top:-2px}table.files td.content .css-truncate{max-width:180px}table.files td.message{padding-left:10px;height:20px;overflow:hidden;color:#888}table.files td.message a{color:#888}table.files td.message a:hover{color:#4183c4}table.files td.message .css-truncate{max-width:450px}table.files td.age{padding-right:10px;text-align:right;white-space:nowrap;color:#888}table.files td.age .css-truncate{max-width:100px}table.files tr.is-loading td.icon .octicon{display:none}table.files tr.is-loading td.icon .spinner{display:inline-block}table.files tr.up-tree{border-bottom:1px solid #eee}table.files tbody tr:first-child td{border-top:none}.branch-infobar{padding:8px 8px 7px 8px;font-size:11px;font-weight:bold;color:#999;background:#FAFAFA;border:1px solid #ccc;border-top-right-radius:3px;border-top-left-radius:3px}.branch-infobar p{float:left;margin:0}.branch-infobar .lightweight-actions{float:right;list-style-type:none}.branch-infobar .lightweight-actions>li{display:inline-block;margin:0 0 0 10px}.branch-infobar .lightweight-actions>li a{color:#999;text-decoration:none}.branch-infobar .lightweight-actions>li a:hover{color:#333}.branch-infobar .lightweight-actions>li .octicon{font-size:14px;color:#bbb}.branch-infobar+.commit-tease{border-top:none;border-radius:0}.blob-error{margin-top:5px;padding:15px;color:#666;background-image:linear-gradient(#fafafa, #f1f1f1);background-repeat:repeat-x;border:1px solid #ddd;border-radius:3px}.js-info-carrier{display:none}.url-box{width:100%;margin-top:10px;margin-left:-10px;padding:10px 10px 0;border-top:1px solid #ddd;height:26px}.no-desc.not-editable .url-box{margin-top:0;padding-top:0;border-top:0}.wiki-git-access .url-box{margin-left:0;border:none;padding:0}ul.native-clones{float:left;margin:0 10px 0 0}.wiki-git-access ul.native-clones{display:none}ul.native-clones li{margin:0;list-style-type:none;display:inline-block;margin-left:5px}ul.native-clones li:first-child{margin-left:0}.clone-urls{display:table;float:left;width:585px}.clone-urls-windows{width:550px}.clone-url-button{display:table-cell;width:1%;vertical-align:top}.clone-url-button:first-child a{border-top-left-radius:3px;border-bottom-left-radius:3px}.clone-url-button>a{position:relative;display:block;padding:0 9px;margin-right:-1px;font-size:11px;font-weight:bold;line-height:24px;color:#333;text-decoration:none;text-shadow:0 1px 0 #fff;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #ccc;white-space:nowrap;cursor:pointer}.clone-url-button>a:hover,.clone-url-button>a:active{z-index:3;color:#fff;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#3072b3;background-image:-moz-linear-gradient(#599bcd, #3072b3);background-image:-webkit-linear-gradient(#599bcd, #3072b3);background-image:linear-gradient(#599bcd, #3072b3);background-repeat:repeat-x;border-color:#2a65a0}.clone-url-button>a:active{background-color:#3072b3;background-image:none;border-color:#25588c;box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.clone-url-button+.clone-url-button>a{box-shadow:inset 1px 0 0 #fff}.clone-url-button+.clone-url-button>a:hover{box-shadow:none}.clone-url-button+.clone-url-button>a:active{box-shadow:inset 0 3px 5px rgba(0,0,0,0.15)}.clone-url-button.selected>a,.clone-url-button.selected>a:hover{z-index:2;color:#333;text-shadow:0 1px 0 rgba(255,255,255,0.6);border-color:#bbb;background-image:none;background-color:#ccc;background-color:#d5d5d5;background-image:-moz-linear-gradient(#ccc, #d5d5d5);background-image:-webkit-linear-gradient(#ccc, #d5d5d5);background-image:linear-gradient(#ccc, #d5d5d5);background-repeat:repeat-x;box-shadow:inset 0 2px 3px rgba(0,0,0,0.075)}.clone-url{display:table-cell;vertical-align:top}input.url-field{position:relative;width:100%;min-height:26px;padding:0 5px;font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:12px;border-radius:0}input.url-field:focus{z-index:2}.url-box p{float:left;margin:0 0 0 5px;height:26px;line-height:26px;font-size:11px;color:#666}.url-box p strong{color:#000}.url-box-clippy{border-radius:0 3px 3px 0;border-left:0;margin-left:0 !important}.pagehead.repohead .select-menu-button.with-count{float:none}.pagehead.repohead .select-menu .social-count{float:right}.context-loader-container .large-format-loader{position:absolute;top:0;left:0;bottom:0;right:0;padding-top:190px;background:rgba(255,255,255,0.8);z-index:9999;text-align:center;color:#999999}.settings-content{position:relative;float:right;width:715px}.pagehead.settings-area{border-bottom:1px solid #eee}#repo-settings .settings-content{width:100%}.settings-nav{width:240px;-moz-box-sizing:border-box;box-sizing:border-box}.usage-bar{padding:8px 10px}.usage-bar.alert{background:#ffe9e9}.usage-bar.alert dt{color:#700}.usage-bar dt.numbers{float:right}.usage-bar dt{margin:0 0 5px 0;font-weight:bold;font-size:11px;text-transform:uppercase;color:#777;text-shadow:0 1px 0 rgba(255,255,255,0.3)}.usage-bar dt strong{float:right;color:#999}.usage-bar dd.bar span{text-indent:-9999px}.usage-bar dd{background-color:#f1f1f1;background-image:-moz-linear-gradient(#dadada, #f1f1f1);background-image:-webkit-linear-gradient(#dadada, #f1f1f1);background-image:linear-gradient(#dadada, #f1f1f1);background-repeat:repeat-x;display:block;margin:0 0 10px 0;border-radius:5px;border:1px solid #ccc;box-shadow:0 1px 0 #fff}.usage-bar dd:last-child{margin:none}.usage-bar dd span{background-color:#63ae26;background-image:-moz-linear-gradient(#81c54a, #63ae26);background-image:-webkit-linear-gradient(#81c54a, #63ae26);background-image:linear-gradient(#81c54a, #63ae26);background-repeat:repeat-x;box-shadow:inset 0 1px 0 rgba(255,255,255,0.4);display:block;border-radius:5px;height:5px}.usage-bar dd span.danger{background-color:#edc900;background-image:-moz-linear-gradient(#f6df60, #edc900);background-image:-webkit-linear-gradient(#f6df60, #edc900);background-image:linear-gradient(#f6df60, #edc900);background-repeat:repeat-x}.usage-bar dd span.maxed{background-color:#660000;background-image:-moz-linear-gradient(#900, #600);background-image:-webkit-linear-gradient(#900, #600);background-image:linear-gradient(#900, #600);background-repeat:repeat-x}.profile-photo{margin:10px 0 0 0}.profile-photo p{float:left;margin-top:7px}.profile-photo img{float:left;margin:0 10px 0 0;border-radius:3px}.app-owner{margin:10px 0 -10px 0}.settings-form dl.form input{width:394px;color:#999}.settings-form p.checkbox{margin:0;padding:0}dl.form dd textarea.jobs-profile{height:50px;padding:5px}.add-emails-form{background:#fff;border:none}.add-emails-form input{border:1p}dl.new-email-form{width:100%;padding:10px;margin:0 0 0 -10px;border-top:1px solid #E5E5E5}span.label.default{margin-left:4px;padding:4px 6px;background-color:#6cc644;color:#fff;border-radius:4px}span.label.visibility{margin-left:4px;padding:4px 6px;background-color:#999999;color:#fff;border-radius:4px}.settings-email .public.label{display:inline}.settings-email .private.label{display:none}.settings-email.private .public.label{display:none}.settings-email.private .private.label{display:inline}span.email-actions{float:right}span.email-actions>span,span.email-actions .minibutton{float:left}span.email-actions span.label{font-size:13px;color:#999;padding:0 10px}span.email-actions .octicon-alert{color:#ca5633}.user-emails .confirmed-email{position:relative;float:right;top:4px;color:#6cc644}.boxed-group.flush .settings-repos>li{margin:0;padding:5px 10px;border:0;border-bottom:1px solid #ddd;border-radius:0}.boxed-group.flush .settings-repos>li h3{margin:0}.boxed-group.flush .settings-repos>li h3 small{font-size:11px;color:#999}.boxed-group.flush .settings-repos>li .fork-flag{margin-top:0;margin-left:12px;margin-bottom:0;font-size:12px;color:#999}.boxed-group.flush .settings-repos>li .repo-stats{float:left;height:auto;margin:0;border-radius:0}.boxed-group.flush .settings-repos>li .repo-stats li{line-height:1}#ssh-help{float:right}#notification-center .overview{padding:0 10px 10px 10px;border-bottom:1px solid #ddd}#notification-center .notification-settings{margin:0 10px}.settings-content .notifications td{padding:5px 10px}.settings-content .notifications th{padding:10px 10px 5px 10px}#payment-history{width:100%}#payment-history th{text-align:left;padding:5px 10px;background:#f8f8f8;border-bottom:1px solid #ccc}#payment-history td{padding:5px 10px;border-bottom:1px solid #dadada}#payment-history tr:last-child td{border:none}#payment-history tr.failed td{background:#faf6f6;color:#900}#payment-history td.total{color:#090;font-weight:bold}#payment-history tr.failed td.total{font-weight:bold;text-transform:uppercase}#payments p{margin:0;padding:10px}.oauth-stats p.user-count{float:left;margin:12px 0 0 0;font-size:36px;color:#999;font-weight:300}.oauth-stats p.user-count strong{color:#333;font-weight:bold}.oauth-stats dl.keys{float:right;margin:0;text-align:right}.oauth-stats dl.keys dt{color:#999;font-weight:bold}.oauth-stats dl.keys dd{color:#333;font-family:Monaco, "Liberation Mono", Courier, monospace}.access-token .zeroclipboard-link,.access-token .css-truncate{display:inline-block}.access-token .token{max-width:320px;display:inline-block;font-size:14px;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.access-token .description{margin-left:5px}.access-token input[type="text"]{min-height:28px;font-size:12px;margin-left:10px;width:200px}.access-token button.save-note{float:none}.access-token .edit-note-container{display:inline}.access-token .edit-note-container .content{display:none}.access-token .edit-note-container a{font-size:12px}.access-token .edit-note-container .edit-note a{color:#777}.access-token .edit-note-container.open .token{max-width:200px}.access-token .edit-note-container.open .content{display:inline-block}.access-token .edit-note-container.open .add-note,.access-token .edit-note-container.open .edit-note,.access-token .edit-note-container.open .delete-note,.access-token .edit-note-container.open .description{display:none}.boxed-group.application-show-group .logo-upload{float:right;width:142px;background-color:#eee;position:relative}.boxed-group.application-show-group .logo-upload a.delete{position:absolute;right:0;padding:5px;display:none}.boxed-group.application-show-group .logo-upload a.delete:hover{color:#bd2c00}.boxed-group.application-show-group .logo-box{border:1px solid #ccc;border-top-left-radius:3px;border-top-right-radius:3px;height:140px}.boxed-group.application-show-group .logo-box img{height:140px;width:140px;border-radius:2px 2px 0 0;display:none}.boxed-group.application-show-group .logo-placeholder{height:140px;width:140px;color:#999;text-align:center;text-shadow:0 1px 0 #fff}.boxed-group.application-show-group .logo-placeholder span{margin:45px 0 0 0}.boxed-group.application-show-group .logo-placeholder p{margin:0;font-size:16px}.boxed-group.application-show-group .has-uploaded-logo .logo-placeholder,.boxed-group.application-show-group .has-uploaded-logo .or{display:none}.boxed-group.application-show-group .has-uploaded-logo:hover a.delete{display:block}.boxed-group.application-show-group .has-uploaded-logo .logo-box img{display:block}.boxed-group.application-show-group dl.form>dd input[type="text"].wide{width:460px}.boxed-group.application-show-group dl.form>dd input[type="textarea"].short{height:50px;min-height:50px}.boxed-group.application-show-group .errored .note{display:none}.boxed-group.application-show-group .drag-and-drop{padding:8px 5px 7px 5px;text-align:center}.boxed-group.application-show-group .drag-and-drop img{vertical-align:bottom;margin-bottom:1px}.boxed-group.application-show-group .drag-and-drop span{padding:0}.boxed-group.application-show-group .dragover .logo-box{box-shadow:#c9ff00 0 0 3px}.boxed-group.application-show-group .is-uploading .loading{display:block}.boxed-group.application-show-group .is-uploading .default{display:none}.boxed-group.application-show-group .is-failed .bad-request{display:block}.boxed-group.application-show-group .is-failed .default{display:none}.boxed-group.application-show-group .is-bad-file .bad-file{display:block}.boxed-group.application-show-group .is-bad-file .default{display:none}.boxed-group.application-show-group .is-too-big .file-too-big{display:block}.boxed-group.application-show-group .is-too-big .default{display:none}.boxed-group.application-show-group .default{display:block}.boxed-group p span{padding-left:5px}ul.security-history>li time{float:right;color:#999}table.security-history-detail{width:100%;font-size:12px}table.security-history-detail td{max-width:200px;word-wrap:break-word}.settings-email>.email-actions>.settings-remove-email{display:block}.settings-email>.email-actions>.settings-disabled-remove-email{display:none}.settings-email:only-child>.email-actions>.settings-remove-email{display:none}.settings-email:only-child>.email-actions>.settings-disabled-remove-email{display:block}#unsubscribe-from-newsletter .supportocat{float:left}#unsubscribe-from-newsletter .message{position:absolute;left:350px;top:50px}#unsubscribe-from-newsletter .message p{font-size:200%}.two-factor-intro{width:675px;margin:40px auto 0}.two-factor-intro #changing-2fa-warning p{display:inline;padding-left:10px}.two-factor-intro .two-factor-graphic{margin:20px 0 20px 0}.two-factor-intro .two-factor-explain{margin:0 0 40px 0;padding:0;font-size:13px;list-style:none}.two-factor-intro .two-factor-explain li{float:left;margin:0;padding:0}.two-factor-intro .two-factor-explain .step-one{width:185px;margin-right:36px}.two-factor-intro .two-factor-explain .step-two{width:230px;margin-right:42px}.two-factor-intro .two-factor-explain .step-three{width:180px}.two-factor-graphic{background-image:url("/images/modules/settings/2fa_guide.png?9891ebdc");background-repeat:no-repeat;width:675px;height:135px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){.two-factor-graphic{background-image:url("/images/modules/settings/2fa_guide@2x.png?231e8662");background-size:675px 135px}}.markdown-body .sms-or-app{display:table;overflow:hidden;width:100%;margin:20px 0 0 0;padding:30px 0 0 0}.markdown-body .sms-or-app li{display:table-cell;padding:0}.markdown-body .sms-or-app li:first-child{padding-right:20px}.markdown-body .sms-or-app li:last-child{padding-left:20px}.markdown-body .sms-or-app li .button{display:block;text-align:center;margin:0 0 10px 0;padding-top:12px;padding-bottom:12px;font-size:15px;height:100%;width:100%}.markdown-body .sms-or-app strong{display:block}.two-factor-setup-container{width:600px;margin:0 auto}.two-factor-setup-container .form label{font-style:normal}.two-factor-setup-container .form dd{margin:0;padding:0}.two-factor-setup-container .octicon-alert{color:#bd2c00}.two-factor-setup-container .error-icon{position:relative;left:5px;top:2px;color:#bd2c00}.two-factor-setup-container .sent-message{position:relative;left:5px;top:2px;color:#6cc644}.two-factor-setup-container .select-menu{float:left}.two-factor-setup-container .select-menu .minibutton{padding-top:4px;padding-bottom:4px;margin-right:5px}.two-factor-setup-container .select-menu .minibutton input[type="radio"],.two-factor-setup-container .select-menu .minibutton .country{display:none}.two-factor-setup-container .select-menu .minibutton .country-code{width:auto}.two-factor-setup-container .select-menu .select-menu-button:before{top:14px}.two-factor-setup-container .select-menu .country-code{display:inline-block;margin-right:8px;width:35px}.two-factor-setup-container-sms,.two-factor-toggle{margin-top:40px}.two-factor-step-container{margin:0 0 20px 0;font-size:86.6667%}.two-factor-step-container .sms-form .form{margin-left:15px}.two-factor-step-container .form label{font-color:#777}.two-factor-step-container:last-of-type{margin-bottom:0;padding-bottom:0;border-bottom:none}.two-factor-step-container h4{margin:0;font-size:13px}.two-factor-step-container p:last-child{margin-bottom:0}.markdown-body .two-factor-recovery-code-list{margin:0;padding:0}.markdown-body .two-factor-recovery-code-list li{list-style:none}.markdown-body .two-factor-recovery-code-list .octicon{color:#999}.markdown-body .two-factor-recovery-code-list .octicon-file-text{position:relative;top:-1px}.markdown-body .two-factor-recovery-code-list .text-file{padding-left:3px}.two-factor-sms-configuration .select-menu{float:left}.two-factor-sms-configuration .select-menu .minibutton{padding-top:4px;padding-bottom:4px;margin-right:5px}.two-factor-sms-configuration .select-menu .minibutton input[type="radio"],.two-factor-sms-configuration .select-menu .minibutton .country{display:none}.two-factor-sms-configuration .select-menu .minibutton .country-code{width:auto}.two-factor-sms-configuration .select-menu .select-menu-button:before{top:14px}.two-factor-sms-configuration .select-menu .country-code{display:inline-block;margin-right:8px;width:35px}.two-factor-sms-configuration .two-factor-code label{margin:0 0 0.2em 0;font-weight:bold}.two-factor-sms-configuration .two-factor-code input[type=number]{padding:6px}.two-factor-toggle{margin-top:40px}#facebox .backup-list{margin:0;padding:10px;border:1px solid #dbdbdb;border-radius:3px;background:#fafafa;font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:14px;line-height:1.4;text-align:left;box-shadow:inset 0 0 8px #eee}.error-icon,.spinner,.sent-message,.sms-error-message,.fallback-error-message,.fallback-message,#text-code{display:none}.is-sending .spinner,.is-setting .spinner{display:inline-block}.is-sent .sent-message{display:inline-block}.is-not-sent .sms-error-message{display:block}.is-not-sent .error-icon{display:inline-block}.is-set .fallback-message{display:block;padding-top:10px}.is-not-set .fallback-error-message{display:block}.is-not-set .error-icon{display:inline-block}#configure-sms,#configure-app{display:none}.two-factor-secret{font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:13px}.markdown-body .qr-code-table,.qr-code-table{width:auto;float:right;margin:0 0 0 40px;border:1px solid #ddd}.markdown-body .qr-code-table tr,.qr-code-table tr{background:transparent;border:0}.markdown-body .qr-code-table th,.markdown-body .qr-code-table td,.qr-code-table th,.qr-code-table td{border:none;padding:0}.markdown-body .qr-code-table td,.qr-code-table td{width:3px;height:3px}.markdown-body .qr-code-table .black,.qr-code-table .black{background:#000}.markdown-body .qr-code-table .white,.qr-code-table .white{background:#fff}.markdown-body .two-factor-actions{clear:both;padding:20px 0 0 0;margin:20px 0 0 0;border-top:1px solid #eaeaea;font-size:13px}.markdown-body .two-factor-actions ul{width:600px;margin:0;padding:0}.markdown-body .two-factor-actions li{list-style:none;display:inline-block;margin-right:10px}.billing-managers .boxed-group-list>li:hover{background:inherit}.billing-managers .member-adder{background:#fff;padding-top:5px}.billing-managers .member-adder .boxed-group-list>li:hover{background:#4183c4}.billing-managers .member-adder .boxed-group-list>li{margin-left:0;width:inherit}.billing-managers .billing-manager-form{display:none}.billing-managers .billing-manager-form .active{display:inherit}.billing-managers .member-adder .minibutton{margin-top:10px}.billing-managers .octicon-alert{color:#bd2c00}.orgs-settings{margin-bottom:15px}.confirmation-phrase{font-weight:normal;font-style:italic}.do-not-copy-me{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}li.session-device{position:relative;line-height:18px;padding:15px;background-color:#fafafa;color:#999}li.session-device .button{float:right;margin-top:4px}li.session-device .session-state-indicator{float:left;width:8px;height:8px;margin-top:10px;border-radius:5px}li.session-device .session-state-indicator.active{background-color:#6cc644;box-shadow:0 0 10px rgba(108,198,68,0.5)}li.session-device .session-state-indicator.revoked{background-color:transparent;box-shadow:0 1px 0 #fff;background-color:#cccccc;background-image:-moz-linear-gradient(#aaa, #ccc);background-image:-webkit-linear-gradient(#aaa, #ccc);background-image:linear-gradient(#aaa, #ccc);background-repeat:repeat-x}li.session-device .mega-octicon{float:left;width:32px;margin-top:1px;margin-left:15px;text-align:center;color:#bbb}li.session-device .sessions-more-info{position:relative;display:none;margin-top:10px}li.session-device.session-current{background-color:#fff}li.session-device.session-current .session-last-accessed{color:#777}li.session-device.session-current .sessions-more-info{color:#777}li.session-device.session-current .sessions-more-info:after{border-top-color:#fff}li.session-device.session-current .mega-octicon{color:#777}.session-details{position:relative;width:350px;margin-left:70px}.session-details:hover .octicon{color:#4183c4;cursor:pointer}.session-details.open .sessions-more-info{display:block}.session-title{display:block}.session-title .session-ip{font-weight:normal;color:#777}.stars-browser .explore-main{margin-right:220px}.stars-browser .explore-aside{width:200px}.stars-browser .sort-bar .sort-form{margin-top:7px}.stars-browser .sort-bar .filter_input{width:400px}.stars-browser .jump-to-users{overflow:hidden}.stars-browser .jump-to-users a{float:left}.stars-browser .jump-to-users a:nth-child(6) img,.stars-browser .jump-to-users a:nth-child(12) img{margin-right:0}.stars-browser .jump-to-users img{width:27px;height:27px;border:1px solid #ddd;display:block;margin-right:5px;margin-bottom:5px}.starred-repo{list-style-type:none;padding:15px 0 0 52px;border-bottom:1px solid #eee}.starred-repo.navigation-focus{background:#fcfce2}.starred-repo:last-child{border-bottom:0;overflow:hidden}.starred-repo .mega-octicon{float:left;margin-top:3px;margin-left:-42px}.starred-repo .mega-octicon:before{color:#bbb}.starred-repo .octicon-lock::before{color:#e9dba5}.starred-repo .starring-container{float:right;margin-right:10px}.starred-repo h3{margin:0;display:inline-block}.starred-repo .sort-info{display:inline-block;font-size:11px;color:#999999}.starred-repo p.description{color:#666;margin-top:0}.stars-header img{width:32px;height:32px}.markdown-body .task-list{list-style-type:none;padding-left:10px}.task-list-item{padding-left:20px}.task-list-item label{font-weight:normal}.task-list-item.enabled label{cursor:pointer}.task-list-item+.task-list-item{margin-top:3px}.task-list-item-checkbox{float:left;margin-left:-20px;margin-top:4px}.orgs-next-container .team-header .team-avatar{margin-right:10px}.orgs-next-container .team-header .edit-team-description{display:none}.orgs-next-container .team-header.open .edit-team-description{display:block}.orgs-next-container .team-header.open .team-description{display:none}.orgs-next-container .team-actions{float:right}.orgs-next-container .team-actions a{margin-top:4px}.orgs-next-container .team-actions .select-menu-modal-holder{right:0}.orgs-next-container .team-description p{color:#666666;display:inline;font-size:16px;margin:0 0 10px 0}.orgs-next-container .team-description p.active{display:block}.orgs-next-container .team-description p a{color:#999999}.orgs-next-container .edit-team-description input[type="text"]{padding:7px 8px 8px;font-family:Helvetica, arial, freesans, clean, sans-serif;font-size:14px;color:#444;border-radius:4px;width:440px}.orgs-next-container .edit-team-description input[type="text"].active{display:inline-block}.orgs-next-container .team-name .text{display:inline-block}.orgs-next-container .team-name .text.active{display:none}.orgs-next-container .team-name .text:hover{background:#fffef1}.orgs-next-container .team-name input{display:none;font-size:26px;padding:0px;font-family:Helvetica, Arial, sans-serif;font-weight:bold;margin-top:-8px;margin-left:-2px;margin-bottom:-9px;width:70%}.orgs-next-container .team-name input.active{display:inline-block}.orgs-next-container .team-settings p{margin:0}.orgs-next-container .team-settings .select-menu-item-text{padding-top:7px}.tree-browser .actions{text-align:right;padding:0;padding-right:10px}.tree-browser .actions ul{display:inline-block;vertical-align:middle;font-size:13px;position:relative;top:2px}.tree-browser .actions li{list-style-type:none;float:left;margin:0 0 0 10px}.tree-browser .actions li .octicon{transition:all 0.15s ease-in;-webkit-transition:all 0.15s ease-in 0;text-decoration:none}.tree-browser .actions li:hover .octicon{color:#4183c4}.tree-browser .actions a{color:#666}.tree-browser{width:100%;margin:0;border-bottom:1px solid #cacaca;border-left:none;border-right:none}.tree-browser td{background:#f8f8f8;border-bottom:1px solid #eee;padding:7px 3px;color:#484848;vertical-align:middle;white-space:nowrap}.tree-browser td:first-child{border-left:1px solid #cacaca}.tree-browser td:last-child{border-right:1px solid #cacaca}.tree-browser img{vertical-align:text-bottom}.tree-browser tbody tr:last-child td{border-bottom:0}.tree-browser .tree-entries .message .error{display:none}.tree-browser .tree-entries.error .message .loading{display:none}.tree-browser .tree-entries.error .message .error{display:block}.tree-browser-wrapper{margin-bottom:30px}.tree-browser .history{float:right;padding-right:5px}.tree-browser tr.navigation-focus td{background:none;background-color:#fffeeb}.tree-browser td.icon{width:17px;padding-right:2px;padding-left:10px}.tree-browser .octicon-file-directory{color:#80a6cd}.tree-browser .octicon-file-submodule{color:#3cbf5e}.tree-browser .octicon-file-text{color:#777}.tree-browser .content{max-width:220px}.tree-browser .message{max-width:420px}.tree-browser .css-truncate-target{max-width:100%}.tree-browser td a.message{color:#484848}.tree-browser td span.ref{color:#aaa}.tree-browser.downloads td{vertical-align:top}.tree-browser.downloads td p{margin:0;padding:0}.tree-browser-result-template{display:none}.tree-browser-result .css-truncate-target{max-width:870px}.tree-browser-result mark{background-color:transparent;color:#4183C4;font-weight:bold}#files .file,.file-box{border:1px solid #ccc;margin-bottom:13px;position:relative}#files .file .meta,.file-box .meta{overflow:hidden;padding:5px 10px;font-size:12px;text-align:left;color:#555;text-shadow:0 1px 0 #fff;border-bottom:1px solid #d8d8d8;background-color:#eaeaea;background-image:-moz-linear-gradient(#fafafa, #eaeaea);background-image:-webkit-linear-gradient(#fafafa, #eaeaea);background-image:linear-gradient(#fafafa, #eaeaea);background-repeat:repeat-x;-moz-box-sizing:border-box;box-sizing:border-box}.file .meta ul.edit-preview-tabs{float:left;margin-left:11px;margin-top:4px}.file .edit-preview-tabs .minibutton{border-radius:0}.file .edit-preview-tabs li:first-child .minibutton{border-radius:3px 0 0 3px}.file .edit-preview-tabs li:last-child .minibutton{border-radius:0 3px 3px 0}.file .edit-preview-tabs li{list-style-type:none;float:left}#files .file .meta .info,.file-box .meta .info{float:left;height:33px;line-height:33px;font-family:Monaco, "Liberation Mono", Courier, monospace}#files .file .meta .info .css-truncate-target,.file-box .meta .info .css-truncate-target{max-width:600px}#files .file .meta .info span,.file-box .meta .info span{padding-left:9px;margin-left:5px;border-left:1px solid #c1c1c1;box-shadow:inset 1px 0 0 #fff}#files .file .meta .info span:first-child,#files .file .meta .info .icon+span,#files .file .meta .info .diffstat+span,.file-box .meta .info span:first-child,.file-box .meta .info .icon+span,.file-box .meta .info .diffstat+span{border-left:0 none;box-shadow:inset 0 0 0 transparent;margin-left:0;padding-left:0}#files .diffstat+.css-truncate-target{max-width:650px !important}#files .file .meta .info .minibutton.switcher span:first-child,.file-box .meta .info .minibutton.switcher span:first-child{padding-left:7px}#files .file .meta .info span.icon,#files .file .meta .info span.diffstat,.file-box .meta .info span.icon{line-height:0;display:inline-block;margin:5px 5px 0 0;padding:3px;background:#f7f7f7;border:1px solid #ccc;border-right-color:#e5e5e5;border-bottom-color:#e5e5e5;border-radius:3px}#files .file .meta .info span.icon .octicon-file-text,#files .file .meta .info span.diffstat .octicon-file-text,.file-box .meta .info span.icon .octicon-file-text{color:#aaa}#files .file .meta .info span.diffstat{padding:3px 6px 5px;line-height:1em;-moz-box-sizing:border-box;box-sizing:border-box}#files .file .meta .actions,.file-box .meta .actions{float:right;height:33px;line-height:33px}#files .file .meta .actions .show-inline-notes{display:none}#files .file.has-inline-notes .meta .actions .show-inline-notes{position:relative;display:block;float:left;margin-right:10px}#files .file.has-inline-notes .diffstat+.css-truncate-target{max-width:500px !important}#files .file tr.inline-comments{display:none}#files .file.show-inline-notes tr.inline-comments{display:table-row}tr.inline-comments .inline-comment-form,tr.inline-comments.show-inline-comment-form .show-inline-comment-form{display:none}.show-inline-comment-form{margin:10px}tr.inline-comments .show-inline-comment-form,tr.inline-comments.show-inline-comment-form .inline-comment-form{display:block}#files .file .meta .actions li,.file-box .meta .actions li{list-style-type:none;float:left;margin:0 0 0 7px}.file-box .meta .actions li.outdated-text{color:#BE2800;font-weight:bold}#files .file .meta .actions li:first-child,.file-box .meta .actions li:first-child{background:transparent;margin-left:0;padding-left:0}#files .file .meta .actions li code,.file-box .meta .actions li code{font-size:11px}#files .file .meta .actions li label input,.file-box .meta .actions li label input{position:relative;top:1px}#files .file .data.empty,.file-box .data.empty{padding:5px 10px;color:#777}#files .file .data.suppressed,#files .file.open .image{display:none}#files .file.open .data.suppressed{display:block}#files .image,.file-box .image{text-align:center;background-color:#ddd;padding:30px;position:relative}#files .file .image table,.file-box .image table{margin:0 auto}#files .file .image table td,.file-box .image table td{text-align:center;color:#888}#files .file .image .added-frame,.file-box .image .added-frame,#files .file .image .deleted-frame,.file-box .image .deleted-frame{border:1px solid #ddd;display:inline-block;line-height:0px;position:relative}#files .file .image .border-wrap,.file-box .image .border-wrap{background-color:#fff;border:1px solid #999;display:inline-block;line-height:0px;position:relative}#files .file .image .deleted-frame,.file-box .image .deleted-frame{background-color:#fff;border:1px solid #f77}#files .file .image .added-frame,.file-box .image .added-frame{border:1px solid #63c363}#files .file .image a,.file-box .image a{display:inline-block;line-height:0px}#files .file .image table td,.file-box .image table td{vertical-align:top;padding:0 5px}#files .file .image table td img,.file-box .image table td img{max-width:100%}#files .file .image img,.file-box .image img,#files .file .image canvas,.file-box .image canvas{background:url("/images/modules/commit/trans_bg.gif?faf4ca2c") right bottom #eee;max-width:600px;border:1px solid #fff}#files .file .image .view img,.file-box .image .view img,#files .file .image .view canvas,.file-box .image .view canvas{background:url("/images/modules/commit/trans_bg.gif?faf4ca2c") right bottom #eee;position:relative;top:0px;right:0px;max-width:inherit}#files .file .view-modes,.file-box .view-modes{font-size:12px;color:#333;background-color:#e8e8e8;background-image:-moz-linear-gradient(#fafafa, #e8e8e8);background-image:-webkit-linear-gradient(#fafafa, #e8e8e8);background-image:linear-gradient(#fafafa, #e8e8e8);background-repeat:repeat-x;text-shadow:1px 1px 0 rgba(255,255,255,0.5);overflow:hidden;text-align:center;position:absolute;width:100%;bottom:0px}#files .file .view-modes ul.view-modes-menu,.file-box .view-modes ul.view-modes-menu{display:inline-block;list-style-type:none;background-repeat:no-repeat;height:33px;position:relative;transition:background-position 0.5s ease-in;-webkit-transition:background-position 0.5s ease-in 0}#files .file .view-modes ul.view-modes-menu li,.file-box .view-modes ul.view-modes-menu li{display:inline-block;border-left:1px solid #c1c1c1;box-shadow:inset 1px 0 0 #fff;padding:0px 0px 0px 12px;margin:11px 10px 0 0;color:#777;cursor:pointer;height:12px;line-height:12px}#files .file .hidden,.file-box .hidden{display:none !important}#files .file .view-modes ul.view-modes-menu li:first-child,.file-box .view-modes ul.view-modes-menu li:first-child{border-left:0 none;box-shadow:inset 0 0 0 transparent}#files .file .view-modes ul.view-modes-menu li.active,.file-box .view-modes ul.view-modes-menu li.active{color:#333;cursor:default}#files .file .view-modes ul.view-modes-menu li.disabled:hover,.file-box .view-modes ul.view-modes-menu li.disabled:hover{text-decoration:none}#files .file .view-modes ul.view-modes-menu li.disabled,.file-box .view-modes ul.view-modes-menu li.disabled{color:#ccc;cursor:default}#files .file .view-modes ul.view-modes-menu li:hover,.file-box .view-modes ul.view-modes-menu li:hover{text-decoration:underline}#files .file .view-modes ul.view-modes-menu li.active:hover,.file-box .view-modes ul.view-modes-menu li.active:hover{text-decoration:none}#files .empty,.file-box .empty{background:none}#files .progress,.file-box .progress{margin:30px;z-index:101;position:relative}#files .progress h3,.file-box .progress h3{color:#555}#files .progress .progress-frame,.file-box .progress .progress-frame{display:block;height:15px;width:300px;background-color:#eee;border:1px solid #ccc;margin:0px auto;border-radius:10px;overflow:hidden}#files .progress .progress-bar,.file-box .progress .progress-bar{display:block;height:15px;width:5%;background-color:#f00;border-radius:10px;background-color:#4183c4;background-image:-moz-linear-gradient(#7db9e8, #4183c4);background-image:-webkit-linear-gradient(#7db9e8, #4183c4);background-image:linear-gradient(#7db9e8, #4183c4);background-repeat:repeat-x}#files .image .d-red{color:#F77}#files .image .a-green{color:#63c363}#files .image .view>span,.file-box .image .view>span{vertical-align:middle}#files .image .two-up,.file-box .image .two-up{display:block;letter-spacing:16px}#files .image .two-up .shell,.file-box .image .two-up .shell{display:inline-block;line-height:0px}#files .image .two-up .shell p,.file-box .image .two-up .shell p{letter-spacing:normal;font-size:12px;color:#999}#files .image .two-up .deleted,.file-box .image .two-up .deleted{display:inline-block}#files .image .two-up .added,.file-box .image .two-up .added{display:inline-block}#files .image .swipe.view{margin-top:-13px}#files .image .swipe .swipe-frame,.file-box .image .swipe .swipe-frame,#files .image .onion-skin .onion-skin-frame,.file-box .image .onion-skin .onion-skin-frame{display:block;margin:auto;position:relative}#files .image .swipe .deleted-frame,.file-box .image .swipe .deleted-frame,#files .image .swipe .swipe-shell,.file-box .image .swipe .swipe-shell{position:absolute;display:block;top:13px;right:7px}#files .image .swipe .swipe-shell,.file-box .image .swipe .swipe-shell{overflow:hidden;border-left:1px solid #999}#files .image .swipe .added-frame,.file-box .image .swipe .added-frame{display:block;position:absolute;top:0px;right:0px}#files .image .swipe .swipe-bar,.file-box .image .swipe .swipe-bar{display:block;height:100%;width:15px;z-index:100;position:absolute;cursor:pointer}#files .image .swipe .top-handle,.file-box .image .swipe .top-handle{display:block;height:14px;width:15px;position:absolute;top:0px;background:url("/images/modules/commit/swipemode_sprites.gif?e31d2506") 0 3px no-repeat}#files .image .swipe .bottom-handle,.file-box .image .swipe .bottom-handle{display:block;height:14px;width:15px;position:absolute;bottom:0px;background:url("/images/modules/commit/swipemode_sprites.gif?e31d2506") 0 -11px no-repeat}#files .image .swipe .swipe-bar:hover .top-handle,.file-box .image .swipe .swipe-bar:hover .top-handle{background-position:-15px 3px}#files .image .swipe .swipe-bar:hover .bottom-handle,.file-box .image .swipe .swipe-bar:hover .bottom-handle{background-position:-15px -11px}#files .image .onion-skin .deleted-frame,.file-box .image .onion-skin .deleted-frame,#files .image .onion-skin .added-frame,.file-box .image .onion-skin .added-frame{position:absolute;display:block;top:0px;left:0px}#files .image .onion-skin .controls,.file-box .image .onion-skin .controls{display:block;height:14px;width:300px;z-index:100;position:absolute;bottom:0px;left:50%;margin-left:-150px}#files .image .onion-skin .controls .transparent,.file-box .image .onion-skin .controls .transparent{display:block;position:absolute;top:2px;right:0px;height:10px;width:10px;background:url("/images/modules/commit/onion_skin_sprites.gif?671391be") -2px 0px no-repeat}#files .image .onion-skin .controls .opaque,.file-box .image .onion-skin .controls .opaque{display:block;position:absolute;top:2px;left:0px;height:10px;width:10px;background:url("/images/modules/commit/onion_skin_sprites.gif?671391be") -2px -10px no-repeat}#files .image .onion-skin .controls .drag-track,.file-box .image .onion-skin .controls .drag-track{display:block;position:absolute;left:12px;height:10px;width:276px;background:url("/images/modules/commit/onion_skin_sprites.gif?671391be") -4px -20px repeat-x}#files .image .onion-skin .controls .dragger,.file-box .image .onion-skin .controls .dragger{display:block;position:absolute;left:0px;top:0px;height:14px;width:14px;background:url("/images/modules/commit/onion_skin_sprites.gif?671391be") 0px -34px repeat-x;cursor:pointer}#files .image .onion-skin .controls .dragger:hover,.file-box .image .onion-skin .controls .dragger:hover{background-position:0px -48px}#files .image .difference .added-frame,.file-box .image .difference .added-frame{display:none}#files .image .difference .deleted-frame,.file-box .image .difference .deleted-frame{border-color:#999}.file-editor-textarea{padding:4px;width:908px;border:1px solid #eee;font-size:12px;font-family:Monaco, "Liberation Mono", Courier, monospace}.commit-message-summary-label,.commit-message-label{color:#666}.commit-message-summary,.commit-message{margin:5px 0 10px;width:100%;font-family:Monaco, "Liberation Mono", Courier, monospace;font-size:16px}.commit-message{min-height:100px}.too-long-message{display:none;color:#b44643;float:right;margin-bottom:-5px}.file-commit-form.is-too-long-error .too-long-message{display:block}.file-commit-form.is-too-long-error .commit-message-summary{color:#b44643}.check-for-fork{display:none}.check-for-fork img{vertical-align:text-bottom}.inline-review-comment,.file .highlight,.code-list-item .file-box,.blob-wrapper{overflow:auto;overflow-x:auto;overflow-y:hidden}.file-code{width:100%;background-color:#fff;border-collapse:separate}.file-diff-line,.file-code-lines{position:relative;text-shadow:0 1px 0 rgba(255,255,255,0.25)}.diff-line-num,.blob-line-nums{width:1%;padding-left:8px;padding-right:8px;font-family:Consolas, "Liberation Mono", Courier, monospace;line-height:18px;color:#aaa;color:rgba(0,0,0,0.3);vertical-align:top;text-align:right;border-right:1px solid #e5e5e5}.blob-line-nums a,.blob-line-nums span,.linkable-line-number a,.linkable-line-number span{cursor:pointer}.blob-line-nums{line-height:1;padding:5px 0}.blob-line-nums a,.blob-line-nums span{display:block;line-height:18px;padding:0 8px;color:inherit}.blob-line-nums a:hover{color:#4183c4}.blob-line-code .highlight{padding-top:5px;padding-bottom:5px;white-space:nowrap;line-height:18px}.blob-line-code .line{padding-left:10px}.diff-line-code{padding-left:10px;padding-right:10px;font-family:Consolas, "Liberation Mono", Courier, monospace;font-size:13px;color:#333;white-space:nowrap}.file-diff-line:hover .diff-line-code{background-color:#f8eec7}.file-diff-line:hover .diff-line-num{background-color:#f6e8b5;border-color:#f0db88}.gc .diff-line-code{color:#999;background-color:#f8f8ff}.gc .diff-line-num{background-color:#f3f3ff;border-color:#e4e4ff}.gi .diff-line-code{background-color:#dfd}.gi .diff-line-num{background-color:#ceffce;border-color:#b4e2b4}.gd .diff-line-code{background-color:#fdd}.gd .diff-line-num{background-color:#f7c8c8;border-color:#e9aeae}.expandable-line-num{text-align:center;padding:0}.expandable-line-num .diff-expander{cursor:pointer;width:auto;height:auto;display:block}.expandable-line-num .diff-expander .octicon{line-height:20px;margin-left:auto;margin-right:auto}.expandable-line-num .diff-expander:hover{color:#fff;text-shadow:none;border-color:#d1b753;background-color:#e6c856}.hide-line-numbers .expandable-line-num .diff-expander{display:none}.add-line-comment{position:absolute;left:0;width:25px;height:16px;margin-left:-25px;color:#4183C4;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.file-diff-line:hover .add-line-comment{opacity:1.0;filter:alpha(opacity=100)}input.tree-finder-input,input.tree-finder-input:focus{position:relative;top:1px;border:0;padding:0;outline:none;font-size:100%;box-shadow:none;min-height:0;height:22px;line-height:1px;vertical-align:top;-webkit-appearance:none}.tree-finder .results-list tr.navigation-focus td{background:#eee}.tree-finder .no-results th{text-align:center}.tree-finder tr td.icon{cursor:pointer}.tree-finder .tree-browser{border-top:1px solid #cacaca}.tree-finder .no-results{display:none}.tree-finder .filterable-empty+.no-results{display:block}.wiki-actions{float:right;padding:0;list-style-type:none}.wiki-actions li{float:left;margin-left:7px}#wiki-body .markdown-body{padding:0 30px;margin:0 -30px}#wiki-rightbar{background-color:#f7f7f7;border:1px solid #ddd;float:right;padding:10px;width:230px;border-radius:5px;-moz-box-sizing:border-box;box-sizing:border-box}#wiki-rightbar>*:first-child{margin-top:0}#wiki-rightbar ul,#wiki-rightbar ol{margin:5px 0 0 15px;padding:0}#wiki-rightbar ul li,#wiki-rightbar ol li{color:#333;font-size:12px;margin:0;padding:0;line-height:19px}#wiki-rightbar ul li a,#wiki-rightbar ol li a{font-weight:bold;text-shadow:0 1px 0 #fff}#wiki-rightbar ul{list-style-type:square}#wiki-rightbar p{font-size:12px;line-height:1.6}.has-rightbar #wiki-body,.has-rightbar #wiki-footer{margin-right:280px}#wiki-footer{clear:both;margin:20px 0 50px}#wiki-footer #gollum-footer-content{background-color:#f7f7f7;border:1px solid #ddd;font-size:12px;line-height:1.6;margin-top:18px;padding:12px;border-radius:5px}#wiki-footer #gollum-footer-content>*:first-child{margin-top:0}#wiki-footer #gollum-footer-content h3{font-size:14px;color:#333;margin:0;padding:0 0 2px;text-shadow:0 1px 0 #fff}#wiki-footer #gollum-footer-content p{margin:6px 0 0;padding:0}#wiki-footer #gollum-footer-content ul,#wiki-footer #gollum-footer-content ol{margin:6px 0 0 18px}#wiki-history{margin-top:14px}#wiki-history fieldset{border:0;margin:20px 0;padding:0}#wiki-history table,#wiki-history tbody{padding:0;margin:0;width:100%}#wiki-history table tr,#wiki-history tbody tr{padding:0;margin:0;background-color:#ebf2f6}#wiki-history table td,#wiki-history tbody td{border:1px solid #c0dce9;font-size:12px;margin:0;padding:3px 8px}#wiki-history table td.commit-name,#wiki-history tbody td.commit-name{border-left:0}#wiki-history table td.commit-name span.time-elapsed,#wiki-history tbody td.commit-name span.time-elapsed{color:#999}#wiki-history table td.commit-name a,#wiki-history tbody td.commit-name a{font-size:0.9em;font-family:Monaco, "Liberation Mono", Courier, monospace;padding:0 0.2em}#wiki-history table td.checkbox,#wiki-history tbody td.checkbox{min-width:24px;width:24px;padding:3px 0 2px 9px}#wiki-history table td.checkbox input,#wiki-history tbody td.checkbox input{cursor:pointer;display:block;margin:0;padding:0}#wiki-history table td.author,#wiki-history tbody td.author{width:20%}#wiki-history table td.author a,#wiki-history tbody td.author a{color:#000;font-weight:bold}#wiki-history table td.author span.username,#wiki-history tbody td.author span.username{display:block;padding-top:3px}#wiki-history table tr:nth-child(2n),#wiki-history table table tr.alt-row,#wiki-history tbody tr:nth-child(2n),#wiki-history tbody table tr.alt-row{background-color:#f3f7fa}#wiki-history table tr.selected,#wiki-history tbody tr.selected{background-color:#ffffea;z-index:100}#wiki-history table img,#wiki-history tbody img{background-color:#fff;border:1px solid #999;display:block;float:left;height:18px;overflow:hidden;margin:0 0.5em 0 0;width:18px;padding:2px}#wiki-wrapper.history #gollum-footer ul.actions li{margin:0 0.6em 0 0}#wiki-wrapper.results #results{border-bottom:1px solid #ccc;margin-bottom:2em;padding-bottom:2em}#wiki-wrapper .results #results ul{margin:2em 0 0 0;padding:0}#wiki-wrapper .results #results ul li{font-size:1.2em;line-height:1.6em;list-style-position:outside;padding:0.2em 0}#wiki-wrapper .results #results ul li span.count{color:#999}#wiki-wrapper .results #no-results{font-size:1.2em;line-height:1.6em;margin-top:2em}#wiki-wrapper .results #gollum-footer ul.actions li{margin:0 1em 0 0}#wiki-wrapper.compare #compare-content ul.actions li,#wiki-wrapper.compare #gollum-footer ul.actions li{margin-left:0;margin-right:0.6em}#wiki-wrapper.compare #compare-content ul.actions{margin-bottom:1.4em}#wiki-wrapper ul.actions{display:block;list-style-type:none;overflow:hidden;padding:0}#wiki-wrapper #files .file .data tr td.line_numbers{width:1%;font-size:12px} \ No newline at end of file diff --git a/public/css/style-ie.css b/public/css/style-ie.css new file mode 100644 index 0000000..588b1f2 --- /dev/null +++ b/public/css/style-ie.css @@ -0,0 +1,3 @@ +#nav { + padding-top: 18px; +} diff --git a/public/css/style.css b/public/css/style.css new file mode 100644 index 0000000..d9e1016 --- /dev/null +++ b/public/css/style.css @@ -0,0 +1,220 @@ +body { + margin: 0; + padding: 0; + font-size: 12px; + font-family: Arial, Helvetica, sans-serif; + line-height: 22px; +} + +#header { + height: 60px; + min-width: 1150px; + background-color: rgb(248, 248, 248); + background-image: url("../img/hw_000469.jpg"); + border-bottom: 1px solid rgb(255, 255, 255); + background-repeat: repeat-x; + border-bottom-color: rgb(255, 255, 255); + border-bottom-style: solid; + border-bottom-width: 1px; +} + +#bound { + overflow: hidden; + margin: 0px auto; + padding: 0 0 0 20px; +} + +#logo { + padding-top: 9px; +} + +#menu { + height: 46px; + min-width: 1150px; + overflow: hidden; + width: auto !important; + margin: 0px auto; + position: relative; + background: url("../img/hw_s_221828.jpg") repeat-x scroll left bottom rgb(248, 248, 248); + border-top: 1px solid rgb(215, 212, 207); + border-bottom: 1px solid rgb(196, 198, 195); +} + +#menu ul { + font-size: 18px; + min-width: 1000px; + color: #5964a1; +} + +#menu li:first-child { + padding-left: 0px !important; +} + +#menu li { + display: inline; + float: left; + padding-left: 35px; + margin-top: -5px; + font-weight:bold; +} + +#nav { + width: 300px; +} + +.active { + color: #5964a1; +} + +.inactive { + color: #c0c0c0; +} + +.passed { + color: #008000; +} + +#title { + font-size: 20px; + margin-top: 13px; + padding-left: 20px; + color: #5964a1; +} + +p { + font-size: 14px; + color: #5964a1; +} + +a { + text-decoration: none; + color: blue; +} + +h3 { + color: #5964a1; + font-size: 16px; + margin-bottom: 10px; +} + +h2 { + font-weight: 520; + font-size: 20px; + color: #5964a1; + margin-top: 8px; +} + +#content { + min-width: 1150px; + min-height: 200px; + overflow-x: hidden; + position: relative; + margin: 0; + background-color: whitesmoke; + + /* IE10 Consumer Preview */ + background-image: -ms-linear-gradient(top, #FFFFFF 0%, #CCCCCC 100%); + + /* Mozilla Firefox */ + background-image: -moz-linear-gradient(top, #FFFFFF 0%, #CCCCCC 100%); + + /* Opera */ + background-image: -o-linear-gradient(top, #FFFFFF 0%, #CCCCCC 100%); + + /* Webkit (Safari/Chrome 10) */ + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #FFFFFF), color-stop(1, #CCCCCC)); + + /* Webkit (Chrome 11+) */ + background-image: -webkit-linear-gradient(top, #FFFFFF 0%, #CCCCCC 100%); + + /* W3C Markup, IE10 Release Preview */ + background-image: linear-gradient(to bottom, #FFFFFF 0%, #CCCCCC 100%); +} + +.main-box { + padding-top: 20px; + padding-bottom: 20px; + padding-left: 30px; + padding-right:30px; +} + +.left-side { + float: left; + width: 48%; + min-width: 460px; +} + +.left-side ul { + font-size: 14px; + color: #5964a1; +} + +.inside { + padding-left: 20px; + padding-right: 20px; +} + +.inside table { + padding-top: 10px; + width: 100%; + border-spacing: 0; +} + +.inside th { + text-align: left; + padding-left: 10px; + border-bottom: 1px solid grey; +} + +.right-side { + float: left; + width: 48%; +} + +.right-side table { + padding-top: 0px; + width: 100%; + border-spacing: 0px 0px; +} + +.right-side th:first-child { + padding-left: 0px !important; +} + +.right-side th { + text-align: left; + padding-left: 10px; +} + +.right-side img { + padding-left: 30px; +} + +.continue { + margin-top: 20px; +} + +#footer { + width: 100%; + min-width: 1000px; + overflow: hidden; + position: absolute; + bottom: 0px; + padding-bottom: 20px; + text-align:center; + background-color: lightBlue; +} + +.unavailable { + opacity: 0.5; +} + +.loading { + vertical-align: middle; + opacity: 0; +} + +.go-back { + font-size: 15px; + padding-right: 10px; +} \ No newline at end of file diff --git a/public/img/add_button_16px.png b/public/img/add_button_16px.png new file mode 100644 index 0000000..62f1806 Binary files /dev/null and b/public/img/add_button_16px.png differ diff --git a/public/img/ajax_loader.gif b/public/img/ajax_loader.gif new file mode 100644 index 0000000..1fe22da Binary files /dev/null and b/public/img/ajax_loader.gif differ diff --git a/public/img/asc.gif b/public/img/asc.gif new file mode 100644 index 0000000..7415786 Binary files /dev/null and b/public/img/asc.gif differ diff --git a/public/img/bg.gif b/public/img/bg.gif new file mode 100644 index 0000000..fac668f Binary files /dev/null and b/public/img/bg.gif differ diff --git a/public/img/desc.gif b/public/img/desc.gif new file mode 100644 index 0000000..3b30b3c Binary files /dev/null and b/public/img/desc.gif differ diff --git a/public/img/features_graphic.png b/public/img/features_graphic.png new file mode 100644 index 0000000..cfb4581 Binary files /dev/null and b/public/img/features_graphic.png differ diff --git a/public/img/filter_clear_16px.png b/public/img/filter_clear_16px.png new file mode 100644 index 0000000..684f273 Binary files /dev/null and b/public/img/filter_clear_16px.png differ diff --git a/public/img/green_check_16px.png b/public/img/green_check_16px.png new file mode 100644 index 0000000..e09bb4e Binary files /dev/null and b/public/img/green_check_16px.png differ diff --git a/public/img/green_check_large_16px.png b/public/img/green_check_large_16px.png new file mode 100644 index 0000000..9b4b996 Binary files /dev/null and b/public/img/green_check_large_16px.png differ diff --git a/public/img/hw_000353.jpg b/public/img/hw_000353.jpg new file mode 100644 index 0000000..2b4fd88 Binary files /dev/null and b/public/img/hw_000353.jpg differ diff --git a/public/img/hw_000469.jpg b/public/img/hw_000469.jpg new file mode 100644 index 0000000..3534c85 Binary files /dev/null and b/public/img/hw_000469.jpg differ diff --git a/public/img/hw_s_221828.jpg b/public/img/hw_s_221828.jpg new file mode 100644 index 0000000..60cf5ca Binary files /dev/null and b/public/img/hw_s_221828.jpg differ diff --git a/public/img/hwico.ico.png b/public/img/hwico.ico.png new file mode 100644 index 0000000..10dc2f1 Binary files /dev/null and b/public/img/hwico.ico.png differ diff --git a/public/img/info_icon_16px.png b/public/img/info_icon_16px.png new file mode 100644 index 0000000..dfbea00 Binary files /dev/null and b/public/img/info_icon_16px.png differ diff --git a/public/img/openstack_welcome_graphics.png b/public/img/openstack_welcome_graphics.png new file mode 100644 index 0000000..534bf96 Binary files /dev/null and b/public/img/openstack_welcome_graphics.png differ diff --git a/public/img/openstack_welcome_graphics_std.png b/public/img/openstack_welcome_graphics_std.png new file mode 100644 index 0000000..826b059 Binary files /dev/null and b/public/img/openstack_welcome_graphics_std.png differ diff --git a/public/img/remove_button_16px.png b/public/img/remove_button_16px.png new file mode 100644 index 0000000..8b326a7 Binary files /dev/null and b/public/img/remove_button_16px.png differ diff --git a/public/img/router.png b/public/img/router.png new file mode 100644 index 0000000..feb3938 Binary files /dev/null and b/public/img/router.png differ diff --git a/public/img/server.png b/public/img/server.png new file mode 100644 index 0000000..99e171b Binary files /dev/null and b/public/img/server.png differ diff --git a/public/img/server_status_mask (#0000FF - 50% transparency).png b/public/img/server_status_mask (#0000FF - 50% transparency).png new file mode 100644 index 0000000..37b4431 Binary files /dev/null and b/public/img/server_status_mask (#0000FF - 50% transparency).png differ diff --git a/public/img/switch.png b/public/img/switch.png new file mode 100644 index 0000000..bf62b9a Binary files /dev/null and b/public/img/switch.png differ diff --git a/public/img/topology_description.png b/public/img/topology_description.png new file mode 100644 index 0000000..b130e7d Binary files /dev/null and b/public/img/topology_description.png differ diff --git a/public/img/yellow_arrow_left_16px.png b/public/img/yellow_arrow_left_16px.png new file mode 100644 index 0000000..3cd2d13 Binary files /dev/null and b/public/img/yellow_arrow_left_16px.png differ diff --git a/public/img/yellow_arrow_right_16px.png b/public/img/yellow_arrow_right_16px.png new file mode 100644 index 0000000..7713b3c Binary files /dev/null and b/public/img/yellow_arrow_right_16px.png differ diff --git a/public/lib/d3.js b/public/lib/d3.js new file mode 100644 index 0000000..d35f274 --- /dev/null +++ b/public/lib/d3.js @@ -0,0 +1,8981 @@ +d3 = function() { + var d3 = { + version: "3.3.6" + }; + if (!Date.now) Date.now = function() { + return +new Date(); + }; + var d3_arraySlice = [].slice, d3_array = function(list) { + return d3_arraySlice.call(list); + }; + var d3_document = document, d3_documentElement = d3_document.documentElement, d3_window = window; + try { + d3_array(d3_documentElement.childNodes)[0].nodeType; + } catch (e) { + d3_array = function(list) { + var i = list.length, array = new Array(i); + while (i--) array[i] = list[i]; + return array; + }; + } + try { + d3_document.createElement("div").style.setProperty("opacity", 0, ""); + } catch (error) { + var d3_element_prototype = d3_window.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = d3_window.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty; + d3_element_prototype.setAttribute = function(name, value) { + d3_element_setAttribute.call(this, name, value + ""); + }; + d3_element_prototype.setAttributeNS = function(space, local, value) { + d3_element_setAttributeNS.call(this, space, local, value + ""); + }; + d3_style_prototype.setProperty = function(name, value, priority) { + d3_style_setProperty.call(this, name, value + "", priority); + }; + } + d3.ascending = function(a, b) { + return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN; + }; + d3.descending = function(a, b) { + return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN; + }; + d3.min = function(array, f) { + var i = -1, n = array.length, a, b; + if (arguments.length === 1) { + while (++i < n && !((a = array[i]) != null && a <= a)) a = undefined; + while (++i < n) if ((b = array[i]) != null && a > b) a = b; + } else { + while (++i < n && !((a = f.call(array, array[i], i)) != null && a <= a)) a = undefined; + while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b; + } + return a; + }; + d3.max = function(array, f) { + var i = -1, n = array.length, a, b; + if (arguments.length === 1) { + while (++i < n && !((a = array[i]) != null && a <= a)) a = undefined; + while (++i < n) if ((b = array[i]) != null && b > a) a = b; + } else { + while (++i < n && !((a = f.call(array, array[i], i)) != null && a <= a)) a = undefined; + while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b; + } + return a; + }; + d3.extent = function(array, f) { + var i = -1, n = array.length, a, b, c; + if (arguments.length === 1) { + while (++i < n && !((a = c = array[i]) != null && a <= a)) a = c = undefined; + while (++i < n) if ((b = array[i]) != null) { + if (a > b) a = b; + if (c < b) c = b; + } + } else { + while (++i < n && !((a = c = f.call(array, array[i], i)) != null && a <= a)) a = undefined; + while (++i < n) if ((b = f.call(array, array[i], i)) != null) { + if (a > b) a = b; + if (c < b) c = b; + } + } + return [ a, c ]; + }; + d3.sum = function(array, f) { + var s = 0, n = array.length, a, i = -1; + if (arguments.length === 1) { + while (++i < n) if (!isNaN(a = +array[i])) s += a; + } else { + while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a; + } + return s; + }; + function d3_number(x) { + return x != null && !isNaN(x); + } + d3.mean = function(array, f) { + var n = array.length, a, m = 0, i = -1, j = 0; + if (arguments.length === 1) { + while (++i < n) if (d3_number(a = array[i])) m += (a - m) / ++j; + } else { + while (++i < n) if (d3_number(a = f.call(array, array[i], i))) m += (a - m) / ++j; + } + return j ? m : undefined; + }; + d3.quantile = function(values, p) { + var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h; + return e ? v + e * (values[h] - v) : v; + }; + d3.median = function(array, f) { + if (arguments.length > 1) array = array.map(f); + array = array.filter(d3_number); + return array.length ? d3.quantile(array.sort(d3.ascending), .5) : undefined; + }; + d3.bisector = function(f) { + return { + left: function(a, x, lo, hi) { + if (arguments.length < 3) lo = 0; + if (arguments.length < 4) hi = a.length; + while (lo < hi) { + var mid = lo + hi >>> 1; + if (f.call(a, a[mid], mid) < x) lo = mid + 1; else hi = mid; + } + return lo; + }, + right: function(a, x, lo, hi) { + if (arguments.length < 3) lo = 0; + if (arguments.length < 4) hi = a.length; + while (lo < hi) { + var mid = lo + hi >>> 1; + if (x < f.call(a, a[mid], mid)) hi = mid; else lo = mid + 1; + } + return lo; + } + }; + }; + var d3_bisector = d3.bisector(function(d) { + return d; + }); + d3.bisectLeft = d3_bisector.left; + d3.bisect = d3.bisectRight = d3_bisector.right; + d3.shuffle = function(array) { + var m = array.length, t, i; + while (m) { + i = Math.random() * m-- | 0; + t = array[m], array[m] = array[i], array[i] = t; + } + return array; + }; + d3.permute = function(array, indexes) { + var i = indexes.length, permutes = new Array(i); + while (i--) permutes[i] = array[indexes[i]]; + return permutes; + }; + d3.pairs = function(array) { + var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n); + while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ]; + return pairs; + }; + d3.zip = function() { + if (!(n = arguments.length)) return []; + for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) { + for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) { + zip[j] = arguments[j][i]; + } + } + return zips; + }; + function d3_zipLength(d) { + return d.length; + } + d3.transpose = function(matrix) { + return d3.zip.apply(d3, matrix); + }; + d3.keys = function(map) { + var keys = []; + for (var key in map) keys.push(key); + return keys; + }; + d3.values = function(map) { + var values = []; + for (var key in map) values.push(map[key]); + return values; + }; + d3.entries = function(map) { + var entries = []; + for (var key in map) entries.push({ + key: key, + value: map[key] + }); + return entries; + }; + d3.merge = function(arrays) { + return Array.prototype.concat.apply([], arrays); + }; + d3.range = function(start, stop, step) { + if (arguments.length < 3) { + step = 1; + if (arguments.length < 2) { + stop = start; + start = 0; + } + } + if ((stop - start) / step === Infinity) throw new Error("infinite range"); + var range = [], k = d3_range_integerScale(Math.abs(step)), i = -1, j; + start *= k, stop *= k, step *= k; + if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k); + return range; + }; + function d3_range_integerScale(x) { + var k = 1; + while (x * k % 1) k *= 10; + return k; + } + function d3_class(ctor, properties) { + try { + for (var key in properties) { + Object.defineProperty(ctor.prototype, key, { + value: properties[key], + enumerable: false + }); + } + } catch (e) { + ctor.prototype = properties; + } + } + d3.map = function(object) { + var map = new d3_Map(); + if (object instanceof d3_Map) object.forEach(function(key, value) { + map.set(key, value); + }); else for (var key in object) map.set(key, object[key]); + return map; + }; + function d3_Map() {} + d3_class(d3_Map, { + has: function(key) { + return d3_map_prefix + key in this; + }, + get: function(key) { + return this[d3_map_prefix + key]; + }, + set: function(key, value) { + return this[d3_map_prefix + key] = value; + }, + remove: function(key) { + key = d3_map_prefix + key; + return key in this && delete this[key]; + }, + keys: function() { + var keys = []; + this.forEach(function(key) { + keys.push(key); + }); + return keys; + }, + values: function() { + var values = []; + this.forEach(function(key, value) { + values.push(value); + }); + return values; + }, + entries: function() { + var entries = []; + this.forEach(function(key, value) { + entries.push({ + key: key, + value: value + }); + }); + return entries; + }, + forEach: function(f) { + for (var key in this) { + if (key.charCodeAt(0) === d3_map_prefixCode) { + f.call(this, key.substring(1), this[key]); + } + } + } + }); + var d3_map_prefix = "\x00", d3_map_prefixCode = d3_map_prefix.charCodeAt(0); + d3.nest = function() { + var nest = {}, keys = [], sortKeys = [], sortValues, rollup; + function map(mapType, array, depth) { + if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array; + var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values; + while (++i < n) { + if (values = valuesByKey.get(keyValue = key(object = array[i]))) { + values.push(object); + } else { + valuesByKey.set(keyValue, [ object ]); + } + } + if (mapType) { + object = mapType(); + setter = function(keyValue, values) { + object.set(keyValue, map(mapType, values, depth)); + }; + } else { + object = {}; + setter = function(keyValue, values) { + object[keyValue] = map(mapType, values, depth); + }; + } + valuesByKey.forEach(setter); + return object; + } + function entries(map, depth) { + if (depth >= keys.length) return map; + var array = [], sortKey = sortKeys[depth++]; + map.forEach(function(key, keyMap) { + array.push({ + key: key, + values: entries(keyMap, depth) + }); + }); + return sortKey ? array.sort(function(a, b) { + return sortKey(a.key, b.key); + }) : array; + } + nest.map = function(array, mapType) { + return map(mapType, array, 0); + }; + nest.entries = function(array) { + return entries(map(d3.map, array, 0), 0); + }; + nest.key = function(d) { + keys.push(d); + return nest; + }; + nest.sortKeys = function(order) { + sortKeys[keys.length - 1] = order; + return nest; + }; + nest.sortValues = function(order) { + sortValues = order; + return nest; + }; + nest.rollup = function(f) { + rollup = f; + return nest; + }; + return nest; + }; + d3.set = function(array) { + var set = new d3_Set(); + if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]); + return set; + }; + function d3_Set() {} + d3_class(d3_Set, { + has: function(value) { + return d3_map_prefix + value in this; + }, + add: function(value) { + this[d3_map_prefix + value] = true; + return value; + }, + remove: function(value) { + value = d3_map_prefix + value; + return value in this && delete this[value]; + }, + values: function() { + var values = []; + this.forEach(function(value) { + values.push(value); + }); + return values; + }, + forEach: function(f) { + for (var value in this) { + if (value.charCodeAt(0) === d3_map_prefixCode) { + f.call(this, value.substring(1)); + } + } + } + }); + d3.behavior = {}; + d3.rebind = function(target, source) { + var i = 1, n = arguments.length, method; + while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]); + return target; + }; + function d3_rebind(target, source, method) { + return function() { + var value = method.apply(source, arguments); + return value === source ? target : value; + }; + } + function d3_vendorSymbol(object, name) { + if (name in object) return name; + name = name.charAt(0).toUpperCase() + name.substring(1); + for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) { + var prefixName = d3_vendorPrefixes[i] + name; + if (prefixName in object) return prefixName; + } + } + var d3_vendorPrefixes = [ "webkit", "ms", "moz", "Moz", "o", "O" ]; + function d3_noop() {} + d3.dispatch = function() { + var dispatch = new d3_dispatch(), i = -1, n = arguments.length; + while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch); + return dispatch; + }; + function d3_dispatch() {} + d3_dispatch.prototype.on = function(type, listener) { + var i = type.indexOf("."), name = ""; + if (i >= 0) { + name = type.substring(i + 1); + type = type.substring(0, i); + } + if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener); + if (arguments.length === 2) { + if (listener == null) for (type in this) { + if (this.hasOwnProperty(type)) this[type].on(name, null); + } + return this; + } + }; + function d3_dispatch_event(dispatch) { + var listeners = [], listenerByName = new d3_Map(); + function event() { + var z = listeners, i = -1, n = z.length, l; + while (++i < n) if (l = z[i].on) l.apply(this, arguments); + return dispatch; + } + event.on = function(name, listener) { + var l = listenerByName.get(name), i; + if (arguments.length < 2) return l && l.on; + if (l) { + l.on = null; + listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1)); + listenerByName.remove(name); + } + if (listener) listeners.push(listenerByName.set(name, { + on: listener + })); + return dispatch; + }; + return event; + } + d3.event = null; + function d3_eventPreventDefault() { + d3.event.preventDefault(); + } + function d3_eventSource() { + var e = d3.event, s; + while (s = e.sourceEvent) e = s; + return e; + } + function d3_eventDispatch(target) { + var dispatch = new d3_dispatch(), i = 0, n = arguments.length; + while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch); + dispatch.of = function(thiz, argumentz) { + return function(e1) { + try { + var e0 = e1.sourceEvent = d3.event; + e1.target = target; + d3.event = e1; + dispatch[e1.type].apply(thiz, argumentz); + } finally { + d3.event = e0; + } + }; + }; + return dispatch; + } + d3.requote = function(s) { + return s.replace(d3_requote_re, "\\$&"); + }; + var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g; + var d3_subclass = {}.__proto__ ? function(object, prototype) { + object.__proto__ = prototype; + } : function(object, prototype) { + for (var property in prototype) object[property] = prototype[property]; + }; + function d3_selection(groups) { + d3_subclass(groups, d3_selectionPrototype); + return groups; + } + var d3_select = function(s, n) { + return n.querySelector(s); + }, d3_selectAll = function(s, n) { + return n.querySelectorAll(s); + }, d3_selectMatcher = d3_documentElement[d3_vendorSymbol(d3_documentElement, "matchesSelector")], d3_selectMatches = function(n, s) { + return d3_selectMatcher.call(n, s); + }; + if (typeof Sizzle === "function") { + d3_select = function(s, n) { + return Sizzle(s, n)[0] || null; + }; + d3_selectAll = function(s, n) { + return Sizzle.uniqueSort(Sizzle(s, n)); + }; + d3_selectMatches = Sizzle.matchesSelector; + } + d3.selection = function() { + return d3_selectionRoot; + }; + var d3_selectionPrototype = d3.selection.prototype = []; + d3_selectionPrototype.select = function(selector) { + var subgroups = [], subgroup, subnode, group, node; + selector = d3_selection_selector(selector); + for (var j = -1, m = this.length; ++j < m; ) { + subgroups.push(subgroup = []); + subgroup.parentNode = (group = this[j]).parentNode; + for (var i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) { + subgroup.push(subnode = selector.call(node, node.__data__, i, j)); + if (subnode && "__data__" in node) subnode.__data__ = node.__data__; + } else { + subgroup.push(null); + } + } + } + return d3_selection(subgroups); + }; + function d3_selection_selector(selector) { + return typeof selector === "function" ? selector : function() { + return d3_select(selector, this); + }; + } + d3_selectionPrototype.selectAll = function(selector) { + var subgroups = [], subgroup, node; + selector = d3_selection_selectorAll(selector); + for (var j = -1, m = this.length; ++j < m; ) { + for (var group = this[j], i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) { + subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j))); + subgroup.parentNode = node; + } + } + } + return d3_selection(subgroups); + }; + function d3_selection_selectorAll(selector) { + return typeof selector === "function" ? selector : function() { + return d3_selectAll(selector, this); + }; + } + var d3_nsPrefix = { + svg: "http://www.w3.org/2000/svg", + xhtml: "http://www.w3.org/1999/xhtml", + xlink: "http://www.w3.org/1999/xlink", + xml: "http://www.w3.org/XML/1998/namespace", + xmlns: "http://www.w3.org/2000/xmlns/" + }; + d3.ns = { + prefix: d3_nsPrefix, + qualify: function(name) { + var i = name.indexOf(":"), prefix = name; + if (i >= 0) { + prefix = name.substring(0, i); + name = name.substring(i + 1); + } + return d3_nsPrefix.hasOwnProperty(prefix) ? { + space: d3_nsPrefix[prefix], + local: name + } : name; + } + }; + d3_selectionPrototype.attr = function(name, value) { + if (arguments.length < 2) { + if (typeof name === "string") { + var node = this.node(); + name = d3.ns.qualify(name); + return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name); + } + for (value in name) this.each(d3_selection_attr(value, name[value])); + return this; + } + return this.each(d3_selection_attr(name, value)); + }; + function d3_selection_attr(name, value) { + name = d3.ns.qualify(name); + function attrNull() { + this.removeAttribute(name); + } + function attrNullNS() { + this.removeAttributeNS(name.space, name.local); + } + function attrConstant() { + this.setAttribute(name, value); + } + function attrConstantNS() { + this.setAttributeNS(name.space, name.local, value); + } + function attrFunction() { + var x = value.apply(this, arguments); + if (x == null) this.removeAttribute(name); else this.setAttribute(name, x); + } + function attrFunctionNS() { + var x = value.apply(this, arguments); + if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x); + } + return value == null ? name.local ? attrNullNS : attrNull : typeof value === "function" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant; + } + function d3_collapse(s) { + return s.trim().replace(/\s+/g, " "); + } + d3_selectionPrototype.classed = function(name, value) { + if (arguments.length < 2) { + if (typeof name === "string") { + var node = this.node(), n = (name = name.trim().split(/^|\s+/g)).length, i = -1; + if (value = node.classList) { + while (++i < n) if (!value.contains(name[i])) return false; + } else { + value = node.getAttribute("class"); + while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false; + } + return true; + } + for (value in name) this.each(d3_selection_classed(value, name[value])); + return this; + } + return this.each(d3_selection_classed(name, value)); + }; + function d3_selection_classedRe(name) { + return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g"); + } + function d3_selection_classed(name, value) { + name = name.trim().split(/\s+/).map(d3_selection_classedName); + var n = name.length; + function classedConstant() { + var i = -1; + while (++i < n) name[i](this, value); + } + function classedFunction() { + var i = -1, x = value.apply(this, arguments); + while (++i < n) name[i](this, x); + } + return typeof value === "function" ? classedFunction : classedConstant; + } + function d3_selection_classedName(name) { + var re = d3_selection_classedRe(name); + return function(node, value) { + if (c = node.classList) return value ? c.add(name) : c.remove(name); + var c = node.getAttribute("class") || ""; + if (value) { + re.lastIndex = 0; + if (!re.test(c)) node.setAttribute("class", d3_collapse(c + " " + name)); + } else { + node.setAttribute("class", d3_collapse(c.replace(re, " "))); + } + }; + } + d3_selectionPrototype.style = function(name, value, priority) { + var n = arguments.length; + if (n < 3) { + if (typeof name !== "string") { + if (n < 2) value = ""; + for (priority in name) this.each(d3_selection_style(priority, name[priority], value)); + return this; + } + if (n < 2) return d3_window.getComputedStyle(this.node(), null).getPropertyValue(name); + priority = ""; + } + return this.each(d3_selection_style(name, value, priority)); + }; + function d3_selection_style(name, value, priority) { + function styleNull() { + this.style.removeProperty(name); + } + function styleConstant() { + this.style.setProperty(name, value, priority); + } + function styleFunction() { + var x = value.apply(this, arguments); + if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority); + } + return value == null ? styleNull : typeof value === "function" ? styleFunction : styleConstant; + } + d3_selectionPrototype.property = function(name, value) { + if (arguments.length < 2) { + if (typeof name === "string") return this.node()[name]; + for (value in name) this.each(d3_selection_property(value, name[value])); + return this; + } + return this.each(d3_selection_property(name, value)); + }; + function d3_selection_property(name, value) { + function propertyNull() { + delete this[name]; + } + function propertyConstant() { + this[name] = value; + } + function propertyFunction() { + var x = value.apply(this, arguments); + if (x == null) delete this[name]; else this[name] = x; + } + return value == null ? propertyNull : typeof value === "function" ? propertyFunction : propertyConstant; + } + d3_selectionPrototype.text = function(value) { + return arguments.length ? this.each(typeof value === "function" ? function() { + var v = value.apply(this, arguments); + this.textContent = v == null ? "" : v; + } : value == null ? function() { + this.textContent = ""; + } : function() { + this.textContent = value; + }) : this.node().textContent; + }; + d3_selectionPrototype.html = function(value) { + return arguments.length ? this.each(typeof value === "function" ? function() { + var v = value.apply(this, arguments); + this.innerHTML = v == null ? "" : v; + } : value == null ? function() { + this.innerHTML = ""; + } : function() { + this.innerHTML = value; + }) : this.node().innerHTML; + }; + d3_selectionPrototype.append = function(name) { + name = d3_selection_creator(name); + return this.select(function() { + return this.appendChild(name.apply(this, arguments)); + }); + }; + function d3_selection_creator(name) { + return typeof name === "function" ? name : (name = d3.ns.qualify(name)).local ? function() { + return d3_document.createElementNS(name.space, name.local); + } : function() { + return d3_document.createElementNS(this.namespaceURI, name); + }; + } + d3_selectionPrototype.insert = function(name, before) { + name = d3_selection_creator(name); + before = d3_selection_selector(before); + return this.select(function() { + return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments)); + }); + }; + d3_selectionPrototype.remove = function() { + return this.each(function() { + var parent = this.parentNode; + if (parent) parent.removeChild(this); + }); + }; + d3_selectionPrototype.data = function(value, key) { + var i = -1, n = this.length, group, node; + if (!arguments.length) { + value = new Array(n = (group = this[0]).length); + while (++i < n) { + if (node = group[i]) { + value[i] = node.__data__; + } + } + return value; + } + function bind(group, groupData) { + var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData; + if (key) { + var nodeByKeyValue = new d3_Map(), dataByKeyValue = new d3_Map(), keyValues = [], keyValue; + for (i = -1; ++i < n; ) { + keyValue = key.call(node = group[i], node.__data__, i); + if (nodeByKeyValue.has(keyValue)) { + exitNodes[i] = node; + } else { + nodeByKeyValue.set(keyValue, node); + } + keyValues.push(keyValue); + } + for (i = -1; ++i < m; ) { + keyValue = key.call(groupData, nodeData = groupData[i], i); + if (node = nodeByKeyValue.get(keyValue)) { + updateNodes[i] = node; + node.__data__ = nodeData; + } else if (!dataByKeyValue.has(keyValue)) { + enterNodes[i] = d3_selection_dataNode(nodeData); + } + dataByKeyValue.set(keyValue, nodeData); + nodeByKeyValue.remove(keyValue); + } + for (i = -1; ++i < n; ) { + if (nodeByKeyValue.has(keyValues[i])) { + exitNodes[i] = group[i]; + } + } + } else { + for (i = -1; ++i < n0; ) { + node = group[i]; + nodeData = groupData[i]; + if (node) { + node.__data__ = nodeData; + updateNodes[i] = node; + } else { + enterNodes[i] = d3_selection_dataNode(nodeData); + } + } + for (;i < m; ++i) { + enterNodes[i] = d3_selection_dataNode(groupData[i]); + } + for (;i < n; ++i) { + exitNodes[i] = group[i]; + } + } + enterNodes.update = updateNodes; + enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode; + enter.push(enterNodes); + update.push(updateNodes); + exit.push(exitNodes); + } + var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]); + if (typeof value === "function") { + while (++i < n) { + bind(group = this[i], value.call(group, group.parentNode.__data__, i)); + } + } else { + while (++i < n) { + bind(group = this[i], value); + } + } + update.enter = function() { + return enter; + }; + update.exit = function() { + return exit; + }; + return update; + }; + function d3_selection_dataNode(data) { + return { + __data__: data + }; + } + d3_selectionPrototype.datum = function(value) { + return arguments.length ? this.property("__data__", value) : this.property("__data__"); + }; + d3_selectionPrototype.filter = function(filter) { + var subgroups = [], subgroup, group, node; + if (typeof filter !== "function") filter = d3_selection_filter(filter); + for (var j = 0, m = this.length; j < m; j++) { + subgroups.push(subgroup = []); + subgroup.parentNode = (group = this[j]).parentNode; + for (var i = 0, n = group.length; i < n; i++) { + if ((node = group[i]) && filter.call(node, node.__data__, i)) { + subgroup.push(node); + } + } + } + return d3_selection(subgroups); + }; + function d3_selection_filter(selector) { + return function() { + return d3_selectMatches(this, selector); + }; + } + d3_selectionPrototype.order = function() { + for (var j = -1, m = this.length; ++j < m; ) { + for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) { + if (node = group[i]) { + if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next); + next = node; + } + } + } + return this; + }; + d3_selectionPrototype.sort = function(comparator) { + comparator = d3_selection_sortComparator.apply(this, arguments); + for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator); + return this.order(); + }; + function d3_selection_sortComparator(comparator) { + if (!arguments.length) comparator = d3.ascending; + return function(a, b) { + return a && b ? comparator(a.__data__, b.__data__) : !a - !b; + }; + } + d3_selectionPrototype.each = function(callback) { + return d3_selection_each(this, function(node, i, j) { + callback.call(node, node.__data__, i, j); + }); + }; + function d3_selection_each(groups, callback) { + for (var j = 0, m = groups.length; j < m; j++) { + for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) { + if (node = group[i]) callback(node, i, j); + } + } + return groups; + } + d3_selectionPrototype.call = function(callback) { + var args = d3_array(arguments); + callback.apply(args[0] = this, args); + return this; + }; + d3_selectionPrototype.empty = function() { + return !this.node(); + }; + d3_selectionPrototype.node = function() { + for (var j = 0, m = this.length; j < m; j++) { + for (var group = this[j], i = 0, n = group.length; i < n; i++) { + var node = group[i]; + if (node) return node; + } + } + return null; + }; + d3_selectionPrototype.size = function() { + var n = 0; + this.each(function() { + ++n; + }); + return n; + }; + function d3_selection_enter(selection) { + d3_subclass(selection, d3_selection_enterPrototype); + return selection; + } + var d3_selection_enterPrototype = []; + d3.selection.enter = d3_selection_enter; + d3.selection.enter.prototype = d3_selection_enterPrototype; + d3_selection_enterPrototype.append = d3_selectionPrototype.append; + d3_selection_enterPrototype.empty = d3_selectionPrototype.empty; + d3_selection_enterPrototype.node = d3_selectionPrototype.node; + d3_selection_enterPrototype.call = d3_selectionPrototype.call; + d3_selection_enterPrototype.size = d3_selectionPrototype.size; + d3_selection_enterPrototype.select = function(selector) { + var subgroups = [], subgroup, subnode, upgroup, group, node; + for (var j = -1, m = this.length; ++j < m; ) { + upgroup = (group = this[j]).update; + subgroups.push(subgroup = []); + subgroup.parentNode = group.parentNode; + for (var i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) { + subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j)); + subnode.__data__ = node.__data__; + } else { + subgroup.push(null); + } + } + } + return d3_selection(subgroups); + }; + d3_selection_enterPrototype.insert = function(name, before) { + if (arguments.length < 2) before = d3_selection_enterInsertBefore(this); + return d3_selectionPrototype.insert.call(this, name, before); + }; + function d3_selection_enterInsertBefore(enter) { + var i0, j0; + return function(d, i, j) { + var group = enter[j].update, n = group.length, node; + if (j != j0) j0 = j, i0 = 0; + if (i >= i0) i0 = i + 1; + while (!(node = group[i0]) && ++i0 < n) ; + return node; + }; + } + d3_selectionPrototype.transition = function() { + var id = d3_transitionInheritId || ++d3_transitionId, subgroups = [], subgroup, node, transition = d3_transitionInherit || { + time: Date.now(), + ease: d3_ease_cubicInOut, + delay: 0, + duration: 250 + }; + for (var j = -1, m = this.length; ++j < m; ) { + subgroups.push(subgroup = []); + for (var group = this[j], i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) d3_transitionNode(node, i, id, transition); + subgroup.push(node); + } + } + return d3_transition(subgroups, id); + }; + d3_selectionPrototype.interrupt = function() { + return this.each(d3_selection_interrupt); + }; + function d3_selection_interrupt() { + var lock = this.__transition__; + if (lock) ++lock.active; + } + d3.select = function(node) { + var group = [ typeof node === "string" ? d3_select(node, d3_document) : node ]; + group.parentNode = d3_documentElement; + return d3_selection([ group ]); + }; + d3.selectAll = function(nodes) { + var group = d3_array(typeof nodes === "string" ? d3_selectAll(nodes, d3_document) : nodes); + group.parentNode = d3_documentElement; + return d3_selection([ group ]); + }; + var d3_selectionRoot = d3.select(d3_documentElement); + d3_selectionPrototype.on = function(type, listener, capture) { + var n = arguments.length; + if (n < 3) { + if (typeof type !== "string") { + if (n < 2) listener = false; + for (capture in type) this.each(d3_selection_on(capture, type[capture], listener)); + return this; + } + if (n < 2) return (n = this.node()["__on" + type]) && n._; + capture = false; + } + return this.each(d3_selection_on(type, listener, capture)); + }; + function d3_selection_on(type, listener, capture) { + var name = "__on" + type, i = type.indexOf("."), wrap = d3_selection_onListener; + if (i > 0) type = type.substring(0, i); + var filter = d3_selection_onFilters.get(type); + if (filter) type = filter, wrap = d3_selection_onFilter; + function onRemove() { + var l = this[name]; + if (l) { + this.removeEventListener(type, l, l.$); + delete this[name]; + } + } + function onAdd() { + var l = wrap(listener, d3_array(arguments)); + onRemove.call(this); + this.addEventListener(type, this[name] = l, l.$ = capture); + l._ = listener; + } + function removeAll() { + var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"), match; + for (var name in this) { + if (match = name.match(re)) { + var l = this[name]; + this.removeEventListener(match[1], l, l.$); + delete this[name]; + } + } + } + return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll; + } + var d3_selection_onFilters = d3.map({ + mouseenter: "mouseover", + mouseleave: "mouseout" + }); + d3_selection_onFilters.forEach(function(k) { + if ("on" + k in d3_document) d3_selection_onFilters.remove(k); + }); + function d3_selection_onListener(listener, argumentz) { + return function(e) { + var o = d3.event; + d3.event = e; + argumentz[0] = this.__data__; + try { + listener.apply(this, argumentz); + } finally { + d3.event = o; + } + }; + } + function d3_selection_onFilter(listener, argumentz) { + var l = d3_selection_onListener(listener, argumentz); + return function(e) { + var target = this, related = e.relatedTarget; + if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) { + l.call(target, e); + } + }; + } + var d3_event_dragSelect = d3_vendorSymbol(d3_documentElement.style, "userSelect"), d3_event_dragId = 0; + function d3_event_dragSuppress() { + var name = ".dragsuppress-" + ++d3_event_dragId, touchmove = "touchmove" + name, selectstart = "selectstart" + name, dragstart = "dragstart" + name, click = "click" + name, w = d3.select(d3_window).on(touchmove, d3_eventPreventDefault).on(selectstart, d3_eventPreventDefault).on(dragstart, d3_eventPreventDefault), style = d3_documentElement.style, select = style[d3_event_dragSelect]; + style[d3_event_dragSelect] = "none"; + return function(suppressClick) { + w.on(name, null); + style[d3_event_dragSelect] = select; + if (suppressClick) { + function off() { + w.on(click, null); + } + w.on(click, function() { + d3_eventPreventDefault(); + off(); + }, true); + setTimeout(off, 0); + } + }; + } + d3.mouse = function(container) { + return d3_mousePoint(container, d3_eventSource()); + }; + var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0; + function d3_mousePoint(container, e) { + if (e.changedTouches) e = e.changedTouches[0]; + var svg = container.ownerSVGElement || container; + if (svg.createSVGPoint) { + var point = svg.createSVGPoint(); + if (d3_mouse_bug44083 < 0 && (d3_window.scrollX || d3_window.scrollY)) { + svg = d3.select("body").append("svg").style({ + position: "absolute", + top: 0, + left: 0, + margin: 0, + padding: 0, + border: "none" + }, "important"); + var ctm = svg[0][0].getScreenCTM(); + d3_mouse_bug44083 = !(ctm.f || ctm.e); + svg.remove(); + } + if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, + point.y = e.clientY; + point = point.matrixTransform(container.getScreenCTM().inverse()); + return [ point.x, point.y ]; + } + var rect = container.getBoundingClientRect(); + return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ]; + } + d3.touches = function(container, touches) { + if (arguments.length < 2) touches = d3_eventSource().touches; + return touches ? d3_array(touches).map(function(touch) { + var point = d3_mousePoint(container, touch); + point.identifier = touch.identifier; + return point; + }) : []; + }; + d3.behavior.drag = function() { + var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, "mousemove", "mouseup"), touchstart = dragstart(touchid, touchposition, "touchmove", "touchend"); + function drag() { + this.on("mousedown.drag", mousedown).on("touchstart.drag", touchstart); + } + function touchid() { + return d3.event.changedTouches[0].identifier; + } + function touchposition(parent, id) { + return d3.touches(parent).filter(function(p) { + return p.identifier === id; + })[0]; + } + function dragstart(id, position, move, end) { + return function() { + var target = this, parent = target.parentNode, event_ = event.of(target, arguments), eventTarget = d3.event.target, eventId = id(), drag = eventId == null ? "drag" : "drag-" + eventId, origin_ = position(parent, eventId), dragged = 0, offset, w = d3.select(d3_window).on(move + "." + drag, moved).on(end + "." + drag, ended), dragRestore = d3_event_dragSuppress(); + if (origin) { + offset = origin.apply(target, arguments); + offset = [ offset.x - origin_[0], offset.y - origin_[1] ]; + } else { + offset = [ 0, 0 ]; + } + event_({ + type: "dragstart" + }); + function moved() { + var p = position(parent, eventId), dx = p[0] - origin_[0], dy = p[1] - origin_[1]; + dragged |= dx | dy; + origin_ = p; + event_({ + type: "drag", + x: p[0] + offset[0], + y: p[1] + offset[1], + dx: dx, + dy: dy + }); + } + function ended() { + w.on(move + "." + drag, null).on(end + "." + drag, null); + dragRestore(dragged && d3.event.target === eventTarget); + event_({ + type: "dragend" + }); + } + }; + } + drag.origin = function(x) { + if (!arguments.length) return origin; + origin = x; + return drag; + }; + return d3.rebind(drag, event, "on"); + }; + var π = Math.PI, τ = 2 * π, halfπ = π / 2, ε = 1e-6, ε2 = ε * ε, d3_radians = π / 180, d3_degrees = 180 / π; + function d3_sgn(x) { + return x > 0 ? 1 : x < 0 ? -1 : 0; + } + function d3_acos(x) { + return x > 1 ? 0 : x < -1 ? π : Math.acos(x); + } + function d3_asin(x) { + return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x); + } + function d3_sinh(x) { + return ((x = Math.exp(x)) - 1 / x) / 2; + } + function d3_cosh(x) { + return ((x = Math.exp(x)) + 1 / x) / 2; + } + function d3_tanh(x) { + return ((x = Math.exp(2 * x)) - 1) / (x + 1); + } + function d3_haversin(x) { + return (x = Math.sin(x / 2)) * x; + } + var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4; + d3.interpolateZoom = function(p0, p1) { + var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2]; + var dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1), dr = r1 - r0, S = (dr || Math.log(w1 / w0)) / ρ; + function interpolate(t) { + var s = t * S; + if (dr) { + var coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0)); + return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ]; + } + return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * s) ]; + } + interpolate.duration = S * 1e3; + return interpolate; + }; + d3.behavior.zoom = function() { + var view = { + x: 0, + y: 0, + k: 1 + }, translate0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, mousedown = "mousedown.zoom", mousemove = "mousemove.zoom", mouseup = "mouseup.zoom", mousewheelTimer, touchstart = "touchstart.zoom", touchtime, event = d3_eventDispatch(zoom, "zoomstart", "zoom", "zoomend"), x0, x1, y0, y1; + function zoom(g) { + g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + ".zoom", mousewheeled).on(mousemove, mousewheelreset).on("dblclick.zoom", dblclicked).on(touchstart, touchstarted); + } + zoom.event = function(g) { + g.each(function() { + var event_ = event.of(this, arguments), view1 = view; + if (d3_transitionInheritId) { + d3.select(this).transition().each("start.zoom", function() { + view = this.__chart__ || { + x: 0, + y: 0, + k: 1 + }; + zoomstarted(event_); + }).tween("zoom:zoom", function() { + var dx = size[0], dy = size[1], cx = dx / 2, cy = dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]); + return function(t) { + var l = i(t), k = dx / l[2]; + this.__chart__ = view = { + x: cx - l[0] * k, + y: cy - l[1] * k, + k: k + }; + zoomed(event_); + }; + }).each("end.zoom", function() { + zoomended(event_); + }); + } else { + this.__chart__ = view; + zoomstarted(event_); + zoomed(event_); + zoomended(event_); + } + }); + }; + zoom.translate = function(_) { + if (!arguments.length) return [ view.x, view.y ]; + view = { + x: +_[0], + y: +_[1], + k: view.k + }; + rescale(); + return zoom; + }; + zoom.scale = function(_) { + if (!arguments.length) return view.k; + view = { + x: view.x, + y: view.y, + k: +_ + }; + rescale(); + return zoom; + }; + zoom.scaleExtent = function(_) { + if (!arguments.length) return scaleExtent; + scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ]; + return zoom; + }; + zoom.center = function(_) { + if (!arguments.length) return center; + center = _ && [ +_[0], +_[1] ]; + return zoom; + }; + zoom.size = function(_) { + if (!arguments.length) return size; + size = _ && [ +_[0], +_[1] ]; + return zoom; + }; + zoom.x = function(z) { + if (!arguments.length) return x1; + x1 = z; + x0 = z.copy(); + view = { + x: 0, + y: 0, + k: 1 + }; + return zoom; + }; + zoom.y = function(z) { + if (!arguments.length) return y1; + y1 = z; + y0 = z.copy(); + view = { + x: 0, + y: 0, + k: 1 + }; + return zoom; + }; + function location(p) { + return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ]; + } + function point(l) { + return [ l[0] * view.k + view.x, l[1] * view.k + view.y ]; + } + function scaleTo(s) { + view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s)); + } + function translateTo(p, l) { + l = point(l); + view.x += p[0] - l[0]; + view.y += p[1] - l[1]; + } + function rescale() { + if (x1) x1.domain(x0.range().map(function(x) { + return (x - view.x) / view.k; + }).map(x0.invert)); + if (y1) y1.domain(y0.range().map(function(y) { + return (y - view.y) / view.k; + }).map(y0.invert)); + } + function zoomstarted(event) { + event({ + type: "zoomstart" + }); + } + function zoomed(event) { + rescale(); + event({ + type: "zoom", + scale: view.k, + translate: [ view.x, view.y ] + }); + } + function zoomended(event) { + event({ + type: "zoomend" + }); + } + function mousedowned() { + var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, dragged = 0, w = d3.select(d3_window).on(mousemove, moved).on(mouseup, ended), l = location(d3.mouse(target)), dragRestore = d3_event_dragSuppress(); + d3_selection_interrupt.call(target); + zoomstarted(event_); + function moved() { + dragged = 1; + translateTo(d3.mouse(target), l); + zoomed(event_); + } + function ended() { + w.on(mousemove, d3_window === target ? mousewheelreset : null).on(mouseup, null); + dragRestore(dragged && d3.event.target === eventTarget); + zoomended(event_); + } + } + function touchstarted() { + var target = this, event_ = event.of(target, arguments), locations0 = {}, distance0 = 0, scale0, eventId = d3.event.changedTouches[0].identifier, touchmove = "touchmove.zoom-" + eventId, touchend = "touchend.zoom-" + eventId, w = d3.select(d3_window).on(touchmove, moved).on(touchend, ended), t = d3.select(target).on(mousedown, null).on(touchstart, started), dragRestore = d3_event_dragSuppress(); + d3_selection_interrupt.call(target); + started(); + zoomstarted(event_); + function relocate() { + var touches = d3.touches(target); + scale0 = view.k; + touches.forEach(function(t) { + if (t.identifier in locations0) locations0[t.identifier] = location(t); + }); + return touches; + } + function started() { + var changed = d3.event.changedTouches; + for (var i = 0, n = changed.length; i < n; ++i) { + locations0[changed[i].identifier] = null; + } + var touches = relocate(), now = Date.now(); + if (touches.length === 1) { + if (now - touchtime < 500) { + var p = touches[0], l = locations0[p.identifier]; + scaleTo(view.k * 2); + translateTo(p, l); + d3_eventPreventDefault(); + zoomed(event_); + } + touchtime = now; + } else if (touches.length > 1) { + var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1]; + distance0 = dx * dx + dy * dy; + } + } + function moved() { + var touches = d3.touches(target), p0, l0, p1, l1; + for (var i = 0, n = touches.length; i < n; ++i, l1 = null) { + p1 = touches[i]; + if (l1 = locations0[p1.identifier]) { + if (l0) break; + p0 = p1, l0 = l1; + } + } + if (l1) { + var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0); + p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ]; + l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ]; + scaleTo(scale1 * scale0); + } + touchtime = null; + translateTo(p0, l0); + zoomed(event_); + } + function ended() { + if (d3.event.touches.length) { + var changed = d3.event.changedTouches; + for (var i = 0, n = changed.length; i < n; ++i) { + delete locations0[changed[i].identifier]; + } + for (var identifier in locations0) { + return void relocate(); + } + } + w.on(touchmove, null).on(touchend, null); + t.on(mousedown, mousedowned).on(touchstart, touchstarted); + dragRestore(); + zoomended(event_); + } + } + function mousewheeled() { + var event_ = event.of(this, arguments); + if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), + zoomstarted(event_); + mousewheelTimer = setTimeout(function() { + mousewheelTimer = null; + zoomended(event_); + }, 50); + d3_eventPreventDefault(); + var point = center || d3.mouse(this); + if (!translate0) translate0 = location(point); + scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k); + translateTo(point, translate0); + zoomed(event_); + } + function mousewheelreset() { + translate0 = null; + } + function dblclicked() { + var event_ = event.of(this, arguments), p = d3.mouse(this), l = location(p), k = Math.log(view.k) / Math.LN2; + zoomstarted(event_); + scaleTo(Math.pow(2, d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1)); + translateTo(p, l); + zoomed(event_); + zoomended(event_); + } + return d3.rebind(zoom, event, "on"); + }; + var d3_behavior_zoomInfinity = [ 0, Infinity ]; + var d3_behavior_zoomDelta, d3_behavior_zoomWheel = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() { + return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1); + }, "wheel") : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() { + return d3.event.wheelDelta; + }, "mousewheel") : (d3_behavior_zoomDelta = function() { + return -d3.event.detail; + }, "MozMousePixelScroll"); + function d3_Color() {} + d3_Color.prototype.toString = function() { + return this.rgb() + ""; + }; + d3.hsl = function(h, s, l) { + return arguments.length === 1 ? h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l) : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) : d3_hsl(+h, +s, +l); + }; + function d3_hsl(h, s, l) { + return new d3_Hsl(h, s, l); + } + function d3_Hsl(h, s, l) { + this.h = h; + this.s = s; + this.l = l; + } + var d3_hslPrototype = d3_Hsl.prototype = new d3_Color(); + d3_hslPrototype.brighter = function(k) { + k = Math.pow(.7, arguments.length ? k : 1); + return d3_hsl(this.h, this.s, this.l / k); + }; + d3_hslPrototype.darker = function(k) { + k = Math.pow(.7, arguments.length ? k : 1); + return d3_hsl(this.h, this.s, k * this.l); + }; + d3_hslPrototype.rgb = function() { + return d3_hsl_rgb(this.h, this.s, this.l); + }; + function d3_hsl_rgb(h, s, l) { + var m1, m2; + h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h; + s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s; + l = l < 0 ? 0 : l > 1 ? 1 : l; + m2 = l <= .5 ? l * (1 + s) : l + s - l * s; + m1 = 2 * l - m2; + function v(h) { + if (h > 360) h -= 360; else if (h < 0) h += 360; + if (h < 60) return m1 + (m2 - m1) * h / 60; + if (h < 180) return m2; + if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60; + return m1; + } + function vv(h) { + return Math.round(v(h) * 255); + } + return d3_rgb(vv(h + 120), vv(h), vv(h - 120)); + } + d3.hcl = function(h, c, l) { + return arguments.length === 1 ? h instanceof d3_Hcl ? d3_hcl(h.h, h.c, h.l) : h instanceof d3_Lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : d3_hcl(+h, +c, +l); + }; + function d3_hcl(h, c, l) { + return new d3_Hcl(h, c, l); + } + function d3_Hcl(h, c, l) { + this.h = h; + this.c = c; + this.l = l; + } + var d3_hclPrototype = d3_Hcl.prototype = new d3_Color(); + d3_hclPrototype.brighter = function(k) { + return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1))); + }; + d3_hclPrototype.darker = function(k) { + return d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1))); + }; + d3_hclPrototype.rgb = function() { + return d3_hcl_lab(this.h, this.c, this.l).rgb(); + }; + function d3_hcl_lab(h, c, l) { + if (isNaN(h)) h = 0; + if (isNaN(c)) c = 0; + return d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c); + } + d3.lab = function(l, a, b) { + return arguments.length === 1 ? l instanceof d3_Lab ? d3_lab(l.l, l.a, l.b) : l instanceof d3_Hcl ? d3_hcl_lab(l.l, l.c, l.h) : d3_rgb_lab((l = d3.rgb(l)).r, l.g, l.b) : d3_lab(+l, +a, +b); + }; + function d3_lab(l, a, b) { + return new d3_Lab(l, a, b); + } + function d3_Lab(l, a, b) { + this.l = l; + this.a = a; + this.b = b; + } + var d3_lab_K = 18; + var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883; + var d3_labPrototype = d3_Lab.prototype = new d3_Color(); + d3_labPrototype.brighter = function(k) { + return d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b); + }; + d3_labPrototype.darker = function(k) { + return d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b); + }; + d3_labPrototype.rgb = function() { + return d3_lab_rgb(this.l, this.a, this.b); + }; + function d3_lab_rgb(l, a, b) { + var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200; + x = d3_lab_xyz(x) * d3_lab_X; + y = d3_lab_xyz(y) * d3_lab_Y; + z = d3_lab_xyz(z) * d3_lab_Z; + return d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z)); + } + function d3_lab_hcl(l, a, b) { + return l > 0 ? d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : d3_hcl(NaN, NaN, l); + } + function d3_lab_xyz(x) { + return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037; + } + function d3_xyz_lab(x) { + return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29; + } + function d3_xyz_rgb(r) { + return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055)); + } + d3.rgb = function(r, g, b) { + return arguments.length === 1 ? r instanceof d3_Rgb ? d3_rgb(r.r, r.g, r.b) : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) : d3_rgb(~~r, ~~g, ~~b); + }; + function d3_rgbNumber(value) { + return d3_rgb(value >> 16, value >> 8 & 255, value & 255); + } + function d3_rgbString(value) { + return d3_rgbNumber(value) + ""; + } + function d3_rgb(r, g, b) { + return new d3_Rgb(r, g, b); + } + function d3_Rgb(r, g, b) { + this.r = r; + this.g = g; + this.b = b; + } + var d3_rgbPrototype = d3_Rgb.prototype = new d3_Color(); + d3_rgbPrototype.brighter = function(k) { + k = Math.pow(.7, arguments.length ? k : 1); + var r = this.r, g = this.g, b = this.b, i = 30; + if (!r && !g && !b) return d3_rgb(i, i, i); + if (r && r < i) r = i; + if (g && g < i) g = i; + if (b && b < i) b = i; + return d3_rgb(Math.min(255, ~~(r / k)), Math.min(255, ~~(g / k)), Math.min(255, ~~(b / k))); + }; + d3_rgbPrototype.darker = function(k) { + k = Math.pow(.7, arguments.length ? k : 1); + return d3_rgb(~~(k * this.r), ~~(k * this.g), ~~(k * this.b)); + }; + d3_rgbPrototype.hsl = function() { + return d3_rgb_hsl(this.r, this.g, this.b); + }; + d3_rgbPrototype.toString = function() { + return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b); + }; + function d3_rgb_hex(v) { + return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16); + } + function d3_rgb_parse(format, rgb, hsl) { + var r = 0, g = 0, b = 0, m1, m2, name; + m1 = /([a-z]+)\((.*)\)/i.exec(format); + if (m1) { + m2 = m1[2].split(","); + switch (m1[1]) { + case "hsl": + { + return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100); + } + + case "rgb": + { + return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2])); + } + } + } + if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b); + if (format != null && format.charAt(0) === "#") { + if (format.length === 4) { + r = format.charAt(1); + r += r; + g = format.charAt(2); + g += g; + b = format.charAt(3); + b += b; + } else if (format.length === 7) { + r = format.substring(1, 3); + g = format.substring(3, 5); + b = format.substring(5, 7); + } + r = parseInt(r, 16); + g = parseInt(g, 16); + b = parseInt(b, 16); + } + return rgb(r, g, b); + } + function d3_rgb_hsl(r, g, b) { + var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2; + if (d) { + s = l < .5 ? d / (max + min) : d / (2 - max - min); + if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4; + h *= 60; + } else { + h = NaN; + s = l > 0 && l < 1 ? 0 : h; + } + return d3_hsl(h, s, l); + } + function d3_rgb_lab(r, g, b) { + r = d3_rgb_xyz(r); + g = d3_rgb_xyz(g); + b = d3_rgb_xyz(b); + var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z); + return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z)); + } + function d3_rgb_xyz(r) { + return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4); + } + function d3_rgb_parseNumber(c) { + var f = parseFloat(c); + return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f; + } + var d3_rgb_names = d3.map({ + aliceblue: 15792383, + antiquewhite: 16444375, + aqua: 65535, + aquamarine: 8388564, + azure: 15794175, + beige: 16119260, + bisque: 16770244, + black: 0, + blanchedalmond: 16772045, + blue: 255, + blueviolet: 9055202, + brown: 10824234, + burlywood: 14596231, + cadetblue: 6266528, + chartreuse: 8388352, + chocolate: 13789470, + coral: 16744272, + cornflowerblue: 6591981, + cornsilk: 16775388, + crimson: 14423100, + cyan: 65535, + darkblue: 139, + darkcyan: 35723, + darkgoldenrod: 12092939, + darkgray: 11119017, + darkgreen: 25600, + darkgrey: 11119017, + darkkhaki: 12433259, + darkmagenta: 9109643, + darkolivegreen: 5597999, + darkorange: 16747520, + darkorchid: 10040012, + darkred: 9109504, + darksalmon: 15308410, + darkseagreen: 9419919, + darkslateblue: 4734347, + darkslategray: 3100495, + darkslategrey: 3100495, + darkturquoise: 52945, + darkviolet: 9699539, + deeppink: 16716947, + deepskyblue: 49151, + dimgray: 6908265, + dimgrey: 6908265, + dodgerblue: 2003199, + firebrick: 11674146, + floralwhite: 16775920, + forestgreen: 2263842, + fuchsia: 16711935, + gainsboro: 14474460, + ghostwhite: 16316671, + gold: 16766720, + goldenrod: 14329120, + gray: 8421504, + green: 32768, + greenyellow: 11403055, + grey: 8421504, + honeydew: 15794160, + hotpink: 16738740, + indianred: 13458524, + indigo: 4915330, + ivory: 16777200, + khaki: 15787660, + lavender: 15132410, + lavenderblush: 16773365, + lawngreen: 8190976, + lemonchiffon: 16775885, + lightblue: 11393254, + lightcoral: 15761536, + lightcyan: 14745599, + lightgoldenrodyellow: 16448210, + lightgray: 13882323, + lightgreen: 9498256, + lightgrey: 13882323, + lightpink: 16758465, + lightsalmon: 16752762, + lightseagreen: 2142890, + lightskyblue: 8900346, + lightslategray: 7833753, + lightslategrey: 7833753, + lightsteelblue: 11584734, + lightyellow: 16777184, + lime: 65280, + limegreen: 3329330, + linen: 16445670, + magenta: 16711935, + maroon: 8388608, + mediumaquamarine: 6737322, + mediumblue: 205, + mediumorchid: 12211667, + mediumpurple: 9662683, + mediumseagreen: 3978097, + mediumslateblue: 8087790, + mediumspringgreen: 64154, + mediumturquoise: 4772300, + mediumvioletred: 13047173, + midnightblue: 1644912, + mintcream: 16121850, + mistyrose: 16770273, + moccasin: 16770229, + navajowhite: 16768685, + navy: 128, + oldlace: 16643558, + olive: 8421376, + olivedrab: 7048739, + orange: 16753920, + orangered: 16729344, + orchid: 14315734, + palegoldenrod: 15657130, + palegreen: 10025880, + paleturquoise: 11529966, + palevioletred: 14381203, + papayawhip: 16773077, + peachpuff: 16767673, + peru: 13468991, + pink: 16761035, + plum: 14524637, + powderblue: 11591910, + purple: 8388736, + red: 16711680, + rosybrown: 12357519, + royalblue: 4286945, + saddlebrown: 9127187, + salmon: 16416882, + sandybrown: 16032864, + seagreen: 3050327, + seashell: 16774638, + sienna: 10506797, + silver: 12632256, + skyblue: 8900331, + slateblue: 6970061, + slategray: 7372944, + slategrey: 7372944, + snow: 16775930, + springgreen: 65407, + steelblue: 4620980, + tan: 13808780, + teal: 32896, + thistle: 14204888, + tomato: 16737095, + turquoise: 4251856, + violet: 15631086, + wheat: 16113331, + white: 16777215, + whitesmoke: 16119285, + yellow: 16776960, + yellowgreen: 10145074 + }); + d3_rgb_names.forEach(function(key, value) { + d3_rgb_names.set(key, d3_rgbNumber(value)); + }); + function d3_functor(v) { + return typeof v === "function" ? v : function() { + return v; + }; + } + d3.functor = d3_functor; + function d3_identity(d) { + return d; + } + d3.xhr = d3_xhrType(d3_identity); + function d3_xhrType(response) { + return function(url, mimeType, callback) { + if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType, + mimeType = null; + return d3_xhr(url, mimeType, response, callback); + }; + } + function d3_xhr(url, mimeType, response, callback) { + var xhr = {}, dispatch = d3.dispatch("beforesend", "progress", "load", "error"), headers = {}, request = new XMLHttpRequest(), responseType = null; + if (d3_window.XDomainRequest && !("withCredentials" in request) && /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest(); + "onload" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() { + request.readyState > 3 && respond(); + }; + function respond() { + var status = request.status, result; + if (!status && request.responseText || status >= 200 && status < 300 || status === 304) { + try { + result = response.call(xhr, request); + } catch (e) { + dispatch.error.call(xhr, e); + return; + } + dispatch.load.call(xhr, result); + } else { + dispatch.error.call(xhr, request); + } + } + request.onprogress = function(event) { + var o = d3.event; + d3.event = event; + try { + dispatch.progress.call(xhr, request); + } finally { + d3.event = o; + } + }; + xhr.header = function(name, value) { + name = (name + "").toLowerCase(); + if (arguments.length < 2) return headers[name]; + if (value == null) delete headers[name]; else headers[name] = value + ""; + return xhr; + }; + xhr.mimeType = function(value) { + if (!arguments.length) return mimeType; + mimeType = value == null ? null : value + ""; + return xhr; + }; + xhr.responseType = function(value) { + if (!arguments.length) return responseType; + responseType = value; + return xhr; + }; + xhr.response = function(value) { + response = value; + return xhr; + }; + [ "get", "post" ].forEach(function(method) { + xhr[method] = function() { + return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments))); + }; + }); + xhr.send = function(method, data, callback) { + if (arguments.length === 2 && typeof data === "function") callback = data, data = null; + request.open(method, url, true); + if (mimeType != null && !("accept" in headers)) headers["accept"] = mimeType + ",*/*"; + if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]); + if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType); + if (responseType != null) request.responseType = responseType; + if (callback != null) xhr.on("error", callback).on("load", function(request) { + callback(null, request); + }); + dispatch.beforesend.call(xhr, request); + request.send(data == null ? null : data); + return xhr; + }; + xhr.abort = function() { + request.abort(); + return xhr; + }; + d3.rebind(xhr, dispatch, "on"); + return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback)); + } + function d3_xhr_fixCallback(callback) { + return callback.length === 1 ? function(error, request) { + callback(error == null ? request : null); + } : callback; + } + d3.dsv = function(delimiter, mimeType) { + var reFormat = new RegExp('["' + delimiter + "\n]"), delimiterCode = delimiter.charCodeAt(0); + function dsv(url, row, callback) { + if (arguments.length < 3) callback = row, row = null; + var xhr = d3.xhr(url, mimeType, callback); + xhr.row = function(_) { + return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row; + }; + return xhr.row(row); + } + function response(request) { + return dsv.parse(request.responseText); + } + function typedResponse(f) { + return function(request) { + return dsv.parse(request.responseText, f); + }; + } + dsv.parse = function(text, f) { + var o; + return dsv.parseRows(text, function(row, i) { + if (o) return o(row, i - 1); + var a = new Function("d", "return {" + row.map(function(name, i) { + return JSON.stringify(name) + ": d[" + i + "]"; + }).join(",") + "}"); + o = f ? function(row, i) { + return f(a(row), i); + } : a; + }); + }; + dsv.parseRows = function(text, f) { + var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol; + function token() { + if (I >= N) return EOF; + if (eol) return eol = false, EOL; + var j = I; + if (text.charCodeAt(j) === 34) { + var i = j; + while (i++ < N) { + if (text.charCodeAt(i) === 34) { + if (text.charCodeAt(i + 1) !== 34) break; + ++i; + } + } + I = i + 2; + var c = text.charCodeAt(i + 1); + if (c === 13) { + eol = true; + if (text.charCodeAt(i + 2) === 10) ++I; + } else if (c === 10) { + eol = true; + } + return text.substring(j + 1, i).replace(/""/g, '"'); + } + while (I < N) { + var c = text.charCodeAt(I++), k = 1; + if (c === 10) eol = true; else if (c === 13) { + eol = true; + if (text.charCodeAt(I) === 10) ++I, ++k; + } else if (c !== delimiterCode) continue; + return text.substring(j, I - k); + } + return text.substring(j); + } + while ((t = token()) !== EOF) { + var a = []; + while (t !== EOL && t !== EOF) { + a.push(t); + t = token(); + } + if (f && !(a = f(a, n++))) continue; + rows.push(a); + } + return rows; + }; + dsv.format = function(rows) { + if (Array.isArray(rows[0])) return dsv.formatRows(rows); + var fieldSet = new d3_Set(), fields = []; + rows.forEach(function(row) { + for (var field in row) { + if (!fieldSet.has(field)) { + fields.push(fieldSet.add(field)); + } + } + }); + return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) { + return fields.map(function(field) { + return formatValue(row[field]); + }).join(delimiter); + })).join("\n"); + }; + dsv.formatRows = function(rows) { + return rows.map(formatRow).join("\n"); + }; + function formatRow(row) { + return row.map(formatValue).join(delimiter); + } + function formatValue(text) { + return reFormat.test(text) ? '"' + text.replace(/\"/g, '""') + '"' : text; + } + return dsv; + }; + d3.csv = d3.dsv(",", "text/csv"); + d3.tsv = d3.dsv(" ", "text/tab-separated-values"); + var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_active, d3_timer_frame = d3_window[d3_vendorSymbol(d3_window, "requestAnimationFrame")] || function(callback) { + setTimeout(callback, 17); + }; + d3.timer = function(callback, delay, then) { + var n = arguments.length; + if (n < 2) delay = 0; + if (n < 3) then = Date.now(); + var time = then + delay, timer = { + callback: callback, + time: time, + next: null + }; + if (d3_timer_queueTail) d3_timer_queueTail.next = timer; else d3_timer_queueHead = timer; + d3_timer_queueTail = timer; + if (!d3_timer_interval) { + d3_timer_timeout = clearTimeout(d3_timer_timeout); + d3_timer_interval = 1; + d3_timer_frame(d3_timer_step); + } + }; + function d3_timer_step() { + var now = d3_timer_mark(), delay = d3_timer_sweep() - now; + if (delay > 24) { + if (isFinite(delay)) { + clearTimeout(d3_timer_timeout); + d3_timer_timeout = setTimeout(d3_timer_step, delay); + } + d3_timer_interval = 0; + } else { + d3_timer_interval = 1; + d3_timer_frame(d3_timer_step); + } + } + d3.timer.flush = function() { + d3_timer_mark(); + d3_timer_sweep(); + }; + function d3_timer_replace(callback, delay, then) { + var n = arguments.length; + if (n < 2) delay = 0; + if (n < 3) then = Date.now(); + d3_timer_active.callback = callback; + d3_timer_active.time = then + delay; + } + function d3_timer_mark() { + var now = Date.now(); + d3_timer_active = d3_timer_queueHead; + while (d3_timer_active) { + if (now >= d3_timer_active.time) d3_timer_active.flush = d3_timer_active.callback(now - d3_timer_active.time); + d3_timer_active = d3_timer_active.next; + } + return now; + } + function d3_timer_sweep() { + var t0, t1 = d3_timer_queueHead, time = Infinity; + while (t1) { + if (t1.flush) { + t1 = t0 ? t0.next = t1.next : d3_timer_queueHead = t1.next; + } else { + if (t1.time < time) time = t1.time; + t1 = (t0 = t1).next; + } + } + d3_timer_queueTail = t0; + return time; + } + var d3_format_decimalPoint = ".", d3_format_thousandsSeparator = ",", d3_format_grouping = [ 3, 3 ], d3_format_currencySymbol = "$"; + var d3_formatPrefixes = [ "y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" ].map(d3_formatPrefix); + d3.formatPrefix = function(value, precision) { + var i = 0; + if (value) { + if (value < 0) value *= -1; + if (precision) value = d3.round(value, d3_format_precision(value, precision)); + i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10); + i = Math.max(-24, Math.min(24, Math.floor((i <= 0 ? i + 1 : i - 1) / 3) * 3)); + } + return d3_formatPrefixes[8 + i / 3]; + }; + function d3_formatPrefix(d, i) { + var k = Math.pow(10, Math.abs(8 - i) * 3); + return { + scale: i > 8 ? function(d) { + return d / k; + } : function(d) { + return d * k; + }, + symbol: d + }; + } + d3.round = function(x, n) { + return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x); + }; + d3.format = function(specifier) { + var match = d3_format_re.exec(specifier), fill = match[1] || " ", align = match[2] || ">", sign = match[3] || "", symbol = match[4] || "", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, suffix = "", integer = false; + if (precision) precision = +precision.substring(1); + if (zfill || fill === "0" && align === "=") { + zfill = fill = "0"; + align = "="; + if (comma) width -= Math.floor((width - 1) / 4); + } + switch (type) { + case "n": + comma = true; + type = "g"; + break; + + case "%": + scale = 100; + suffix = "%"; + type = "f"; + break; + + case "p": + scale = 100; + suffix = "%"; + type = "r"; + break; + + case "b": + case "o": + case "x": + case "X": + if (symbol === "#") symbol = "0" + type.toLowerCase(); + + case "c": + case "d": + integer = true; + precision = 0; + break; + + case "s": + scale = -1; + type = "r"; + break; + } + if (symbol === "#") symbol = ""; else if (symbol === "$") symbol = d3_format_currencySymbol; + if (type == "r" && !precision) type = "g"; + if (precision != null) { + if (type == "g") precision = Math.max(1, Math.min(21, precision)); else if (type == "e" || type == "f") precision = Math.max(0, Math.min(20, precision)); + } + type = d3_format_types.get(type) || d3_format_typeDefault; + var zcomma = zfill && comma; + return function(value) { + if (integer && value % 1) return ""; + var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign; + if (scale < 0) { + var prefix = d3.formatPrefix(value, precision); + value = prefix.scale(value); + suffix = prefix.symbol; + } else { + value *= scale; + } + value = type(value, precision); + var i = value.lastIndexOf("."), before = i < 0 ? value : value.substring(0, i), after = i < 0 ? "" : d3_format_decimalPoint + value.substring(i + 1); + if (!zfill && comma) before = d3_format_group(before); + var length = symbol.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : ""; + if (zcomma) before = d3_format_group(padding + before); + negative += symbol; + value = before + after; + return (align === "<" ? negative + value + padding : align === ">" ? padding + negative + value : align === "^" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + suffix; + }; + }; + var d3_format_re = /(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i; + var d3_format_types = d3.map({ + b: function(x) { + return x.toString(2); + }, + c: function(x) { + return String.fromCharCode(x); + }, + o: function(x) { + return x.toString(8); + }, + x: function(x) { + return x.toString(16); + }, + X: function(x) { + return x.toString(16).toUpperCase(); + }, + g: function(x, p) { + return x.toPrecision(p); + }, + e: function(x, p) { + return x.toExponential(p); + }, + f: function(x, p) { + return x.toFixed(p); + }, + r: function(x, p) { + return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p)))); + } + }); + function d3_format_precision(x, p) { + return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1); + } + function d3_format_typeDefault(x) { + return x + ""; + } + var d3_format_group = d3_identity; + if (d3_format_grouping) { + var d3_format_groupingLength = d3_format_grouping.length; + d3_format_group = function(value) { + var i = value.length, t = [], j = 0, g = d3_format_grouping[0]; + while (i > 0 && g > 0) { + t.push(value.substring(i -= g, i + g)); + g = d3_format_grouping[j = (j + 1) % d3_format_groupingLength]; + } + return t.reverse().join(d3_format_thousandsSeparator); + }; + } + d3.geo = {}; + function d3_adder() {} + d3_adder.prototype = { + s: 0, + t: 0, + add: function(y) { + d3_adderSum(y, this.t, d3_adderTemp); + d3_adderSum(d3_adderTemp.s, this.s, this); + if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t; + }, + reset: function() { + this.s = this.t = 0; + }, + valueOf: function() { + return this.s; + } + }; + var d3_adderTemp = new d3_adder(); + function d3_adderSum(a, b, o) { + var x = o.s = a + b, bv = x - a, av = x - bv; + o.t = a - av + (b - bv); + } + d3.geo.stream = function(object, listener) { + if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) { + d3_geo_streamObjectType[object.type](object, listener); + } else { + d3_geo_streamGeometry(object, listener); + } + }; + function d3_geo_streamGeometry(geometry, listener) { + if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) { + d3_geo_streamGeometryType[geometry.type](geometry, listener); + } + } + var d3_geo_streamObjectType = { + Feature: function(feature, listener) { + d3_geo_streamGeometry(feature.geometry, listener); + }, + FeatureCollection: function(object, listener) { + var features = object.features, i = -1, n = features.length; + while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener); + } + }; + var d3_geo_streamGeometryType = { + Sphere: function(object, listener) { + listener.sphere(); + }, + Point: function(object, listener) { + object = object.coordinates; + listener.point(object[0], object[1], object[2]); + }, + MultiPoint: function(object, listener) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]); + }, + LineString: function(object, listener) { + d3_geo_streamLine(object.coordinates, listener, 0); + }, + MultiLineString: function(object, listener) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0); + }, + Polygon: function(object, listener) { + d3_geo_streamPolygon(object.coordinates, listener); + }, + MultiPolygon: function(object, listener) { + var coordinates = object.coordinates, i = -1, n = coordinates.length; + while (++i < n) d3_geo_streamPolygon(coordinates[i], listener); + }, + GeometryCollection: function(object, listener) { + var geometries = object.geometries, i = -1, n = geometries.length; + while (++i < n) d3_geo_streamGeometry(geometries[i], listener); + } + }; + function d3_geo_streamLine(coordinates, listener, closed) { + var i = -1, n = coordinates.length - closed, coordinate; + listener.lineStart(); + while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]); + listener.lineEnd(); + } + function d3_geo_streamPolygon(coordinates, listener) { + var i = -1, n = coordinates.length; + listener.polygonStart(); + while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1); + listener.polygonEnd(); + } + d3.geo.area = function(object) { + d3_geo_areaSum = 0; + d3.geo.stream(object, d3_geo_area); + return d3_geo_areaSum; + }; + var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder(); + var d3_geo_area = { + sphere: function() { + d3_geo_areaSum += 4 * π; + }, + point: d3_noop, + lineStart: d3_noop, + lineEnd: d3_noop, + polygonStart: function() { + d3_geo_areaRingSum.reset(); + d3_geo_area.lineStart = d3_geo_areaRingStart; + }, + polygonEnd: function() { + var area = 2 * d3_geo_areaRingSum; + d3_geo_areaSum += area < 0 ? 4 * π + area : area; + d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop; + } + }; + function d3_geo_areaRingStart() { + var λ00, φ00, λ0, cosφ0, sinφ0; + d3_geo_area.point = function(λ, φ) { + d3_geo_area.point = nextPoint; + λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), + sinφ0 = Math.sin(φ); + }; + function nextPoint(λ, φ) { + λ *= d3_radians; + φ = φ * d3_radians / 2 + π / 4; + var dλ = λ - λ0, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(dλ), v = k * Math.sin(dλ); + d3_geo_areaRingSum.add(Math.atan2(v, u)); + λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ; + } + d3_geo_area.lineEnd = function() { + nextPoint(λ00, φ00); + }; + } + function d3_geo_cartesian(spherical) { + var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ); + return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ]; + } + function d3_geo_cartesianDot(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; + } + function d3_geo_cartesianCross(a, b) { + return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ]; + } + function d3_geo_cartesianAdd(a, b) { + a[0] += b[0]; + a[1] += b[1]; + a[2] += b[2]; + } + function d3_geo_cartesianScale(vector, k) { + return [ vector[0] * k, vector[1] * k, vector[2] * k ]; + } + function d3_geo_cartesianNormalize(d) { + var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]); + d[0] /= l; + d[1] /= l; + d[2] /= l; + } + function d3_geo_spherical(cartesian) { + return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ]; + } + function d3_geo_sphericalEqual(a, b) { + return Math.abs(a[0] - b[0]) < ε && Math.abs(a[1] - b[1]) < ε; + } + d3.geo.bounds = function() { + var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range; + var bound = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: function() { + bound.point = ringPoint; + bound.lineStart = ringStart; + bound.lineEnd = ringEnd; + dλSum = 0; + d3_geo_area.polygonStart(); + }, + polygonEnd: function() { + d3_geo_area.polygonEnd(); + bound.point = point; + bound.lineStart = lineStart; + bound.lineEnd = lineEnd; + if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90; + range[0] = λ0, range[1] = λ1; + } + }; + function point(λ, φ) { + ranges.push(range = [ λ0 = λ, λ1 = λ ]); + if (φ < φ0) φ0 = φ; + if (φ > φ1) φ1 = φ; + } + function linePoint(λ, φ) { + var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]); + if (p0) { + var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal); + d3_geo_cartesianNormalize(inflection); + inflection = d3_geo_spherical(inflection); + var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = Math.abs(dλ) > 180; + if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) { + var φi = inflection[1] * d3_degrees; + if (φi > φ1) φ1 = φi; + } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) { + var φi = -inflection[1] * d3_degrees; + if (φi < φ0) φ0 = φi; + } else { + if (φ < φ0) φ0 = φ; + if (φ > φ1) φ1 = φ; + } + if (antimeridian) { + if (λ < λ_) { + if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ; + } else { + if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ; + } + } else { + if (λ1 >= λ0) { + if (λ < λ0) λ0 = λ; + if (λ > λ1) λ1 = λ; + } else { + if (λ > λ_) { + if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ; + } else { + if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ; + } + } + } + } else { + point(λ, φ); + } + p0 = p, λ_ = λ; + } + function lineStart() { + bound.point = linePoint; + } + function lineEnd() { + range[0] = λ0, range[1] = λ1; + bound.point = point; + p0 = null; + } + function ringPoint(λ, φ) { + if (p0) { + var dλ = λ - λ_; + dλSum += Math.abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ; + } else λ__ = λ, φ__ = φ; + d3_geo_area.point(λ, φ); + linePoint(λ, φ); + } + function ringStart() { + d3_geo_area.lineStart(); + } + function ringEnd() { + ringPoint(λ__, φ__); + d3_geo_area.lineEnd(); + if (Math.abs(dλSum) > ε) λ0 = -(λ1 = 180); + range[0] = λ0, range[1] = λ1; + p0 = null; + } + function angle(λ0, λ1) { + return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1; + } + function compareRanges(a, b) { + return a[0] - b[0]; + } + function withinRange(x, range) { + return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x; + } + return function(feature) { + φ1 = λ1 = -(λ0 = φ0 = Infinity); + ranges = []; + d3.geo.stream(feature, bound); + var n = ranges.length; + if (n) { + ranges.sort(compareRanges); + for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) { + b = ranges[i]; + if (withinRange(b[0], a) || withinRange(b[1], a)) { + if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1]; + if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0]; + } else { + merged.push(a = b); + } + } + var best = -Infinity, dλ; + for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) { + b = merged[i]; + if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1]; + } + } + ranges = range = null; + return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ]; + }; + }(); + d3.geo.centroid = function(object) { + d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0; + d3.geo.stream(object, d3_geo_centroid); + var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z; + if (m < ε2) { + x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1; + if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0; + m = x * x + y * y + z * z; + if (m < ε2) return [ NaN, NaN ]; + } + return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ]; + }; + var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2; + var d3_geo_centroid = { + sphere: d3_noop, + point: d3_geo_centroidPoint, + lineStart: d3_geo_centroidLineStart, + lineEnd: d3_geo_centroidLineEnd, + polygonStart: function() { + d3_geo_centroid.lineStart = d3_geo_centroidRingStart; + }, + polygonEnd: function() { + d3_geo_centroid.lineStart = d3_geo_centroidLineStart; + } + }; + function d3_geo_centroidPoint(λ, φ) { + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians); + d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ)); + } + function d3_geo_centroidPointXYZ(x, y, z) { + ++d3_geo_centroidW0; + d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0; + d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0; + d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0; + } + function d3_geo_centroidLineStart() { + var x0, y0, z0; + d3_geo_centroid.point = function(λ, φ) { + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians); + x0 = cosφ * Math.cos(λ); + y0 = cosφ * Math.sin(λ); + z0 = Math.sin(φ); + d3_geo_centroid.point = nextPoint; + d3_geo_centroidPointXYZ(x0, y0, z0); + }; + function nextPoint(λ, φ) { + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z); + d3_geo_centroidW1 += w; + d3_geo_centroidX1 += w * (x0 + (x0 = x)); + d3_geo_centroidY1 += w * (y0 + (y0 = y)); + d3_geo_centroidZ1 += w * (z0 + (z0 = z)); + d3_geo_centroidPointXYZ(x0, y0, z0); + } + } + function d3_geo_centroidLineEnd() { + d3_geo_centroid.point = d3_geo_centroidPoint; + } + function d3_geo_centroidRingStart() { + var λ00, φ00, x0, y0, z0; + d3_geo_centroid.point = function(λ, φ) { + λ00 = λ, φ00 = φ; + d3_geo_centroid.point = nextPoint; + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians); + x0 = cosφ * Math.cos(λ); + y0 = cosφ * Math.sin(λ); + z0 = Math.sin(φ); + d3_geo_centroidPointXYZ(x0, y0, z0); + }; + d3_geo_centroid.lineEnd = function() { + nextPoint(λ00, φ00); + d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd; + d3_geo_centroid.point = d3_geo_centroidPoint; + }; + function nextPoint(λ, φ) { + λ *= d3_radians; + var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u); + d3_geo_centroidX2 += v * cx; + d3_geo_centroidY2 += v * cy; + d3_geo_centroidZ2 += v * cz; + d3_geo_centroidW1 += w; + d3_geo_centroidX1 += w * (x0 + (x0 = x)); + d3_geo_centroidY1 += w * (y0 + (y0 = y)); + d3_geo_centroidZ1 += w * (z0 + (z0 = z)); + d3_geo_centroidPointXYZ(x0, y0, z0); + } + } + function d3_true() { + return true; + } + function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) { + var subject = [], clip = []; + segments.forEach(function(segment) { + if ((n = segment.length - 1) <= 0) return; + var n, p0 = segment[0], p1 = segment[n]; + if (d3_geo_sphericalEqual(p0, p1)) { + listener.lineStart(); + for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]); + listener.lineEnd(); + return; + } + var a = { + point: p0, + points: segment, + other: null, + visited: false, + entry: true, + subject: true + }, b = { + point: p0, + points: [ p0 ], + other: a, + visited: false, + entry: false, + subject: false + }; + a.other = b; + subject.push(a); + clip.push(b); + a = { + point: p1, + points: [ p1 ], + other: null, + visited: false, + entry: false, + subject: true + }; + b = { + point: p1, + points: [ p1 ], + other: a, + visited: false, + entry: true, + subject: false + }; + a.other = b; + subject.push(a); + clip.push(b); + }); + clip.sort(compare); + d3_geo_clipPolygonLinkCircular(subject); + d3_geo_clipPolygonLinkCircular(clip); + if (!subject.length) return; + for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) { + clip[i].entry = entry = !entry; + } + var start = subject[0], current, points, point; + while (1) { + current = start; + while (current.visited) if ((current = current.next) === start) return; + points = current.points; + listener.lineStart(); + do { + current.visited = current.other.visited = true; + if (current.entry) { + if (current.subject) { + for (var i = 0; i < points.length; i++) listener.point((point = points[i])[0], point[1]); + } else { + interpolate(current.point, current.next.point, 1, listener); + } + current = current.next; + } else { + if (current.subject) { + points = current.prev.points; + for (var i = points.length; --i >= 0; ) listener.point((point = points[i])[0], point[1]); + } else { + interpolate(current.point, current.prev.point, -1, listener); + } + current = current.prev; + } + current = current.other; + points = current.points; + } while (!current.visited); + listener.lineEnd(); + } + } + function d3_geo_clipPolygonLinkCircular(array) { + if (!(n = array.length)) return; + var n, i = 0, a = array[0], b; + while (++i < n) { + a.next = b = array[i]; + b.prev = a; + a = b; + } + a.next = b = array[0]; + b.prev = a; + } + function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) { + return function(rotate, listener) { + var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]); + var clip = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: function() { + clip.point = pointRing; + clip.lineStart = ringStart; + clip.lineEnd = ringEnd; + segments = []; + polygon = []; + listener.polygonStart(); + }, + polygonEnd: function() { + clip.point = point; + clip.lineStart = lineStart; + clip.lineEnd = lineEnd; + segments = d3.merge(segments); + var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon); + if (segments.length) { + d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener); + } else if (clipStartInside) { + listener.lineStart(); + interpolate(null, null, 1, listener); + listener.lineEnd(); + } + listener.polygonEnd(); + segments = polygon = null; + }, + sphere: function() { + listener.polygonStart(); + listener.lineStart(); + interpolate(null, null, 1, listener); + listener.lineEnd(); + listener.polygonEnd(); + } + }; + function point(λ, φ) { + var point = rotate(λ, φ); + if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ); + } + function pointLine(λ, φ) { + var point = rotate(λ, φ); + line.point(point[0], point[1]); + } + function lineStart() { + clip.point = pointLine; + line.lineStart(); + } + function lineEnd() { + clip.point = point; + line.lineEnd(); + } + var segments; + var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygon, ring; + function pointRing(λ, φ) { + ring.push([ λ, φ ]); + var point = rotate(λ, φ); + ringListener.point(point[0], point[1]); + } + function ringStart() { + ringListener.lineStart(); + ring = []; + } + function ringEnd() { + pointRing(ring[0][0], ring[0][1]); + ringListener.lineEnd(); + var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length; + ring.pop(); + polygon.push(ring); + ring = null; + if (!n) return; + if (clean & 1) { + segment = ringSegments[0]; + var n = segment.length - 1, i = -1, point; + listener.lineStart(); + while (++i < n) listener.point((point = segment[i])[0], point[1]); + listener.lineEnd(); + return; + } + if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift())); + segments.push(ringSegments.filter(d3_geo_clipSegmentLength1)); + } + return clip; + }; + } + function d3_geo_clipSegmentLength1(segment) { + return segment.length > 1; + } + function d3_geo_clipBufferListener() { + var lines = [], line; + return { + lineStart: function() { + lines.push(line = []); + }, + point: function(λ, φ) { + line.push([ λ, φ ]); + }, + lineEnd: d3_noop, + buffer: function() { + var buffer = lines; + lines = []; + line = null; + return buffer; + }, + rejoin: function() { + if (lines.length > 1) lines.push(lines.pop().concat(lines.shift())); + } + }; + } + function d3_geo_clipSort(a, b) { + return ((a = a.point)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.point)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]); + } + function d3_geo_pointInPolygon(point, polygon) { + var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0; + d3_geo_areaRingSum.reset(); + for (var i = 0, n = polygon.length; i < n; ++i) { + var ring = polygon[i], m = ring.length; + if (!m) continue; + var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1; + while (true) { + if (j === m) j = 0; + point = ring[j]; + var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, antimeridian = Math.abs(dλ) > π, k = sinφ0 * sinφ; + d3_geo_areaRingSum.add(Math.atan2(k * Math.sin(dλ), cosφ0 * cosφ + k * Math.cos(dλ))); + polarAngle += antimeridian ? dλ + (dλ >= 0 ? 2 : -2) * π : dλ; + if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) { + var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point)); + d3_geo_cartesianNormalize(arc); + var intersection = d3_geo_cartesianCross(meridianNormal, arc); + d3_geo_cartesianNormalize(intersection); + var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]); + if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) { + winding += antimeridian ^ dλ >= 0 ? 1 : -1; + } + } + if (!j++) break; + λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point; + } + } + return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ winding & 1; + } + var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]); + function d3_geo_clipAntimeridianLine(listener) { + var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean; + return { + lineStart: function() { + listener.lineStart(); + clean = 1; + }, + point: function(λ1, φ1) { + var sλ1 = λ1 > 0 ? π : -π, dλ = Math.abs(λ1 - λ0); + if (Math.abs(dλ - π) < ε) { + listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ); + listener.point(sλ0, φ0); + listener.lineEnd(); + listener.lineStart(); + listener.point(sλ1, φ0); + listener.point(λ1, φ0); + clean = 0; + } else if (sλ0 !== sλ1 && dλ >= π) { + if (Math.abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε; + if (Math.abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε; + φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1); + listener.point(sλ0, φ0); + listener.lineEnd(); + listener.lineStart(); + listener.point(sλ1, φ0); + clean = 0; + } + listener.point(λ0 = λ1, φ0 = φ1); + sλ0 = sλ1; + }, + lineEnd: function() { + listener.lineEnd(); + λ0 = φ0 = NaN; + }, + clean: function() { + return 2 - clean; + } + }; + } + function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) { + var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1); + return Math.abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2; + } + function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) { + var φ; + if (from == null) { + φ = direction * halfπ; + listener.point(-π, φ); + listener.point(0, φ); + listener.point(π, φ); + listener.point(π, 0); + listener.point(π, -φ); + listener.point(0, -φ); + listener.point(-π, -φ); + listener.point(-π, 0); + listener.point(-π, φ); + } else if (Math.abs(from[0] - to[0]) > ε) { + var s = (from[0] < to[0] ? 1 : -1) * π; + φ = direction * s / 2; + listener.point(-s, φ); + listener.point(0, φ); + listener.point(s, φ); + } else { + listener.point(to[0], to[1]); + } + } + function d3_geo_clipCircle(radius) { + var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = Math.abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians); + return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]); + function visible(λ, φ) { + return Math.cos(λ) * Math.cos(φ) > cr; + } + function clipLine(listener) { + var point0, c0, v0, v00, clean; + return { + lineStart: function() { + v00 = v0 = false; + clean = 1; + }, + point: function(λ, φ) { + var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0; + if (!point0 && (v00 = v0 = v)) listener.lineStart(); + if (v !== v0) { + point2 = intersect(point0, point1); + if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) { + point1[0] += ε; + point1[1] += ε; + v = visible(point1[0], point1[1]); + } + } + if (v !== v0) { + clean = 0; + if (v) { + listener.lineStart(); + point2 = intersect(point1, point0); + listener.point(point2[0], point2[1]); + } else { + point2 = intersect(point0, point1); + listener.point(point2[0], point2[1]); + listener.lineEnd(); + } + point0 = point2; + } else if (notHemisphere && point0 && smallRadius ^ v) { + var t; + if (!(c & c0) && (t = intersect(point1, point0, true))) { + clean = 0; + if (smallRadius) { + listener.lineStart(); + listener.point(t[0][0], t[0][1]); + listener.point(t[1][0], t[1][1]); + listener.lineEnd(); + } else { + listener.point(t[1][0], t[1][1]); + listener.lineEnd(); + listener.lineStart(); + listener.point(t[0][0], t[0][1]); + } + } + } + if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) { + listener.point(point1[0], point1[1]); + } + point0 = point1, v0 = v, c0 = c; + }, + lineEnd: function() { + if (v0) listener.lineEnd(); + point0 = null; + }, + clean: function() { + return clean | (v00 && v0) << 1; + } + }; + } + function intersect(a, b, two) { + var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b); + var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2; + if (!determinant) return !two && a; + var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2); + d3_geo_cartesianAdd(A, B); + var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1); + if (t2 < 0) return; + var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu); + d3_geo_cartesianAdd(q, A); + q = d3_geo_spherical(q); + if (!two) return q; + var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z; + if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z; + var δλ = λ1 - λ0, polar = Math.abs(δλ - π) < ε, meridian = polar || δλ < ε; + if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z; + if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (Math.abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) { + var q1 = d3_geo_cartesianScale(u, (-w + t) / uu); + d3_geo_cartesianAdd(q1, A); + return [ q, d3_geo_spherical(q1) ]; + } + } + function code(λ, φ) { + var r = smallRadius ? radius : π - radius, code = 0; + if (λ < -r) code |= 1; else if (λ > r) code |= 2; + if (φ < -r) code |= 4; else if (φ > r) code |= 8; + return code; + } + } + var d3_geo_clipExtentMAX = 1e9; + d3.geo.clipExtent = function() { + var x0, y0, x1, y1, stream, clip, clipExtent = { + stream: function(output) { + if (stream) stream.valid = false; + stream = clip(output); + stream.valid = true; + return stream; + }, + extent: function(_) { + if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ]; + clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]); + if (stream) stream.valid = false, stream = null; + return clipExtent; + } + }; + return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]); + }; + function d3_geo_clipExtent(x0, y0, x1, y1) { + return function(listener) { + var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), segments, polygon, ring; + var clip = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: function() { + listener = bufferListener; + segments = []; + polygon = []; + clean = true; + }, + polygonEnd: function() { + listener = listener_; + segments = d3.merge(segments); + var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length; + if (inside || visible) { + listener.polygonStart(); + if (inside) { + listener.lineStart(); + interpolate(null, null, 1, listener); + listener.lineEnd(); + } + if (visible) { + d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener); + } + listener.polygonEnd(); + } + segments = polygon = ring = null; + } + }; + function insidePolygon(p) { + var wn = 0, n = polygon.length, y = p[1]; + for (var i = 0; i < n; ++i) { + for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) { + b = v[j]; + if (a[1] <= y) { + if (b[1] > y && isLeft(a, b, p) > 0) ++wn; + } else { + if (b[1] <= y && isLeft(a, b, p) < 0) --wn; + } + a = b; + } + } + return wn !== 0; + } + function isLeft(a, b, c) { + return (b[0] - a[0]) * (c[1] - a[1]) - (c[0] - a[0]) * (b[1] - a[1]); + } + function interpolate(from, to, direction, listener) { + var a = 0, a1 = 0; + if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) { + do { + listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0); + } while ((a = (a + direction + 4) % 4) !== a1); + } else { + listener.point(to[0], to[1]); + } + } + function pointVisible(x, y) { + return x0 <= x && x <= x1 && y0 <= y && y <= y1; + } + function point(x, y) { + if (pointVisible(x, y)) listener.point(x, y); + } + var x__, y__, v__, x_, y_, v_, first, clean; + function lineStart() { + clip.point = linePoint; + if (polygon) polygon.push(ring = []); + first = true; + v_ = false; + x_ = y_ = NaN; + } + function lineEnd() { + if (segments) { + linePoint(x__, y__); + if (v__ && v_) bufferListener.rejoin(); + segments.push(bufferListener.buffer()); + } + clip.point = point; + if (v_) listener.lineEnd(); + } + function linePoint(x, y) { + x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x)); + y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y)); + var v = pointVisible(x, y); + if (polygon) ring.push([ x, y ]); + if (first) { + x__ = x, y__ = y, v__ = v; + first = false; + if (v) { + listener.lineStart(); + listener.point(x, y); + } + } else { + if (v && v_) listener.point(x, y); else { + var a = [ x_, y_ ], b = [ x, y ]; + if (clipLine(a, b)) { + if (!v_) { + listener.lineStart(); + listener.point(a[0], a[1]); + } + listener.point(b[0], b[1]); + if (!v) listener.lineEnd(); + clean = false; + } else if (v) { + listener.lineStart(); + listener.point(x, y); + clean = false; + } + } + } + x_ = x, y_ = y, v_ = v; + } + return clip; + }; + function corner(p, direction) { + return Math.abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : Math.abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : Math.abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2; + } + function compare(a, b) { + return comparePoints(a.point, b.point); + } + function comparePoints(a, b) { + var ca = corner(a, 1), cb = corner(b, 1); + return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0]; + } + function clipLine(a, b) { + var dx = b[0] - a[0], dy = b[1] - a[1], t = [ 0, 1 ]; + if (Math.abs(dx) < ε && Math.abs(dy) < ε) return x0 <= a[0] && a[0] <= x1 && y0 <= a[1] && a[1] <= y1; + if (d3_geo_clipExtentT(x0 - a[0], dx, t) && d3_geo_clipExtentT(a[0] - x1, -dx, t) && d3_geo_clipExtentT(y0 - a[1], dy, t) && d3_geo_clipExtentT(a[1] - y1, -dy, t)) { + if (t[1] < 1) { + b[0] = a[0] + t[1] * dx; + b[1] = a[1] + t[1] * dy; + } + if (t[0] > 0) { + a[0] += t[0] * dx; + a[1] += t[0] * dy; + } + return true; + } + return false; + } + } + function d3_geo_clipExtentT(num, denominator, t) { + if (Math.abs(denominator) < ε) return num <= 0; + var u = num / denominator; + if (denominator > 0) { + if (u > t[1]) return false; + if (u > t[0]) t[0] = u; + } else { + if (u < t[0]) return false; + if (u < t[1]) t[1] = u; + } + return true; + } + function d3_geo_compose(a, b) { + function compose(x, y) { + return x = a(x, y), b(x[0], x[1]); + } + if (a.invert && b.invert) compose.invert = function(x, y) { + return x = b.invert(x, y), x && a.invert(x[0], x[1]); + }; + return compose; + } + function d3_geo_conic(projectAt) { + var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1); + p.parallels = function(_) { + if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ]; + return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180); + }; + return p; + } + function d3_geo_conicEqualArea(φ0, φ1) { + var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n; + function forward(λ, φ) { + var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n; + return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ]; + } + forward.invert = function(x, y) { + var ρ0_y = ρ0 - y; + return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ]; + }; + return forward; + } + (d3.geo.conicEqualArea = function() { + return d3_geo_conic(d3_geo_conicEqualArea); + }).raw = d3_geo_conicEqualArea; + d3.geo.albers = function() { + return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070); + }; + d3.geo.albersUsa = function() { + var lower48 = d3.geo.albers(); + var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]); + var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]); + var point, pointStream = { + point: function(x, y) { + point = [ x, y ]; + } + }, lower48Point, alaskaPoint, hawaiiPoint; + function albersUsa(coordinates) { + var x = coordinates[0], y = coordinates[1]; + point = null; + (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y); + return point; + } + albersUsa.invert = function(coordinates) { + var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k; + return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates); + }; + albersUsa.stream = function(stream) { + var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream); + return { + point: function(x, y) { + lower48Stream.point(x, y); + alaskaStream.point(x, y); + hawaiiStream.point(x, y); + }, + sphere: function() { + lower48Stream.sphere(); + alaskaStream.sphere(); + hawaiiStream.sphere(); + }, + lineStart: function() { + lower48Stream.lineStart(); + alaskaStream.lineStart(); + hawaiiStream.lineStart(); + }, + lineEnd: function() { + lower48Stream.lineEnd(); + alaskaStream.lineEnd(); + hawaiiStream.lineEnd(); + }, + polygonStart: function() { + lower48Stream.polygonStart(); + alaskaStream.polygonStart(); + hawaiiStream.polygonStart(); + }, + polygonEnd: function() { + lower48Stream.polygonEnd(); + alaskaStream.polygonEnd(); + hawaiiStream.polygonEnd(); + } + }; + }; + albersUsa.precision = function(_) { + if (!arguments.length) return lower48.precision(); + lower48.precision(_); + alaska.precision(_); + hawaii.precision(_); + return albersUsa; + }; + albersUsa.scale = function(_) { + if (!arguments.length) return lower48.scale(); + lower48.scale(_); + alaska.scale(_ * .35); + hawaii.scale(_); + return albersUsa.translate(lower48.translate()); + }; + albersUsa.translate = function(_) { + if (!arguments.length) return lower48.translate(); + var k = lower48.scale(), x = +_[0], y = +_[1]; + lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point; + alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point; + hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point; + return albersUsa; + }; + return albersUsa.scale(1070); + }; + var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = { + point: d3_noop, + lineStart: d3_noop, + lineEnd: d3_noop, + polygonStart: function() { + d3_geo_pathAreaPolygon = 0; + d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart; + }, + polygonEnd: function() { + d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop; + d3_geo_pathAreaSum += Math.abs(d3_geo_pathAreaPolygon / 2); + } + }; + function d3_geo_pathAreaRingStart() { + var x00, y00, x0, y0; + d3_geo_pathArea.point = function(x, y) { + d3_geo_pathArea.point = nextPoint; + x00 = x0 = x, y00 = y0 = y; + }; + function nextPoint(x, y) { + d3_geo_pathAreaPolygon += y0 * x - x0 * y; + x0 = x, y0 = y; + } + d3_geo_pathArea.lineEnd = function() { + nextPoint(x00, y00); + }; + } + var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1; + var d3_geo_pathBounds = { + point: d3_geo_pathBoundsPoint, + lineStart: d3_noop, + lineEnd: d3_noop, + polygonStart: d3_noop, + polygonEnd: d3_noop + }; + function d3_geo_pathBoundsPoint(x, y) { + if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x; + if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x; + if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y; + if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y; + } + function d3_geo_pathBuffer() { + var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = []; + var stream = { + point: point, + lineStart: function() { + stream.point = pointLineStart; + }, + lineEnd: lineEnd, + polygonStart: function() { + stream.lineEnd = lineEndPolygon; + }, + polygonEnd: function() { + stream.lineEnd = lineEnd; + stream.point = point; + }, + pointRadius: function(_) { + pointCircle = d3_geo_pathBufferCircle(_); + return stream; + }, + result: function() { + if (buffer.length) { + var result = buffer.join(""); + buffer = []; + return result; + } + } + }; + function point(x, y) { + buffer.push("M", x, ",", y, pointCircle); + } + function pointLineStart(x, y) { + buffer.push("M", x, ",", y); + stream.point = pointLine; + } + function pointLine(x, y) { + buffer.push("L", x, ",", y); + } + function lineEnd() { + stream.point = point; + } + function lineEndPolygon() { + buffer.push("Z"); + } + return stream; + } + function d3_geo_pathBufferCircle(radius) { + return "m0," + radius + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius + "z"; + } + var d3_geo_pathCentroid = { + point: d3_geo_pathCentroidPoint, + lineStart: d3_geo_pathCentroidLineStart, + lineEnd: d3_geo_pathCentroidLineEnd, + polygonStart: function() { + d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart; + }, + polygonEnd: function() { + d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint; + d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart; + d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd; + } + }; + function d3_geo_pathCentroidPoint(x, y) { + d3_geo_centroidX0 += x; + d3_geo_centroidY0 += y; + ++d3_geo_centroidZ0; + } + function d3_geo_pathCentroidLineStart() { + var x0, y0; + d3_geo_pathCentroid.point = function(x, y) { + d3_geo_pathCentroid.point = nextPoint; + d3_geo_pathCentroidPoint(x0 = x, y0 = y); + }; + function nextPoint(x, y) { + var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy); + d3_geo_centroidX1 += z * (x0 + x) / 2; + d3_geo_centroidY1 += z * (y0 + y) / 2; + d3_geo_centroidZ1 += z; + d3_geo_pathCentroidPoint(x0 = x, y0 = y); + } + } + function d3_geo_pathCentroidLineEnd() { + d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint; + } + function d3_geo_pathCentroidRingStart() { + var x00, y00, x0, y0; + d3_geo_pathCentroid.point = function(x, y) { + d3_geo_pathCentroid.point = nextPoint; + d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y); + }; + function nextPoint(x, y) { + var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy); + d3_geo_centroidX1 += z * (x0 + x) / 2; + d3_geo_centroidY1 += z * (y0 + y) / 2; + d3_geo_centroidZ1 += z; + z = y0 * x - x0 * y; + d3_geo_centroidX2 += z * (x0 + x); + d3_geo_centroidY2 += z * (y0 + y); + d3_geo_centroidZ2 += z * 3; + d3_geo_pathCentroidPoint(x0 = x, y0 = y); + } + d3_geo_pathCentroid.lineEnd = function() { + nextPoint(x00, y00); + }; + } + function d3_geo_pathContext(context) { + var pointRadius = 4.5; + var stream = { + point: point, + lineStart: function() { + stream.point = pointLineStart; + }, + lineEnd: lineEnd, + polygonStart: function() { + stream.lineEnd = lineEndPolygon; + }, + polygonEnd: function() { + stream.lineEnd = lineEnd; + stream.point = point; + }, + pointRadius: function(_) { + pointRadius = _; + return stream; + }, + result: d3_noop + }; + function point(x, y) { + context.moveTo(x, y); + context.arc(x, y, pointRadius, 0, τ); + } + function pointLineStart(x, y) { + context.moveTo(x, y); + stream.point = pointLine; + } + function pointLine(x, y) { + context.lineTo(x, y); + } + function lineEnd() { + stream.point = point; + } + function lineEndPolygon() { + context.closePath(); + } + return stream; + } + function d3_geo_resample(project) { + var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16; + function resample(stream) { + var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0; + var resample = { + point: point, + lineStart: lineStart, + lineEnd: lineEnd, + polygonStart: function() { + stream.polygonStart(); + resample.lineStart = ringStart; + }, + polygonEnd: function() { + stream.polygonEnd(); + resample.lineStart = lineStart; + } + }; + function point(x, y) { + x = project(x, y); + stream.point(x[0], x[1]); + } + function lineStart() { + x0 = NaN; + resample.point = linePoint; + stream.lineStart(); + } + function linePoint(λ, φ) { + var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ); + resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream); + stream.point(x0, y0); + } + function lineEnd() { + resample.point = point; + stream.lineEnd(); + } + function ringStart() { + lineStart(); + resample.point = ringPoint; + resample.lineEnd = ringEnd; + } + function ringPoint(λ, φ) { + linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0; + resample.point = linePoint; + } + function ringEnd() { + resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream); + resample.lineEnd = lineEnd; + lineEnd(); + } + return resample; + } + function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) { + var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy; + if (d2 > 4 * δ2 && depth--) { + var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = Math.abs(Math.abs(c) - 1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2; + if (dz * dz / d2 > δ2 || Math.abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { + resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream); + stream.point(x2, y2); + resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream); + } + } + } + resample.precision = function(_) { + if (!arguments.length) return Math.sqrt(δ2); + maxDepth = (δ2 = _ * _) > 0 && 16; + return resample; + }; + return resample; + } + d3.geo.transform = function(methods) { + return { + stream: function(stream) { + var transform = new d3_geo_transform(stream); + for (var k in methods) transform[k] = methods[k]; + return transform; + } + }; + }; + function d3_geo_transform(stream) { + this.stream = stream; + } + d3_geo_transform.prototype = { + point: function(x, y) { + this.stream.point(x, y); + }, + sphere: function() { + this.stream.sphere(); + }, + lineStart: function() { + this.stream.lineStart(); + }, + lineEnd: function() { + this.stream.lineEnd(); + }, + polygonStart: function() { + this.stream.polygonStart(); + }, + polygonEnd: function() { + this.stream.polygonEnd(); + } + }; + d3.geo.path = function() { + var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream; + function path(object) { + if (object) { + if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments)); + if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream); + d3.geo.stream(object, cacheStream); + } + return contextStream.result(); + } + path.area = function(object) { + d3_geo_pathAreaSum = 0; + d3.geo.stream(object, projectStream(d3_geo_pathArea)); + return d3_geo_pathAreaSum; + }; + path.centroid = function(object) { + d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0; + d3.geo.stream(object, projectStream(d3_geo_pathCentroid)); + return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ]; + }; + path.bounds = function(object) { + d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity); + d3.geo.stream(object, projectStream(d3_geo_pathBounds)); + return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ]; + }; + path.projection = function(_) { + if (!arguments.length) return projection; + projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity; + return reset(); + }; + path.context = function(_) { + if (!arguments.length) return context; + contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_); + if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius); + return reset(); + }; + path.pointRadius = function(_) { + if (!arguments.length) return pointRadius; + pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_); + return path; + }; + function reset() { + cacheStream = null; + return path; + } + return path.projection(d3.geo.albersUsa()).context(null); + }; + function d3_geo_pathProjectStream(project) { + var resample = d3_geo_resample(function(x, y) { + return project([ x * d3_degrees, y * d3_degrees ]); + }); + return function(stream) { + var transform = new d3_geo_transform(stream = resample(stream)); + transform.point = function(x, y) { + stream.point(x * d3_radians, y * d3_radians); + }; + return transform; + }; + } + d3.geo.projection = d3_geo_projection; + d3.geo.projectionMutator = d3_geo_projectionMutator; + function d3_geo_projection(project) { + return d3_geo_projectionMutator(function() { + return project; + })(); + } + function d3_geo_projectionMutator(projectAt) { + var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) { + x = project(x, y); + return [ x[0] * k + δx, δy - x[1] * k ]; + }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream; + function projection(point) { + point = projectRotate(point[0] * d3_radians, point[1] * d3_radians); + return [ point[0] * k + δx, δy - point[1] * k ]; + } + function invert(point) { + point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k); + return point && [ point[0] * d3_degrees, point[1] * d3_degrees ]; + } + projection.stream = function(output) { + if (stream) stream.valid = false; + stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output)))); + stream.valid = true; + return stream; + }; + projection.clipAngle = function(_) { + if (!arguments.length) return clipAngle; + preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians); + return invalidate(); + }; + projection.clipExtent = function(_) { + if (!arguments.length) return clipExtent; + clipExtent = _; + postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity; + return invalidate(); + }; + projection.scale = function(_) { + if (!arguments.length) return k; + k = +_; + return reset(); + }; + projection.translate = function(_) { + if (!arguments.length) return [ x, y ]; + x = +_[0]; + y = +_[1]; + return reset(); + }; + projection.center = function(_) { + if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ]; + λ = _[0] % 360 * d3_radians; + φ = _[1] % 360 * d3_radians; + return reset(); + }; + projection.rotate = function(_) { + if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ]; + δλ = _[0] % 360 * d3_radians; + δφ = _[1] % 360 * d3_radians; + δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0; + return reset(); + }; + d3.rebind(projection, projectResample, "precision"); + function reset() { + projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project); + var center = project(λ, φ); + δx = x - center[0] * k; + δy = y + center[1] * k; + return invalidate(); + } + function invalidate() { + if (stream) stream.valid = false, stream = null; + return projection; + } + return function() { + project = projectAt.apply(this, arguments); + projection.invert = project.invert && invert; + return reset(); + }; + } + function d3_geo_projectionRadians(stream) { + var transform = new d3_geo_transform(stream); + transform.point = function(λ, φ) { + stream.point(λ * d3_radians, φ * d3_radians); + }; + return transform; + } + function d3_geo_equirectangular(λ, φ) { + return [ λ, φ ]; + } + (d3.geo.equirectangular = function() { + return d3_geo_projection(d3_geo_equirectangular); + }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular; + d3.geo.rotation = function(rotate) { + rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0); + function forward(coordinates) { + coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians); + return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates; + } + forward.invert = function(coordinates) { + coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians); + return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates; + }; + return forward; + }; + function d3_geo_identityRotation(λ, φ) { + return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ]; + } + d3_geo_identityRotation.invert = d3_geo_equirectangular; + function d3_geo_rotation(δλ, δφ, δγ) { + return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation; + } + function d3_geo_forwardRotationλ(δλ) { + return function(λ, φ) { + return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ]; + }; + } + function d3_geo_rotationλ(δλ) { + var rotation = d3_geo_forwardRotationλ(δλ); + rotation.invert = d3_geo_forwardRotationλ(-δλ); + return rotation; + } + function d3_geo_rotationφγ(δφ, δγ) { + var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ); + function rotation(λ, φ) { + var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ; + return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ]; + } + rotation.invert = function(λ, φ) { + var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ; + return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ]; + }; + return rotation; + } + d3.geo.circle = function() { + var origin = [ 0, 0 ], angle, precision = 6, interpolate; + function circle() { + var center = typeof origin === "function" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = []; + interpolate(null, null, 1, { + point: function(x, y) { + ring.push(x = rotate(x, y)); + x[0] *= d3_degrees, x[1] *= d3_degrees; + } + }); + return { + type: "Polygon", + coordinates: [ ring ] + }; + } + circle.origin = function(x) { + if (!arguments.length) return origin; + origin = x; + return circle; + }; + circle.angle = function(x) { + if (!arguments.length) return angle; + interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians); + return circle; + }; + circle.precision = function(_) { + if (!arguments.length) return precision; + interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians); + return circle; + }; + return circle.angle(90); + }; + function d3_geo_circleInterpolate(radius, precision) { + var cr = Math.cos(radius), sr = Math.sin(radius); + return function(from, to, direction, listener) { + var step = direction * precision; + if (from != null) { + from = d3_geo_circleAngle(cr, from); + to = d3_geo_circleAngle(cr, to); + if (direction > 0 ? from < to : from > to) from += direction * τ; + } else { + from = radius + direction * τ; + to = radius - .5 * step; + } + for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) { + listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]); + } + }; + } + function d3_geo_circleAngle(cr, point) { + var a = d3_geo_cartesian(point); + a[0] -= cr; + d3_geo_cartesianNormalize(a); + var angle = d3_acos(-a[1]); + return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI); + } + d3.geo.distance = function(a, b) { + var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t; + return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ); + }; + d3.geo.graticule = function() { + var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5; + function graticule() { + return { + type: "MultiLineString", + coordinates: lines() + }; + } + function lines() { + return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) { + return Math.abs(x % DX) > ε; + }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) { + return Math.abs(y % DY) > ε; + }).map(y)); + } + graticule.lines = function() { + return lines().map(function(coordinates) { + return { + type: "LineString", + coordinates: coordinates + }; + }); + }; + graticule.outline = function() { + return { + type: "Polygon", + coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ] + }; + }; + graticule.extent = function(_) { + if (!arguments.length) return graticule.minorExtent(); + return graticule.majorExtent(_).minorExtent(_); + }; + graticule.majorExtent = function(_) { + if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ]; + X0 = +_[0][0], X1 = +_[1][0]; + Y0 = +_[0][1], Y1 = +_[1][1]; + if (X0 > X1) _ = X0, X0 = X1, X1 = _; + if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _; + return graticule.precision(precision); + }; + graticule.minorExtent = function(_) { + if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ]; + x0 = +_[0][0], x1 = +_[1][0]; + y0 = +_[0][1], y1 = +_[1][1]; + if (x0 > x1) _ = x0, x0 = x1, x1 = _; + if (y0 > y1) _ = y0, y0 = y1, y1 = _; + return graticule.precision(precision); + }; + graticule.step = function(_) { + if (!arguments.length) return graticule.minorStep(); + return graticule.majorStep(_).minorStep(_); + }; + graticule.majorStep = function(_) { + if (!arguments.length) return [ DX, DY ]; + DX = +_[0], DY = +_[1]; + return graticule; + }; + graticule.minorStep = function(_) { + if (!arguments.length) return [ dx, dy ]; + dx = +_[0], dy = +_[1]; + return graticule; + }; + graticule.precision = function(_) { + if (!arguments.length) return precision; + precision = +_; + x = d3_geo_graticuleX(y0, y1, 90); + y = d3_geo_graticuleY(x0, x1, precision); + X = d3_geo_graticuleX(Y0, Y1, 90); + Y = d3_geo_graticuleY(X0, X1, precision); + return graticule; + }; + return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]); + }; + function d3_geo_graticuleX(y0, y1, dy) { + var y = d3.range(y0, y1 - ε, dy).concat(y1); + return function(x) { + return y.map(function(y) { + return [ x, y ]; + }); + }; + } + function d3_geo_graticuleY(x0, x1, dx) { + var x = d3.range(x0, x1 - ε, dx).concat(x1); + return function(y) { + return x.map(function(x) { + return [ x, y ]; + }); + }; + } + function d3_source(d) { + return d.source; + } + function d3_target(d) { + return d.target; + } + d3.geo.greatArc = function() { + var source = d3_source, source_, target = d3_target, target_; + function greatArc() { + return { + type: "LineString", + coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ] + }; + } + greatArc.distance = function() { + return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments)); + }; + greatArc.source = function(_) { + if (!arguments.length) return source; + source = _, source_ = typeof _ === "function" ? null : _; + return greatArc; + }; + greatArc.target = function(_) { + if (!arguments.length) return target; + target = _, target_ = typeof _ === "function" ? null : _; + return greatArc; + }; + greatArc.precision = function() { + return arguments.length ? greatArc : 0; + }; + return greatArc; + }; + d3.geo.interpolate = function(source, target) { + return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians); + }; + function d3_geo_interpolate(x0, y0, x1, y1) { + var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d); + var interpolate = d ? function(t) { + var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1; + return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ]; + } : function() { + return [ x0 * d3_degrees, y0 * d3_degrees ]; + }; + interpolate.distance = d; + return interpolate; + } + d3.geo.length = function(object) { + d3_geo_lengthSum = 0; + d3.geo.stream(object, d3_geo_length); + return d3_geo_lengthSum; + }; + var d3_geo_lengthSum; + var d3_geo_length = { + sphere: d3_noop, + point: d3_noop, + lineStart: d3_geo_lengthLineStart, + lineEnd: d3_noop, + polygonStart: d3_noop, + polygonEnd: d3_noop + }; + function d3_geo_lengthLineStart() { + var λ0, sinφ0, cosφ0; + d3_geo_length.point = function(λ, φ) { + λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ); + d3_geo_length.point = nextPoint; + }; + d3_geo_length.lineEnd = function() { + d3_geo_length.point = d3_geo_length.lineEnd = d3_noop; + }; + function nextPoint(λ, φ) { + var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = Math.abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t); + d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ); + λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ; + } + } + function d3_geo_azimuthal(scale, angle) { + function azimuthal(λ, φ) { + var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ); + return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ]; + } + azimuthal.invert = function(x, y) { + var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c); + return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ]; + }; + return azimuthal; + } + var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) { + return Math.sqrt(2 / (1 + cosλcosφ)); + }, function(ρ) { + return 2 * Math.asin(ρ / 2); + }); + (d3.geo.azimuthalEqualArea = function() { + return d3_geo_projection(d3_geo_azimuthalEqualArea); + }).raw = d3_geo_azimuthalEqualArea; + var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) { + var c = Math.acos(cosλcosφ); + return c && c / Math.sin(c); + }, d3_identity); + (d3.geo.azimuthalEquidistant = function() { + return d3_geo_projection(d3_geo_azimuthalEquidistant); + }).raw = d3_geo_azimuthalEquidistant; + function d3_geo_conicConformal(φ0, φ1) { + var cosφ0 = Math.cos(φ0), t = function(φ) { + return Math.tan(π / 4 + φ / 2); + }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n; + if (!n) return d3_geo_mercator; + function forward(λ, φ) { + var ρ = Math.abs(Math.abs(φ) - halfπ) < ε ? 0 : F / Math.pow(t(φ), n); + return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ]; + } + forward.invert = function(x, y) { + var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y); + return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ]; + }; + return forward; + } + (d3.geo.conicConformal = function() { + return d3_geo_conic(d3_geo_conicConformal); + }).raw = d3_geo_conicConformal; + function d3_geo_conicEquidistant(φ0, φ1) { + var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0; + if (Math.abs(n) < ε) return d3_geo_equirectangular; + function forward(λ, φ) { + var ρ = G - φ; + return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ]; + } + forward.invert = function(x, y) { + var ρ0_y = G - y; + return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ]; + }; + return forward; + } + (d3.geo.conicEquidistant = function() { + return d3_geo_conic(d3_geo_conicEquidistant); + }).raw = d3_geo_conicEquidistant; + var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) { + return 1 / cosλcosφ; + }, Math.atan); + (d3.geo.gnomonic = function() { + return d3_geo_projection(d3_geo_gnomonic); + }).raw = d3_geo_gnomonic; + function d3_geo_mercator(λ, φ) { + return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ]; + } + d3_geo_mercator.invert = function(x, y) { + return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ]; + }; + function d3_geo_mercatorProjection(project) { + var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto; + m.scale = function() { + var v = scale.apply(m, arguments); + return v === m ? clipAuto ? m.clipExtent(null) : m : v; + }; + m.translate = function() { + var v = translate.apply(m, arguments); + return v === m ? clipAuto ? m.clipExtent(null) : m : v; + }; + m.clipExtent = function(_) { + var v = clipExtent.apply(m, arguments); + if (v === m) { + if (clipAuto = _ == null) { + var k = π * scale(), t = translate(); + clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]); + } + } else if (clipAuto) { + v = null; + } + return v; + }; + return m.clipExtent(null); + } + (d3.geo.mercator = function() { + return d3_geo_mercatorProjection(d3_geo_mercator); + }).raw = d3_geo_mercator; + var d3_geo_orthographic = d3_geo_azimuthal(function() { + return 1; + }, Math.asin); + (d3.geo.orthographic = function() { + return d3_geo_projection(d3_geo_orthographic); + }).raw = d3_geo_orthographic; + var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) { + return 1 / (1 + cosλcosφ); + }, function(ρ) { + return 2 * Math.atan(ρ); + }); + (d3.geo.stereographic = function() { + return d3_geo_projection(d3_geo_stereographic); + }).raw = d3_geo_stereographic; + function d3_geo_transverseMercator(λ, φ) { + var B = Math.cos(φ) * Math.sin(λ); + return [ Math.log((1 + B) / (1 - B)) / 2, Math.atan2(Math.tan(φ), Math.cos(λ)) ]; + } + d3_geo_transverseMercator.invert = function(x, y) { + return [ Math.atan2(d3_sinh(x), Math.cos(y)), d3_asin(Math.sin(y) / d3_cosh(x)) ]; + }; + (d3.geo.transverseMercator = function() { + return d3_geo_mercatorProjection(d3_geo_transverseMercator); + }).raw = d3_geo_transverseMercator; + d3.geom = {}; + d3.svg = {}; + function d3_svg_line(projection) { + var x = d3_svg_lineX, y = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7; + function line(data) { + var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y); + function segment() { + segments.push("M", interpolate(projection(points), tension)); + } + while (++i < n) { + if (defined.call(this, d = data[i], i)) { + points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]); + } else if (points.length) { + segment(); + points = []; + } + } + if (points.length) segment(); + return segments.length ? segments.join("") : null; + } + line.x = function(_) { + if (!arguments.length) return x; + x = _; + return line; + }; + line.y = function(_) { + if (!arguments.length) return y; + y = _; + return line; + }; + line.defined = function(_) { + if (!arguments.length) return defined; + defined = _; + return line; + }; + line.interpolate = function(_) { + if (!arguments.length) return interpolateKey; + if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key; + return line; + }; + line.tension = function(_) { + if (!arguments.length) return tension; + tension = _; + return line; + }; + return line; + } + d3.svg.line = function() { + return d3_svg_line(d3_identity); + }; + function d3_svg_lineX(d) { + return d[0]; + } + function d3_svg_lineY(d) { + return d[1]; + } + var d3_svg_lineInterpolators = d3.map({ + linear: d3_svg_lineLinear, + "linear-closed": d3_svg_lineLinearClosed, + step: d3_svg_lineStep, + "step-before": d3_svg_lineStepBefore, + "step-after": d3_svg_lineStepAfter, + basis: d3_svg_lineBasis, + "basis-open": d3_svg_lineBasisOpen, + "basis-closed": d3_svg_lineBasisClosed, + bundle: d3_svg_lineBundle, + cardinal: d3_svg_lineCardinal, + "cardinal-open": d3_svg_lineCardinalOpen, + "cardinal-closed": d3_svg_lineCardinalClosed, + monotone: d3_svg_lineMonotone + }); + d3_svg_lineInterpolators.forEach(function(key, value) { + value.key = key; + value.closed = /-closed$/.test(key); + }); + function d3_svg_lineLinear(points) { + return points.join("L"); + } + function d3_svg_lineLinearClosed(points) { + return d3_svg_lineLinear(points) + "Z"; + } + function d3_svg_lineStep(points) { + var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ]; + while (++i < n) path.push("H", (p[0] + (p = points[i])[0]) / 2, "V", p[1]); + if (n > 1) path.push("H", p[0]); + return path.join(""); + } + function d3_svg_lineStepBefore(points) { + var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ]; + while (++i < n) path.push("V", (p = points[i])[1], "H", p[0]); + return path.join(""); + } + function d3_svg_lineStepAfter(points) { + var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ]; + while (++i < n) path.push("H", (p = points[i])[0], "V", p[1]); + return path.join(""); + } + function d3_svg_lineCardinalOpen(points, tension) { + return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, points.length - 1), d3_svg_lineCardinalTangents(points, tension)); + } + function d3_svg_lineCardinalClosed(points, tension) { + return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), + points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension)); + } + function d3_svg_lineCardinal(points, tension) { + return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension)); + } + function d3_svg_lineHermite(points, tangents) { + if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) { + return d3_svg_lineLinear(points); + } + var quad = points.length != tangents.length, path = "", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1; + if (quad) { + path += "Q" + (p[0] - t0[0] * 2 / 3) + "," + (p[1] - t0[1] * 2 / 3) + "," + p[0] + "," + p[1]; + p0 = points[1]; + pi = 2; + } + if (tangents.length > 1) { + t = tangents[1]; + p = points[pi]; + pi++; + path += "C" + (p0[0] + t0[0]) + "," + (p0[1] + t0[1]) + "," + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1]; + for (var i = 2; i < tangents.length; i++, pi++) { + p = points[pi]; + t = tangents[i]; + path += "S" + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1]; + } + } + if (quad) { + var lp = points[pi]; + path += "Q" + (p[0] + t[0] * 2 / 3) + "," + (p[1] + t[1] * 2 / 3) + "," + lp[0] + "," + lp[1]; + } + return path; + } + function d3_svg_lineCardinalTangents(points, tension) { + var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length; + while (++i < n) { + p0 = p1; + p1 = p2; + p2 = points[i]; + tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]); + } + return tangents; + } + function d3_svg_lineBasis(points) { + if (points.length < 3) return d3_svg_lineLinear(points); + var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, ",", y0, "L", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ]; + points.push(points[n - 1]); + while (++i <= n) { + pi = points[i]; + px.shift(); + px.push(pi[0]); + py.shift(); + py.push(pi[1]); + d3_svg_lineBasisBezier(path, px, py); + } + points.pop(); + path.push("L", pi); + return path.join(""); + } + function d3_svg_lineBasisOpen(points) { + if (points.length < 4) return d3_svg_lineLinear(points); + var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ]; + while (++i < 3) { + pi = points[i]; + px.push(pi[0]); + py.push(pi[1]); + } + path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + "," + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py)); + --i; + while (++i < n) { + pi = points[i]; + px.shift(); + px.push(pi[0]); + py.shift(); + py.push(pi[1]); + d3_svg_lineBasisBezier(path, px, py); + } + return path.join(""); + } + function d3_svg_lineBasisClosed(points) { + var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = []; + while (++i < 4) { + pi = points[i % n]; + px.push(pi[0]); + py.push(pi[1]); + } + path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ]; + --i; + while (++i < m) { + pi = points[i % n]; + px.shift(); + px.push(pi[0]); + py.shift(); + py.push(pi[1]); + d3_svg_lineBasisBezier(path, px, py); + } + return path.join(""); + } + function d3_svg_lineBundle(points, tension) { + var n = points.length - 1; + if (n) { + var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t; + while (++i <= n) { + p = points[i]; + t = i / n; + p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx); + p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy); + } + } + return d3_svg_lineBasis(points); + } + function d3_svg_lineDot4(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; + } + var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ]; + function d3_svg_lineBasisBezier(path, x, y) { + path.push("C", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y)); + } + function d3_svg_lineSlope(p0, p1) { + return (p1[1] - p0[1]) / (p1[0] - p0[0]); + } + function d3_svg_lineFiniteDifferences(points) { + var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1); + while (++i < j) { + m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2; + } + m[i] = d; + return m; + } + function d3_svg_lineMonotoneTangents(points) { + var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1; + while (++i < j) { + d = d3_svg_lineSlope(points[i], points[i + 1]); + if (Math.abs(d) < ε) { + m[i] = m[i + 1] = 0; + } else { + a = m[i] / d; + b = m[i + 1] / d; + s = a * a + b * b; + if (s > 9) { + s = d * 3 / Math.sqrt(s); + m[i] = s * a; + m[i + 1] = s * b; + } + } + } + i = -1; + while (++i <= j) { + s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i])); + tangents.push([ s || 0, m[i] * s || 0 ]); + } + return tangents; + } + function d3_svg_lineMonotone(points) { + return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points)); + } + d3.geom.hull = function(vertices) { + var x = d3_svg_lineX, y = d3_svg_lineY; + if (arguments.length) return hull(vertices); + function hull(data) { + if (data.length < 3) return []; + var fx = d3_functor(x), fy = d3_functor(y), n = data.length, vertices, plen = n - 1, points = [], stack = [], d, i, j, h = 0, x1, y1, x2, y2, u, v, a, sp; + if (fx === d3_svg_lineX && y === d3_svg_lineY) vertices = data; else for (i = 0, + vertices = []; i < n; ++i) { + vertices.push([ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]); + } + for (i = 1; i < n; ++i) { + if (vertices[i][1] < vertices[h][1] || vertices[i][1] == vertices[h][1] && vertices[i][0] < vertices[h][0]) h = i; + } + for (i = 0; i < n; ++i) { + if (i === h) continue; + y1 = vertices[i][1] - vertices[h][1]; + x1 = vertices[i][0] - vertices[h][0]; + points.push({ + angle: Math.atan2(y1, x1), + index: i + }); + } + points.sort(function(a, b) { + return a.angle - b.angle; + }); + a = points[0].angle; + v = points[0].index; + u = 0; + for (i = 1; i < plen; ++i) { + j = points[i].index; + if (a == points[i].angle) { + x1 = vertices[v][0] - vertices[h][0]; + y1 = vertices[v][1] - vertices[h][1]; + x2 = vertices[j][0] - vertices[h][0]; + y2 = vertices[j][1] - vertices[h][1]; + if (x1 * x1 + y1 * y1 >= x2 * x2 + y2 * y2) { + points[i].index = -1; + continue; + } else { + points[u].index = -1; + } + } + a = points[i].angle; + u = i; + v = j; + } + stack.push(h); + for (i = 0, j = 0; i < 2; ++j) { + if (points[j].index > -1) { + stack.push(points[j].index); + i++; + } + } + sp = stack.length; + for (;j < plen; ++j) { + if (points[j].index < 0) continue; + while (!d3_geom_hullCCW(stack[sp - 2], stack[sp - 1], points[j].index, vertices)) { + --sp; + } + stack[sp++] = points[j].index; + } + var poly = []; + for (i = sp - 1; i >= 0; --i) poly.push(data[stack[i]]); + return poly; + } + hull.x = function(_) { + return arguments.length ? (x = _, hull) : x; + }; + hull.y = function(_) { + return arguments.length ? (y = _, hull) : y; + }; + return hull; + }; + function d3_geom_hullCCW(i1, i2, i3, v) { + var t, a, b, c, d, e, f; + t = v[i1]; + a = t[0]; + b = t[1]; + t = v[i2]; + c = t[0]; + d = t[1]; + t = v[i3]; + e = t[0]; + f = t[1]; + return (f - b) * (c - a) - (d - b) * (e - a) > 0; + } + d3.geom.polygon = function(coordinates) { + d3_subclass(coordinates, d3_geom_polygonPrototype); + return coordinates; + }; + var d3_geom_polygonPrototype = d3.geom.polygon.prototype = []; + d3_geom_polygonPrototype.area = function() { + var i = -1, n = this.length, a, b = this[n - 1], area = 0; + while (++i < n) { + a = b; + b = this[i]; + area += a[1] * b[0] - a[0] * b[1]; + } + return area * .5; + }; + d3_geom_polygonPrototype.centroid = function(k) { + var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c; + if (!arguments.length) k = -1 / (6 * this.area()); + while (++i < n) { + a = b; + b = this[i]; + c = a[0] * b[1] - b[0] * a[1]; + x += (a[0] + b[0]) * c; + y += (a[1] + b[1]) * c; + } + return [ x * k, y * k ]; + }; + d3_geom_polygonPrototype.clip = function(subject) { + var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d; + while (++i < n) { + input = subject.slice(); + subject.length = 0; + b = this[i]; + c = input[(m = input.length - closed) - 1]; + j = -1; + while (++j < m) { + d = input[j]; + if (d3_geom_polygonInside(d, a, b)) { + if (!d3_geom_polygonInside(c, a, b)) { + subject.push(d3_geom_polygonIntersect(c, d, a, b)); + } + subject.push(d); + } else if (d3_geom_polygonInside(c, a, b)) { + subject.push(d3_geom_polygonIntersect(c, d, a, b)); + } + c = d; + } + if (closed) subject.push(subject[0]); + a = b; + } + return subject; + }; + function d3_geom_polygonInside(p, a, b) { + return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]); + } + function d3_geom_polygonIntersect(c, d, a, b) { + var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21); + return [ x1 + ua * x21, y1 + ua * y21 ]; + } + function d3_geom_polygonClosed(coordinates) { + var a = coordinates[0], b = coordinates[coordinates.length - 1]; + return !(a[0] - b[0] || a[1] - b[1]); + } + d3.geom.delaunay = function(vertices) { + var edges = vertices.map(function() { + return []; + }), triangles = []; + d3_geom_voronoiTessellate(vertices, function(e) { + edges[e.region.l.index].push(vertices[e.region.r.index]); + }); + edges.forEach(function(edge, i) { + var v = vertices[i], cx = v[0], cy = v[1]; + edge.forEach(function(v) { + v.angle = Math.atan2(v[0] - cx, v[1] - cy); + }); + edge.sort(function(a, b) { + return a.angle - b.angle; + }); + for (var j = 0, m = edge.length - 1; j < m; j++) { + triangles.push([ v, edge[j], edge[j + 1] ]); + } + }); + return triangles; + }; + d3.geom.voronoi = function(points) { + var x = d3_svg_lineX, y = d3_svg_lineY, clipPolygon = null; + if (arguments.length) return voronoi(points); + function voronoi(data) { + var points, polygons = data.map(function() { + return []; + }), fx = d3_functor(x), fy = d3_functor(y), d, i, n = data.length, Z = 1e6; + if (fx === d3_svg_lineX && fy === d3_svg_lineY) points = data; else for (points = new Array(n), + i = 0; i < n; ++i) { + points[i] = [ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]; + } + d3_geom_voronoiTessellate(points, function(e) { + var s1, s2, x1, x2, y1, y2; + if (e.a === 1 && e.b >= 0) { + s1 = e.ep.r; + s2 = e.ep.l; + } else { + s1 = e.ep.l; + s2 = e.ep.r; + } + if (e.a === 1) { + y1 = s1 ? s1.y : -Z; + x1 = e.c - e.b * y1; + y2 = s2 ? s2.y : Z; + x2 = e.c - e.b * y2; + } else { + x1 = s1 ? s1.x : -Z; + y1 = e.c - e.a * x1; + x2 = s2 ? s2.x : Z; + y2 = e.c - e.a * x2; + } + var v1 = [ x1, y1 ], v2 = [ x2, y2 ]; + polygons[e.region.l.index].push(v1, v2); + polygons[e.region.r.index].push(v1, v2); + }); + polygons = polygons.map(function(polygon, i) { + var cx = points[i][0], cy = points[i][1], angle = polygon.map(function(v) { + return Math.atan2(v[0] - cx, v[1] - cy); + }), order = d3.range(polygon.length).sort(function(a, b) { + return angle[a] - angle[b]; + }); + return order.filter(function(d, i) { + return !i || angle[d] - angle[order[i - 1]] > ε; + }).map(function(d) { + return polygon[d]; + }); + }); + polygons.forEach(function(polygon, i) { + var n = polygon.length; + if (!n) return polygon.push([ -Z, -Z ], [ -Z, Z ], [ Z, Z ], [ Z, -Z ]); + if (n > 2) return; + var p0 = points[i], p1 = polygon[0], p2 = polygon[1], x0 = p0[0], y0 = p0[1], x1 = p1[0], y1 = p1[1], x2 = p2[0], y2 = p2[1], dx = Math.abs(x2 - x1), dy = y2 - y1; + if (Math.abs(dy) < ε) { + var y = y0 < y1 ? -Z : Z; + polygon.push([ -Z, y ], [ Z, y ]); + } else if (dx < ε) { + var x = x0 < x1 ? -Z : Z; + polygon.push([ x, -Z ], [ x, Z ]); + } else { + var y = (x2 - x1) * (y1 - y0) < (x1 - x0) * (y2 - y1) ? Z : -Z, z = Math.abs(dy) - dx; + if (Math.abs(z) < ε) { + polygon.push([ dy < 0 ? y : -y, y ]); + } else { + if (z > 0) y *= -1; + polygon.push([ -Z, y ], [ Z, y ]); + } + } + }); + if (clipPolygon) for (i = 0; i < n; ++i) clipPolygon.clip(polygons[i]); + for (i = 0; i < n; ++i) polygons[i].point = data[i]; + return polygons; + } + voronoi.x = function(_) { + return arguments.length ? (x = _, voronoi) : x; + }; + voronoi.y = function(_) { + return arguments.length ? (y = _, voronoi) : y; + }; + voronoi.clipExtent = function(_) { + if (!arguments.length) return clipPolygon && [ clipPolygon[0], clipPolygon[2] ]; + if (_ == null) clipPolygon = null; else { + var x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], y2 = +_[1][1]; + clipPolygon = d3.geom.polygon([ [ x1, y1 ], [ x1, y2 ], [ x2, y2 ], [ x2, y1 ] ]); + } + return voronoi; + }; + voronoi.size = function(_) { + if (!arguments.length) return clipPolygon && clipPolygon[2]; + return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]); + }; + voronoi.links = function(data) { + var points, graph = data.map(function() { + return []; + }), links = [], fx = d3_functor(x), fy = d3_functor(y), d, i, n = data.length; + if (fx === d3_svg_lineX && fy === d3_svg_lineY) points = data; else for (points = new Array(n), + i = 0; i < n; ++i) { + points[i] = [ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]; + } + d3_geom_voronoiTessellate(points, function(e) { + var l = e.region.l.index, r = e.region.r.index; + if (graph[l][r]) return; + graph[l][r] = graph[r][l] = true; + links.push({ + source: data[l], + target: data[r] + }); + }); + return links; + }; + voronoi.triangles = function(data) { + if (x === d3_svg_lineX && y === d3_svg_lineY) return d3.geom.delaunay(data); + var points = new Array(n), fx = d3_functor(x), fy = d3_functor(y), d, i = -1, n = data.length; + while (++i < n) { + (points[i] = [ +fx.call(this, d = data[i], i), +fy.call(this, d, i) ]).data = d; + } + return d3.geom.delaunay(points).map(function(triangle) { + return triangle.map(function(point) { + return point.data; + }); + }); + }; + return voronoi; + }; + var d3_geom_voronoiOpposite = { + l: "r", + r: "l" + }; + function d3_geom_voronoiTessellate(points, callback) { + var Sites = { + list: points.map(function(v, i) { + return { + index: i, + x: v[0], + y: v[1] + }; + }).sort(function(a, b) { + return a.y < b.y ? -1 : a.y > b.y ? 1 : a.x < b.x ? -1 : a.x > b.x ? 1 : 0; + }), + bottomSite: null + }; + var EdgeList = { + list: [], + leftEnd: null, + rightEnd: null, + init: function() { + EdgeList.leftEnd = EdgeList.createHalfEdge(null, "l"); + EdgeList.rightEnd = EdgeList.createHalfEdge(null, "l"); + EdgeList.leftEnd.r = EdgeList.rightEnd; + EdgeList.rightEnd.l = EdgeList.leftEnd; + EdgeList.list.unshift(EdgeList.leftEnd, EdgeList.rightEnd); + }, + createHalfEdge: function(edge, side) { + return { + edge: edge, + side: side, + vertex: null, + l: null, + r: null + }; + }, + insert: function(lb, he) { + he.l = lb; + he.r = lb.r; + lb.r.l = he; + lb.r = he; + }, + leftBound: function(p) { + var he = EdgeList.leftEnd; + do { + he = he.r; + } while (he != EdgeList.rightEnd && Geom.rightOf(he, p)); + he = he.l; + return he; + }, + del: function(he) { + he.l.r = he.r; + he.r.l = he.l; + he.edge = null; + }, + right: function(he) { + return he.r; + }, + left: function(he) { + return he.l; + }, + leftRegion: function(he) { + return he.edge == null ? Sites.bottomSite : he.edge.region[he.side]; + }, + rightRegion: function(he) { + return he.edge == null ? Sites.bottomSite : he.edge.region[d3_geom_voronoiOpposite[he.side]]; + } + }; + var Geom = { + bisect: function(s1, s2) { + var newEdge = { + region: { + l: s1, + r: s2 + }, + ep: { + l: null, + r: null + } + }; + var dx = s2.x - s1.x, dy = s2.y - s1.y, adx = dx > 0 ? dx : -dx, ady = dy > 0 ? dy : -dy; + newEdge.c = s1.x * dx + s1.y * dy + (dx * dx + dy * dy) * .5; + if (adx > ady) { + newEdge.a = 1; + newEdge.b = dy / dx; + newEdge.c /= dx; + } else { + newEdge.b = 1; + newEdge.a = dx / dy; + newEdge.c /= dy; + } + return newEdge; + }, + intersect: function(el1, el2) { + var e1 = el1.edge, e2 = el2.edge; + if (!e1 || !e2 || e1.region.r == e2.region.r) { + return null; + } + var d = e1.a * e2.b - e1.b * e2.a; + if (Math.abs(d) < 1e-10) { + return null; + } + var xint = (e1.c * e2.b - e2.c * e1.b) / d, yint = (e2.c * e1.a - e1.c * e2.a) / d, e1r = e1.region.r, e2r = e2.region.r, el, e; + if (e1r.y < e2r.y || e1r.y == e2r.y && e1r.x < e2r.x) { + el = el1; + e = e1; + } else { + el = el2; + e = e2; + } + var rightOfSite = xint >= e.region.r.x; + if (rightOfSite && el.side === "l" || !rightOfSite && el.side === "r") { + return null; + } + return { + x: xint, + y: yint + }; + }, + rightOf: function(he, p) { + var e = he.edge, topsite = e.region.r, rightOfSite = p.x > topsite.x; + if (rightOfSite && he.side === "l") { + return 1; + } + if (!rightOfSite && he.side === "r") { + return 0; + } + if (e.a === 1) { + var dyp = p.y - topsite.y, dxp = p.x - topsite.x, fast = 0, above = 0; + if (!rightOfSite && e.b < 0 || rightOfSite && e.b >= 0) { + above = fast = dyp >= e.b * dxp; + } else { + above = p.x + p.y * e.b > e.c; + if (e.b < 0) { + above = !above; + } + if (!above) { + fast = 1; + } + } + if (!fast) { + var dxs = topsite.x - e.region.l.x; + above = e.b * (dxp * dxp - dyp * dyp) < dxs * dyp * (1 + 2 * dxp / dxs + e.b * e.b); + if (e.b < 0) { + above = !above; + } + } + } else { + var yl = e.c - e.a * p.x, t1 = p.y - yl, t2 = p.x - topsite.x, t3 = yl - topsite.y; + above = t1 * t1 > t2 * t2 + t3 * t3; + } + return he.side === "l" ? above : !above; + }, + endPoint: function(edge, side, site) { + edge.ep[side] = site; + if (!edge.ep[d3_geom_voronoiOpposite[side]]) return; + callback(edge); + }, + distance: function(s, t) { + var dx = s.x - t.x, dy = s.y - t.y; + return Math.sqrt(dx * dx + dy * dy); + } + }; + var EventQueue = { + list: [], + insert: function(he, site, offset) { + he.vertex = site; + he.ystar = site.y + offset; + for (var i = 0, list = EventQueue.list, l = list.length; i < l; i++) { + var next = list[i]; + if (he.ystar > next.ystar || he.ystar == next.ystar && site.x > next.vertex.x) { + continue; + } else { + break; + } + } + list.splice(i, 0, he); + }, + del: function(he) { + for (var i = 0, ls = EventQueue.list, l = ls.length; i < l && ls[i] != he; ++i) {} + ls.splice(i, 1); + }, + empty: function() { + return EventQueue.list.length === 0; + }, + nextEvent: function(he) { + for (var i = 0, ls = EventQueue.list, l = ls.length; i < l; ++i) { + if (ls[i] == he) return ls[i + 1]; + } + return null; + }, + min: function() { + var elem = EventQueue.list[0]; + return { + x: elem.vertex.x, + y: elem.ystar + }; + }, + extractMin: function() { + return EventQueue.list.shift(); + } + }; + EdgeList.init(); + Sites.bottomSite = Sites.list.shift(); + var newSite = Sites.list.shift(), newIntStar; + var lbnd, rbnd, llbnd, rrbnd, bisector; + var bot, top, temp, p, v; + var e, pm; + while (true) { + if (!EventQueue.empty()) { + newIntStar = EventQueue.min(); + } + if (newSite && (EventQueue.empty() || newSite.y < newIntStar.y || newSite.y == newIntStar.y && newSite.x < newIntStar.x)) { + lbnd = EdgeList.leftBound(newSite); + rbnd = EdgeList.right(lbnd); + bot = EdgeList.rightRegion(lbnd); + e = Geom.bisect(bot, newSite); + bisector = EdgeList.createHalfEdge(e, "l"); + EdgeList.insert(lbnd, bisector); + p = Geom.intersect(lbnd, bisector); + if (p) { + EventQueue.del(lbnd); + EventQueue.insert(lbnd, p, Geom.distance(p, newSite)); + } + lbnd = bisector; + bisector = EdgeList.createHalfEdge(e, "r"); + EdgeList.insert(lbnd, bisector); + p = Geom.intersect(bisector, rbnd); + if (p) { + EventQueue.insert(bisector, p, Geom.distance(p, newSite)); + } + newSite = Sites.list.shift(); + } else if (!EventQueue.empty()) { + lbnd = EventQueue.extractMin(); + llbnd = EdgeList.left(lbnd); + rbnd = EdgeList.right(lbnd); + rrbnd = EdgeList.right(rbnd); + bot = EdgeList.leftRegion(lbnd); + top = EdgeList.rightRegion(rbnd); + v = lbnd.vertex; + Geom.endPoint(lbnd.edge, lbnd.side, v); + Geom.endPoint(rbnd.edge, rbnd.side, v); + EdgeList.del(lbnd); + EventQueue.del(rbnd); + EdgeList.del(rbnd); + pm = "l"; + if (bot.y > top.y) { + temp = bot; + bot = top; + top = temp; + pm = "r"; + } + e = Geom.bisect(bot, top); + bisector = EdgeList.createHalfEdge(e, pm); + EdgeList.insert(llbnd, bisector); + Geom.endPoint(e, d3_geom_voronoiOpposite[pm], v); + p = Geom.intersect(llbnd, bisector); + if (p) { + EventQueue.del(llbnd); + EventQueue.insert(llbnd, p, Geom.distance(p, bot)); + } + p = Geom.intersect(bisector, rrbnd); + if (p) { + EventQueue.insert(bisector, p, Geom.distance(p, bot)); + } + } else { + break; + } + } + for (lbnd = EdgeList.right(EdgeList.leftEnd); lbnd != EdgeList.rightEnd; lbnd = EdgeList.right(lbnd)) { + callback(lbnd.edge); + } + } + d3.geom.quadtree = function(points, x1, y1, x2, y2) { + var x = d3_svg_lineX, y = d3_svg_lineY, compat; + if (compat = arguments.length) { + x = d3_geom_quadtreeCompatX; + y = d3_geom_quadtreeCompatY; + if (compat === 3) { + y2 = y1; + x2 = x1; + y1 = x1 = 0; + } + return quadtree(points); + } + function quadtree(data) { + var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_; + if (x1 != null) { + x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2; + } else { + x2_ = y2_ = -(x1_ = y1_ = Infinity); + xs = [], ys = []; + n = data.length; + if (compat) for (i = 0; i < n; ++i) { + d = data[i]; + if (d.x < x1_) x1_ = d.x; + if (d.y < y1_) y1_ = d.y; + if (d.x > x2_) x2_ = d.x; + if (d.y > y2_) y2_ = d.y; + xs.push(d.x); + ys.push(d.y); + } else for (i = 0; i < n; ++i) { + var x_ = +fx(d = data[i], i), y_ = +fy(d, i); + if (x_ < x1_) x1_ = x_; + if (y_ < y1_) y1_ = y_; + if (x_ > x2_) x2_ = x_; + if (y_ > y2_) y2_ = y_; + xs.push(x_); + ys.push(y_); + } + } + var dx = x2_ - x1_, dy = y2_ - y1_; + if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy; + function insert(n, d, x, y, x1, y1, x2, y2) { + if (isNaN(x) || isNaN(y)) return; + if (n.leaf) { + var nx = n.x, ny = n.y; + if (nx != null) { + if (Math.abs(nx - x) + Math.abs(ny - y) < .01) { + insertChild(n, d, x, y, x1, y1, x2, y2); + } else { + var nPoint = n.point; + n.x = n.y = n.point = null; + insertChild(n, nPoint, nx, ny, x1, y1, x2, y2); + insertChild(n, d, x, y, x1, y1, x2, y2); + } + } else { + n.x = x, n.y = y, n.point = d; + } + } else { + insertChild(n, d, x, y, x1, y1, x2, y2); + } + } + function insertChild(n, d, x, y, x1, y1, x2, y2) { + var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, right = x >= sx, bottom = y >= sy, i = (bottom << 1) + right; + n.leaf = false; + n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode()); + if (right) x1 = sx; else x2 = sx; + if (bottom) y1 = sy; else y2 = sy; + insert(n, d, x, y, x1, y1, x2, y2); + } + var root = d3_geom_quadtreeNode(); + root.add = function(d) { + insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_); + }; + root.visit = function(f) { + d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_); + }; + i = -1; + if (x1 == null) { + while (++i < n) { + insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_); + } + --i; + } else data.forEach(root.add); + xs = ys = data = d = null; + return root; + } + quadtree.x = function(_) { + return arguments.length ? (x = _, quadtree) : x; + }; + quadtree.y = function(_) { + return arguments.length ? (y = _, quadtree) : y; + }; + quadtree.extent = function(_) { + if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ]; + if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], + y2 = +_[1][1]; + return quadtree; + }; + quadtree.size = function(_) { + if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ]; + if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1]; + return quadtree; + }; + return quadtree; + }; + function d3_geom_quadtreeCompatX(d) { + return d.x; + } + function d3_geom_quadtreeCompatY(d) { + return d.y; + } + function d3_geom_quadtreeNode() { + return { + leaf: true, + nodes: [], + point: null, + x: null, + y: null + }; + } + function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) { + if (!f(node, x1, y1, x2, y2)) { + var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes; + if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy); + if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy); + if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2); + if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2); + } + } + d3.interpolateRgb = d3_interpolateRgb; + function d3_interpolateRgb(a, b) { + a = d3.rgb(a); + b = d3.rgb(b); + var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab; + return function(t) { + return "#" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t)); + }; + } + d3.interpolateObject = d3_interpolateObject; + function d3_interpolateObject(a, b) { + var i = {}, c = {}, k; + for (k in a) { + if (k in b) { + i[k] = d3_interpolate(a[k], b[k]); + } else { + c[k] = a[k]; + } + } + for (k in b) { + if (!(k in a)) { + c[k] = b[k]; + } + } + return function(t) { + for (k in i) c[k] = i[k](t); + return c; + }; + } + d3.interpolateNumber = d3_interpolateNumber; + function d3_interpolateNumber(a, b) { + b -= a = +a; + return function(t) { + return a + b * t; + }; + } + d3.interpolateString = d3_interpolateString; + function d3_interpolateString(a, b) { + var m, i, j, s0 = 0, s1 = 0, s = [], q = [], n, o; + a = a + "", b = b + ""; + d3_interpolate_number.lastIndex = 0; + for (i = 0; m = d3_interpolate_number.exec(b); ++i) { + if (m.index) s.push(b.substring(s0, s1 = m.index)); + q.push({ + i: s.length, + x: m[0] + }); + s.push(null); + s0 = d3_interpolate_number.lastIndex; + } + if (s0 < b.length) s.push(b.substring(s0)); + for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) { + o = q[i]; + if (o.x == m[0]) { + if (o.i) { + if (s[o.i + 1] == null) { + s[o.i - 1] += o.x; + s.splice(o.i, 1); + for (j = i + 1; j < n; ++j) q[j].i--; + } else { + s[o.i - 1] += o.x + s[o.i + 1]; + s.splice(o.i, 2); + for (j = i + 1; j < n; ++j) q[j].i -= 2; + } + } else { + if (s[o.i + 1] == null) { + s[o.i] = o.x; + } else { + s[o.i] = o.x + s[o.i + 1]; + s.splice(o.i + 1, 1); + for (j = i + 1; j < n; ++j) q[j].i--; + } + } + q.splice(i, 1); + n--; + i--; + } else { + o.x = d3_interpolateNumber(parseFloat(m[0]), parseFloat(o.x)); + } + } + while (i < n) { + o = q.pop(); + if (s[o.i + 1] == null) { + s[o.i] = o.x; + } else { + s[o.i] = o.x + s[o.i + 1]; + s.splice(o.i + 1, 1); + } + n--; + } + if (s.length === 1) { + return s[0] == null ? (o = q[0].x, function(t) { + return o(t) + ""; + }) : function() { + return b; + }; + } + return function(t) { + for (i = 0; i < n; ++i) s[(o = q[i]).i] = o.x(t); + return s.join(""); + }; + } + var d3_interpolate_number = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g; + d3.interpolate = d3_interpolate; + function d3_interpolate(a, b) { + var i = d3.interpolators.length, f; + while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ; + return f; + } + d3.interpolators = [ function(a, b) { + var t = typeof b; + return (t === "string" ? d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_Color ? d3_interpolateRgb : t === "object" ? Array.isArray(b) ? d3_interpolateArray : d3_interpolateObject : d3_interpolateNumber)(a, b); + } ]; + d3.interpolateArray = d3_interpolateArray; + function d3_interpolateArray(a, b) { + var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i; + for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i])); + for (;i < na; ++i) c[i] = a[i]; + for (;i < nb; ++i) c[i] = b[i]; + return function(t) { + for (i = 0; i < n0; ++i) c[i] = x[i](t); + return c; + }; + } + var d3_ease_default = function() { + return d3_identity; + }; + var d3_ease = d3.map({ + linear: d3_ease_default, + poly: d3_ease_poly, + quad: function() { + return d3_ease_quad; + }, + cubic: function() { + return d3_ease_cubic; + }, + sin: function() { + return d3_ease_sin; + }, + exp: function() { + return d3_ease_exp; + }, + circle: function() { + return d3_ease_circle; + }, + elastic: d3_ease_elastic, + back: d3_ease_back, + bounce: function() { + return d3_ease_bounce; + } + }); + var d3_ease_mode = d3.map({ + "in": d3_identity, + out: d3_ease_reverse, + "in-out": d3_ease_reflect, + "out-in": function(f) { + return d3_ease_reflect(d3_ease_reverse(f)); + } + }); + d3.ease = function(name) { + var i = name.indexOf("-"), t = i >= 0 ? name.substring(0, i) : name, m = i >= 0 ? name.substring(i + 1) : "in"; + t = d3_ease.get(t) || d3_ease_default; + m = d3_ease_mode.get(m) || d3_identity; + return d3_ease_clamp(m(t.apply(null, Array.prototype.slice.call(arguments, 1)))); + }; + function d3_ease_clamp(f) { + return function(t) { + return t <= 0 ? 0 : t >= 1 ? 1 : f(t); + }; + } + function d3_ease_reverse(f) { + return function(t) { + return 1 - f(1 - t); + }; + } + function d3_ease_reflect(f) { + return function(t) { + return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t)); + }; + } + function d3_ease_quad(t) { + return t * t; + } + function d3_ease_cubic(t) { + return t * t * t; + } + function d3_ease_cubicInOut(t) { + if (t <= 0) return 0; + if (t >= 1) return 1; + var t2 = t * t, t3 = t2 * t; + return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75); + } + function d3_ease_poly(e) { + return function(t) { + return Math.pow(t, e); + }; + } + function d3_ease_sin(t) { + return 1 - Math.cos(t * halfπ); + } + function d3_ease_exp(t) { + return Math.pow(2, 10 * (t - 1)); + } + function d3_ease_circle(t) { + return 1 - Math.sqrt(1 - t * t); + } + function d3_ease_elastic(a, p) { + var s; + if (arguments.length < 2) p = .45; + if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4; + return function(t) { + return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p); + }; + } + function d3_ease_back(s) { + if (!s) s = 1.70158; + return function(t) { + return t * t * ((s + 1) * t - s); + }; + } + function d3_ease_bounce(t) { + return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375; + } + d3.interpolateHcl = d3_interpolateHcl; + function d3_interpolateHcl(a, b) { + a = d3.hcl(a); + b = d3.hcl(b); + var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al; + if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac; + if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360; + return function(t) { + return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + ""; + }; + } + d3.interpolateHsl = d3_interpolateHsl; + function d3_interpolateHsl(a, b) { + a = d3.hsl(a); + b = d3.hsl(b); + var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al; + if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as; + if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360; + return function(t) { + return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + ""; + }; + } + d3.interpolateLab = d3_interpolateLab; + function d3_interpolateLab(a, b) { + a = d3.lab(a); + b = d3.lab(b); + var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab; + return function(t) { + return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + ""; + }; + } + d3.interpolateRound = d3_interpolateRound; + function d3_interpolateRound(a, b) { + b -= a; + return function(t) { + return Math.round(a + b * t); + }; + } + d3.transform = function(string) { + var g = d3_document.createElementNS(d3.ns.prefix.svg, "g"); + return (d3.transform = function(string) { + if (string != null) { + g.setAttribute("transform", string); + var t = g.transform.baseVal.consolidate(); + } + return new d3_transform(t ? t.matrix : d3_transformIdentity); + })(string); + }; + function d3_transform(m) { + var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0; + if (r0[0] * r1[1] < r1[0] * r0[1]) { + r0[0] *= -1; + r0[1] *= -1; + kx *= -1; + kz *= -1; + } + this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees; + this.translate = [ m.e, m.f ]; + this.scale = [ kx, ky ]; + this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0; + } + d3_transform.prototype.toString = function() { + return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")"; + }; + function d3_transformDot(a, b) { + return a[0] * b[0] + a[1] * b[1]; + } + function d3_transformNormalize(a) { + var k = Math.sqrt(d3_transformDot(a, a)); + if (k) { + a[0] /= k; + a[1] /= k; + } + return k; + } + function d3_transformCombine(a, b, k) { + a[0] += k * b[0]; + a[1] += k * b[1]; + return a; + } + var d3_transformIdentity = { + a: 1, + b: 0, + c: 0, + d: 1, + e: 0, + f: 0 + }; + d3.interpolateTransform = d3_interpolateTransform; + function d3_interpolateTransform(a, b) { + var s = [], q = [], n, A = d3.transform(a), B = d3.transform(b), ta = A.translate, tb = B.translate, ra = A.rotate, rb = B.rotate, wa = A.skew, wb = B.skew, ka = A.scale, kb = B.scale; + if (ta[0] != tb[0] || ta[1] != tb[1]) { + s.push("translate(", null, ",", null, ")"); + q.push({ + i: 1, + x: d3_interpolateNumber(ta[0], tb[0]) + }, { + i: 3, + x: d3_interpolateNumber(ta[1], tb[1]) + }); + } else if (tb[0] || tb[1]) { + s.push("translate(" + tb + ")"); + } else { + s.push(""); + } + if (ra != rb) { + if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360; + q.push({ + i: s.push(s.pop() + "rotate(", null, ")") - 2, + x: d3_interpolateNumber(ra, rb) + }); + } else if (rb) { + s.push(s.pop() + "rotate(" + rb + ")"); + } + if (wa != wb) { + q.push({ + i: s.push(s.pop() + "skewX(", null, ")") - 2, + x: d3_interpolateNumber(wa, wb) + }); + } else if (wb) { + s.push(s.pop() + "skewX(" + wb + ")"); + } + if (ka[0] != kb[0] || ka[1] != kb[1]) { + n = s.push(s.pop() + "scale(", null, ",", null, ")"); + q.push({ + i: n - 4, + x: d3_interpolateNumber(ka[0], kb[0]) + }, { + i: n - 2, + x: d3_interpolateNumber(ka[1], kb[1]) + }); + } else if (kb[0] != 1 || kb[1] != 1) { + s.push(s.pop() + "scale(" + kb + ")"); + } + n = q.length; + return function(t) { + var i = -1, o; + while (++i < n) s[(o = q[i]).i] = o.x(t); + return s.join(""); + }; + } + function d3_uninterpolateNumber(a, b) { + b = b - (a = +a) ? 1 / (b - a) : 0; + return function(x) { + return (x - a) * b; + }; + } + function d3_uninterpolateClamp(a, b) { + b = b - (a = +a) ? 1 / (b - a) : 0; + return function(x) { + return Math.max(0, Math.min(1, (x - a) * b)); + }; + } + d3.layout = {}; + d3.layout.bundle = function() { + return function(links) { + var paths = [], i = -1, n = links.length; + while (++i < n) paths.push(d3_layout_bundlePath(links[i])); + return paths; + }; + }; + function d3_layout_bundlePath(link) { + var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ]; + while (start !== lca) { + start = start.parent; + points.push(start); + } + var k = points.length; + while (end !== lca) { + points.splice(k, 0, end); + end = end.parent; + } + return points; + } + function d3_layout_bundleAncestors(node) { + var ancestors = [], parent = node.parent; + while (parent != null) { + ancestors.push(node); + node = parent; + parent = parent.parent; + } + ancestors.push(node); + return ancestors; + } + function d3_layout_bundleLeastCommonAncestor(a, b) { + if (a === b) return a; + var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null; + while (aNode === bNode) { + sharedNode = aNode; + aNode = aNodes.pop(); + bNode = bNodes.pop(); + } + return sharedNode; + } + d3.layout.chord = function() { + var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords; + function relayout() { + var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j; + chords = []; + groups = []; + k = 0, i = -1; + while (++i < n) { + x = 0, j = -1; + while (++j < n) { + x += matrix[i][j]; + } + groupSums.push(x); + subgroupIndex.push(d3.range(n)); + k += x; + } + if (sortGroups) { + groupIndex.sort(function(a, b) { + return sortGroups(groupSums[a], groupSums[b]); + }); + } + if (sortSubgroups) { + subgroupIndex.forEach(function(d, i) { + d.sort(function(a, b) { + return sortSubgroups(matrix[i][a], matrix[i][b]); + }); + }); + } + k = (τ - padding * n) / k; + x = 0, i = -1; + while (++i < n) { + x0 = x, j = -1; + while (++j < n) { + var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k; + subgroups[di + "-" + dj] = { + index: di, + subindex: dj, + startAngle: a0, + endAngle: a1, + value: v + }; + } + groups[di] = { + index: di, + startAngle: x0, + endAngle: x, + value: (x - x0) / k + }; + x += padding; + } + i = -1; + while (++i < n) { + j = i - 1; + while (++j < n) { + var source = subgroups[i + "-" + j], target = subgroups[j + "-" + i]; + if (source.value || target.value) { + chords.push(source.value < target.value ? { + source: target, + target: source + } : { + source: source, + target: target + }); + } + } + } + if (sortChords) resort(); + } + function resort() { + chords.sort(function(a, b) { + return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2); + }); + } + chord.matrix = function(x) { + if (!arguments.length) return matrix; + n = (matrix = x) && matrix.length; + chords = groups = null; + return chord; + }; + chord.padding = function(x) { + if (!arguments.length) return padding; + padding = x; + chords = groups = null; + return chord; + }; + chord.sortGroups = function(x) { + if (!arguments.length) return sortGroups; + sortGroups = x; + chords = groups = null; + return chord; + }; + chord.sortSubgroups = function(x) { + if (!arguments.length) return sortSubgroups; + sortSubgroups = x; + chords = null; + return chord; + }; + chord.sortChords = function(x) { + if (!arguments.length) return sortChords; + sortChords = x; + if (chords) resort(); + return chord; + }; + chord.chords = function() { + if (!chords) relayout(); + return chords; + }; + chord.groups = function() { + if (!groups) relayout(); + return groups; + }; + return chord; + }; + d3.layout.force = function() { + var force = {}, event = d3.dispatch("start", "tick", "end"), size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, gravity = .1, theta = .8, nodes = [], links = [], distances, strengths, charges; + function repulse(node) { + return function(quad, x1, _, x2) { + if (quad.point !== node) { + var dx = quad.cx - node.x, dy = quad.cy - node.y, dn = 1 / Math.sqrt(dx * dx + dy * dy); + if ((x2 - x1) * dn < theta) { + var k = quad.charge * dn * dn; + node.px -= dx * k; + node.py -= dy * k; + return true; + } + if (quad.point && isFinite(dn)) { + var k = quad.pointCharge * dn * dn; + node.px -= dx * k; + node.py -= dy * k; + } + } + return !quad.charge; + }; + } + force.tick = function() { + if ((alpha *= .99) < .005) { + event.end({ + type: "end", + alpha: alpha = 0 + }); + return true; + } + var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y; + for (i = 0; i < m; ++i) { + o = links[i]; + s = o.source; + t = o.target; + x = t.x - s.x; + y = t.y - s.y; + if (l = x * x + y * y) { + l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l; + x *= l; + y *= l; + t.x -= x * (k = s.weight / (t.weight + s.weight)); + t.y -= y * k; + s.x += x * (k = 1 - k); + s.y += y * k; + } + } + if (k = alpha * gravity) { + x = size[0] / 2; + y = size[1] / 2; + i = -1; + if (k) while (++i < n) { + o = nodes[i]; + o.x += (x - o.x) * k; + o.y += (y - o.y) * k; + } + } + if (charge) { + d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges); + i = -1; + while (++i < n) { + if (!(o = nodes[i]).fixed) { + q.visit(repulse(o)); + } + } + } + i = -1; + while (++i < n) { + o = nodes[i]; + if (o.fixed) { + o.x = o.px; + o.y = o.py; + } else { + o.x -= (o.px - (o.px = o.x)) * friction; + o.y -= (o.py - (o.py = o.y)) * friction; + } + } + event.tick({ + type: "tick", + alpha: alpha + }); + }; + force.nodes = function(x) { + if (!arguments.length) return nodes; + nodes = x; + return force; + }; + force.links = function(x) { + if (!arguments.length) return links; + links = x; + return force; + }; + force.size = function(x) { + if (!arguments.length) return size; + size = x; + return force; + }; + force.linkDistance = function(x) { + if (!arguments.length) return linkDistance; + linkDistance = typeof x === "function" ? x : +x; + return force; + }; + force.distance = force.linkDistance; + force.linkStrength = function(x) { + if (!arguments.length) return linkStrength; + linkStrength = typeof x === "function" ? x : +x; + return force; + }; + force.friction = function(x) { + if (!arguments.length) return friction; + friction = +x; + return force; + }; + force.charge = function(x) { + if (!arguments.length) return charge; + charge = typeof x === "function" ? x : +x; + return force; + }; + force.gravity = function(x) { + if (!arguments.length) return gravity; + gravity = +x; + return force; + }; + force.theta = function(x) { + if (!arguments.length) return theta; + theta = +x; + return force; + }; + force.alpha = function(x) { + if (!arguments.length) return alpha; + x = +x; + if (alpha) { + if (x > 0) alpha = x; else alpha = 0; + } else if (x > 0) { + event.start({ + type: "start", + alpha: alpha = x + }); + d3.timer(force.tick); + } + return force; + }; + force.start = function() { + var i, j, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o; + for (i = 0; i < n; ++i) { + (o = nodes[i]).index = i; + o.weight = 0; + } + for (i = 0; i < m; ++i) { + o = links[i]; + if (typeof o.source == "number") o.source = nodes[o.source]; + if (typeof o.target == "number") o.target = nodes[o.target]; + ++o.source.weight; + ++o.target.weight; + } + for (i = 0; i < n; ++i) { + o = nodes[i]; + if (isNaN(o.x)) o.x = position("x", w); + if (isNaN(o.y)) o.y = position("y", h); + if (isNaN(o.px)) o.px = o.x; + if (isNaN(o.py)) o.py = o.y; + } + distances = []; + if (typeof linkDistance === "function") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance; + strengths = []; + if (typeof linkStrength === "function") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength; + charges = []; + if (typeof charge === "function") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge; + function position(dimension, size) { + var neighbors = neighbor(i), j = -1, m = neighbors.length, x; + while (++j < m) if (!isNaN(x = neighbors[j][dimension])) return x; + return Math.random() * size; + } + function neighbor() { + if (!neighbors) { + neighbors = []; + for (j = 0; j < n; ++j) { + neighbors[j] = []; + } + for (j = 0; j < m; ++j) { + var o = links[j]; + neighbors[o.source.index].push(o.target); + neighbors[o.target.index].push(o.source); + } + } + return neighbors[i]; + } + return force.resume(); + }; + force.resume = function() { + return force.alpha(.1); + }; + force.stop = function() { + return force.alpha(0); + }; + force.drag = function() { + if (!drag) drag = d3.behavior.drag().origin(d3_identity).on("dragstart.force", d3_layout_forceDragstart).on("drag.force", dragmove).on("dragend.force", d3_layout_forceDragend); + if (!arguments.length) return drag; + this.on("mouseover.force", d3_layout_forceMouseover).on("mouseout.force", d3_layout_forceMouseout).call(drag); + }; + function dragmove(d) { + d.px = d3.event.x, d.py = d3.event.y; + force.resume(); + } + return d3.rebind(force, event, "on"); + }; + function d3_layout_forceDragstart(d) { + d.fixed |= 2; + } + function d3_layout_forceDragend(d) { + d.fixed &= ~6; + } + function d3_layout_forceMouseover(d) { + d.fixed |= 4; + d.px = d.x, d.py = d.y; + } + function d3_layout_forceMouseout(d) { + d.fixed &= ~4; + } + function d3_layout_forceAccumulate(quad, alpha, charges) { + var cx = 0, cy = 0; + quad.charge = 0; + if (!quad.leaf) { + var nodes = quad.nodes, n = nodes.length, i = -1, c; + while (++i < n) { + c = nodes[i]; + if (c == null) continue; + d3_layout_forceAccumulate(c, alpha, charges); + quad.charge += c.charge; + cx += c.charge * c.cx; + cy += c.charge * c.cy; + } + } + if (quad.point) { + if (!quad.leaf) { + quad.point.x += Math.random() - .5; + quad.point.y += Math.random() - .5; + } + var k = alpha * charges[quad.point.index]; + quad.charge += quad.pointCharge = k; + cx += k * quad.point.x; + cy += k * quad.point.y; + } + quad.cx = cx / quad.charge; + quad.cy = cy / quad.charge; + } + var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1; + d3.layout.hierarchy = function() { + var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue; + function recurse(node, depth, nodes) { + var childs = children.call(hierarchy, node, depth); + node.depth = depth; + nodes.push(node); + if (childs && (n = childs.length)) { + var i = -1, n, c = node.children = [], v = 0, j = depth + 1, d; + while (++i < n) { + d = recurse(childs[i], j, nodes); + d.parent = node; + c.push(d); + v += d.value; + } + if (sort) c.sort(sort); + if (value) node.value = v; + } else if (value) { + node.value = +value.call(hierarchy, node, depth) || 0; + } + return node; + } + function revalue(node, depth) { + var children = node.children, v = 0; + if (children && (n = children.length)) { + var i = -1, n, j = depth + 1; + while (++i < n) v += revalue(children[i], j); + } else if (value) { + v = +value.call(hierarchy, node, depth) || 0; + } + if (value) node.value = v; + return v; + } + function hierarchy(d) { + var nodes = []; + recurse(d, 0, nodes); + return nodes; + } + hierarchy.sort = function(x) { + if (!arguments.length) return sort; + sort = x; + return hierarchy; + }; + hierarchy.children = function(x) { + if (!arguments.length) return children; + children = x; + return hierarchy; + }; + hierarchy.value = function(x) { + if (!arguments.length) return value; + value = x; + return hierarchy; + }; + hierarchy.revalue = function(root) { + revalue(root, 0); + return root; + }; + return hierarchy; + }; + function d3_layout_hierarchyRebind(object, hierarchy) { + d3.rebind(object, hierarchy, "sort", "children", "value"); + object.nodes = object; + object.links = d3_layout_hierarchyLinks; + return object; + } + function d3_layout_hierarchyChildren(d) { + return d.children; + } + function d3_layout_hierarchyValue(d) { + return d.value; + } + function d3_layout_hierarchySort(a, b) { + return b.value - a.value; + } + function d3_layout_hierarchyLinks(nodes) { + return d3.merge(nodes.map(function(parent) { + return (parent.children || []).map(function(child) { + return { + source: parent, + target: child + }; + }); + })); + } + d3.layout.partition = function() { + var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ]; + function position(node, x, dx, dy) { + var children = node.children; + node.x = x; + node.y = node.depth * dy; + node.dx = dx; + node.dy = dy; + if (children && (n = children.length)) { + var i = -1, n, c, d; + dx = node.value ? dx / node.value : 0; + while (++i < n) { + position(c = children[i], x, d = c.value * dx, dy); + x += d; + } + } + } + function depth(node) { + var children = node.children, d = 0; + if (children && (n = children.length)) { + var i = -1, n; + while (++i < n) d = Math.max(d, depth(children[i])); + } + return 1 + d; + } + function partition(d, i) { + var nodes = hierarchy.call(this, d, i); + position(nodes[0], 0, size[0], size[1] / depth(nodes[0])); + return nodes; + } + partition.size = function(x) { + if (!arguments.length) return size; + size = x; + return partition; + }; + return d3_layout_hierarchyRebind(partition, hierarchy); + }; + d3.layout.pie = function() { + var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ; + function pie(data) { + var values = data.map(function(d, i) { + return +value.call(pie, d, i); + }); + var a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle); + var k = ((typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - a) / d3.sum(values); + var index = d3.range(data.length); + if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) { + return values[j] - values[i]; + } : function(i, j) { + return sort(data[i], data[j]); + }); + var arcs = []; + index.forEach(function(i) { + var d; + arcs[i] = { + data: data[i], + value: d = values[i], + startAngle: a, + endAngle: a += d * k + }; + }); + return arcs; + } + pie.value = function(x) { + if (!arguments.length) return value; + value = x; + return pie; + }; + pie.sort = function(x) { + if (!arguments.length) return sort; + sort = x; + return pie; + }; + pie.startAngle = function(x) { + if (!arguments.length) return startAngle; + startAngle = x; + return pie; + }; + pie.endAngle = function(x) { + if (!arguments.length) return endAngle; + endAngle = x; + return pie; + }; + return pie; + }; + var d3_layout_pieSortByValue = {}; + d3.layout.stack = function() { + var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY; + function stack(data, index) { + var series = data.map(function(d, i) { + return values.call(stack, d, i); + }); + var points = series.map(function(d) { + return d.map(function(v, i) { + return [ x.call(stack, v, i), y.call(stack, v, i) ]; + }); + }); + var orders = order.call(stack, points, index); + series = d3.permute(series, orders); + points = d3.permute(points, orders); + var offsets = offset.call(stack, points, index); + var n = series.length, m = series[0].length, i, j, o; + for (j = 0; j < m; ++j) { + out.call(stack, series[0][j], o = offsets[j], points[0][j][1]); + for (i = 1; i < n; ++i) { + out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]); + } + } + return data; + } + stack.values = function(x) { + if (!arguments.length) return values; + values = x; + return stack; + }; + stack.order = function(x) { + if (!arguments.length) return order; + order = typeof x === "function" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault; + return stack; + }; + stack.offset = function(x) { + if (!arguments.length) return offset; + offset = typeof x === "function" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero; + return stack; + }; + stack.x = function(z) { + if (!arguments.length) return x; + x = z; + return stack; + }; + stack.y = function(z) { + if (!arguments.length) return y; + y = z; + return stack; + }; + stack.out = function(z) { + if (!arguments.length) return out; + out = z; + return stack; + }; + return stack; + }; + function d3_layout_stackX(d) { + return d.x; + } + function d3_layout_stackY(d) { + return d.y; + } + function d3_layout_stackOut(d, y0, y) { + d.y0 = y0; + d.y = y; + } + var d3_layout_stackOrders = d3.map({ + "inside-out": function(data) { + var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) { + return max[a] - max[b]; + }), top = 0, bottom = 0, tops = [], bottoms = []; + for (i = 0; i < n; ++i) { + j = index[i]; + if (top < bottom) { + top += sums[j]; + tops.push(j); + } else { + bottom += sums[j]; + bottoms.push(j); + } + } + return bottoms.reverse().concat(tops); + }, + reverse: function(data) { + return d3.range(data.length).reverse(); + }, + "default": d3_layout_stackOrderDefault + }); + var d3_layout_stackOffsets = d3.map({ + silhouette: function(data) { + var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = []; + for (j = 0; j < m; ++j) { + for (i = 0, o = 0; i < n; i++) o += data[i][j][1]; + if (o > max) max = o; + sums.push(o); + } + for (j = 0; j < m; ++j) { + y0[j] = (max - sums[j]) / 2; + } + return y0; + }, + wiggle: function(data) { + var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = []; + y0[0] = o = o0 = 0; + for (j = 1; j < m; ++j) { + for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1]; + for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) { + for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) { + s3 += (data[k][j][1] - data[k][j - 1][1]) / dx; + } + s2 += s3 * data[i][j][1]; + } + y0[j] = o -= s1 ? s2 / s1 * dx : 0; + if (o < o0) o0 = o; + } + for (j = 0; j < m; ++j) y0[j] -= o0; + return y0; + }, + expand: function(data) { + var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = []; + for (j = 0; j < m; ++j) { + for (i = 0, o = 0; i < n; i++) o += data[i][j][1]; + if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k; + } + for (j = 0; j < m; ++j) y0[j] = 0; + return y0; + }, + zero: d3_layout_stackOffsetZero + }); + function d3_layout_stackOrderDefault(data) { + return d3.range(data.length); + } + function d3_layout_stackOffsetZero(data) { + var j = -1, m = data[0].length, y0 = []; + while (++j < m) y0[j] = 0; + return y0; + } + function d3_layout_stackMaxIndex(array) { + var i = 1, j = 0, v = array[0][1], k, n = array.length; + for (;i < n; ++i) { + if ((k = array[i][1]) > v) { + j = i; + v = k; + } + } + return j; + } + function d3_layout_stackReduceSum(d) { + return d.reduce(d3_layout_stackSum, 0); + } + function d3_layout_stackSum(p, d) { + return p + d[1]; + } + d3.layout.histogram = function() { + var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges; + function histogram(data, i) { + var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x; + while (++i < m) { + bin = bins[i] = []; + bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]); + bin.y = 0; + } + if (m > 0) { + i = -1; + while (++i < n) { + x = values[i]; + if (x >= range[0] && x <= range[1]) { + bin = bins[d3.bisect(thresholds, x, 1, m) - 1]; + bin.y += k; + bin.push(data[i]); + } + } + } + return bins; + } + histogram.value = function(x) { + if (!arguments.length) return valuer; + valuer = x; + return histogram; + }; + histogram.range = function(x) { + if (!arguments.length) return ranger; + ranger = d3_functor(x); + return histogram; + }; + histogram.bins = function(x) { + if (!arguments.length) return binner; + binner = typeof x === "number" ? function(range) { + return d3_layout_histogramBinFixed(range, x); + } : d3_functor(x); + return histogram; + }; + histogram.frequency = function(x) { + if (!arguments.length) return frequency; + frequency = !!x; + return histogram; + }; + return histogram; + }; + function d3_layout_histogramBinSturges(range, values) { + return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1)); + } + function d3_layout_histogramBinFixed(range, n) { + var x = -1, b = +range[0], m = (range[1] - b) / n, f = []; + while (++x <= n) f[x] = m * x + b; + return f; + } + function d3_layout_histogramRange(values) { + return [ d3.min(values), d3.max(values) ]; + } + d3.layout.tree = function() { + var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false; + function tree(d, i) { + var nodes = hierarchy.call(this, d, i), root = nodes[0]; + function firstWalk(node, previousSibling) { + var children = node.children, layout = node._tree; + if (children && (n = children.length)) { + var n, firstChild = children[0], previousChild, ancestor = firstChild, child, i = -1; + while (++i < n) { + child = children[i]; + firstWalk(child, previousChild); + ancestor = apportion(child, previousChild, ancestor); + previousChild = child; + } + d3_layout_treeShift(node); + var midpoint = .5 * (firstChild._tree.prelim + child._tree.prelim); + if (previousSibling) { + layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling); + layout.mod = layout.prelim - midpoint; + } else { + layout.prelim = midpoint; + } + } else { + if (previousSibling) { + layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling); + } + } + } + function secondWalk(node, x) { + node.x = node._tree.prelim + x; + var children = node.children; + if (children && (n = children.length)) { + var i = -1, n; + x += node._tree.mod; + while (++i < n) { + secondWalk(children[i], x); + } + } + } + function apportion(node, previousSibling, ancestor) { + if (previousSibling) { + var vip = node, vop = node, vim = previousSibling, vom = node.parent.children[0], sip = vip._tree.mod, sop = vop._tree.mod, sim = vim._tree.mod, som = vom._tree.mod, shift; + while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) { + vom = d3_layout_treeLeft(vom); + vop = d3_layout_treeRight(vop); + vop._tree.ancestor = node; + shift = vim._tree.prelim + sim - vip._tree.prelim - sip + separation(vim, vip); + if (shift > 0) { + d3_layout_treeMove(d3_layout_treeAncestor(vim, node, ancestor), node, shift); + sip += shift; + sop += shift; + } + sim += vim._tree.mod; + sip += vip._tree.mod; + som += vom._tree.mod; + sop += vop._tree.mod; + } + if (vim && !d3_layout_treeRight(vop)) { + vop._tree.thread = vim; + vop._tree.mod += sim - sop; + } + if (vip && !d3_layout_treeLeft(vom)) { + vom._tree.thread = vip; + vom._tree.mod += sip - som; + ancestor = node; + } + } + return ancestor; + } + d3_layout_treeVisitAfter(root, function(node, previousSibling) { + node._tree = { + ancestor: node, + prelim: 0, + mod: 0, + change: 0, + shift: 0, + number: previousSibling ? previousSibling._tree.number + 1 : 0 + }; + }); + firstWalk(root); + secondWalk(root, -root._tree.prelim); + var left = d3_layout_treeSearch(root, d3_layout_treeLeftmost), right = d3_layout_treeSearch(root, d3_layout_treeRightmost), deep = d3_layout_treeSearch(root, d3_layout_treeDeepest), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2, y1 = deep.depth || 1; + d3_layout_treeVisitAfter(root, nodeSize ? function(node) { + node.x *= size[0]; + node.y = node.depth * size[1]; + delete node._tree; + } : function(node) { + node.x = (node.x - x0) / (x1 - x0) * size[0]; + node.y = node.depth / y1 * size[1]; + delete node._tree; + }); + return nodes; + } + tree.separation = function(x) { + if (!arguments.length) return separation; + separation = x; + return tree; + }; + tree.size = function(x) { + if (!arguments.length) return nodeSize ? null : size; + nodeSize = (size = x) == null; + return tree; + }; + tree.nodeSize = function(x) { + if (!arguments.length) return nodeSize ? size : null; + nodeSize = (size = x) != null; + return tree; + }; + return d3_layout_hierarchyRebind(tree, hierarchy); + }; + function d3_layout_treeSeparation(a, b) { + return a.parent == b.parent ? 1 : 2; + } + function d3_layout_treeLeft(node) { + var children = node.children; + return children && children.length ? children[0] : node._tree.thread; + } + function d3_layout_treeRight(node) { + var children = node.children, n; + return children && (n = children.length) ? children[n - 1] : node._tree.thread; + } + function d3_layout_treeSearch(node, compare) { + var children = node.children; + if (children && (n = children.length)) { + var child, n, i = -1; + while (++i < n) { + if (compare(child = d3_layout_treeSearch(children[i], compare), node) > 0) { + node = child; + } + } + } + return node; + } + function d3_layout_treeRightmost(a, b) { + return a.x - b.x; + } + function d3_layout_treeLeftmost(a, b) { + return b.x - a.x; + } + function d3_layout_treeDeepest(a, b) { + return a.depth - b.depth; + } + function d3_layout_treeVisitAfter(node, callback) { + function visit(node, previousSibling) { + var children = node.children; + if (children && (n = children.length)) { + var child, previousChild = null, i = -1, n; + while (++i < n) { + child = children[i]; + visit(child, previousChild); + previousChild = child; + } + } + callback(node, previousSibling); + } + visit(node, null); + } + function d3_layout_treeShift(node) { + var shift = 0, change = 0, children = node.children, i = children.length, child; + while (--i >= 0) { + child = children[i]._tree; + child.prelim += shift; + child.mod += shift; + shift += child.shift + (change += child.change); + } + } + function d3_layout_treeMove(ancestor, node, shift) { + ancestor = ancestor._tree; + node = node._tree; + var change = shift / (node.number - ancestor.number); + ancestor.change += change; + node.change -= change; + node.shift += shift; + node.prelim += shift; + node.mod += shift; + } + function d3_layout_treeAncestor(vim, node, ancestor) { + return vim._tree.ancestor.parent == node.parent ? vim._tree.ancestor : ancestor; + } + d3.layout.pack = function() { + var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius; + function pack(d, i) { + var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === "function" ? radius : function() { + return radius; + }; + root.x = root.y = 0; + d3_layout_treeVisitAfter(root, function(d) { + d.r = +r(d.value); + }); + d3_layout_treeVisitAfter(root, d3_layout_packSiblings); + if (padding) { + var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2; + d3_layout_treeVisitAfter(root, function(d) { + d.r += dr; + }); + d3_layout_treeVisitAfter(root, d3_layout_packSiblings); + d3_layout_treeVisitAfter(root, function(d) { + d.r -= dr; + }); + } + d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h)); + return nodes; + } + pack.size = function(_) { + if (!arguments.length) return size; + size = _; + return pack; + }; + pack.radius = function(_) { + if (!arguments.length) return radius; + radius = _ == null || typeof _ === "function" ? _ : +_; + return pack; + }; + pack.padding = function(_) { + if (!arguments.length) return padding; + padding = +_; + return pack; + }; + return d3_layout_hierarchyRebind(pack, hierarchy); + }; + function d3_layout_packSort(a, b) { + return a.value - b.value; + } + function d3_layout_packInsert(a, b) { + var c = a._pack_next; + a._pack_next = b; + b._pack_prev = a; + b._pack_next = c; + c._pack_prev = b; + } + function d3_layout_packSplice(a, b) { + a._pack_next = b; + b._pack_prev = a; + } + function d3_layout_packIntersects(a, b) { + var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r; + return .999 * dr * dr > dx * dx + dy * dy; + } + function d3_layout_packSiblings(node) { + if (!(nodes = node.children) || !(n = nodes.length)) return; + var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n; + function bound(node) { + xMin = Math.min(node.x - node.r, xMin); + xMax = Math.max(node.x + node.r, xMax); + yMin = Math.min(node.y - node.r, yMin); + yMax = Math.max(node.y + node.r, yMax); + } + nodes.forEach(d3_layout_packLink); + a = nodes[0]; + a.x = -a.r; + a.y = 0; + bound(a); + if (n > 1) { + b = nodes[1]; + b.x = b.r; + b.y = 0; + bound(b); + if (n > 2) { + c = nodes[2]; + d3_layout_packPlace(a, b, c); + bound(c); + d3_layout_packInsert(a, c); + a._pack_prev = c; + d3_layout_packInsert(c, b); + b = a._pack_next; + for (i = 3; i < n; i++) { + d3_layout_packPlace(a, b, c = nodes[i]); + var isect = 0, s1 = 1, s2 = 1; + for (j = b._pack_next; j !== b; j = j._pack_next, s1++) { + if (d3_layout_packIntersects(j, c)) { + isect = 1; + break; + } + } + if (isect == 1) { + for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) { + if (d3_layout_packIntersects(k, c)) { + break; + } + } + } + if (isect) { + if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b); + i--; + } else { + d3_layout_packInsert(a, c); + b = c; + bound(c); + } + } + } + } + var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0; + for (i = 0; i < n; i++) { + c = nodes[i]; + c.x -= cx; + c.y -= cy; + cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y)); + } + node.r = cr; + nodes.forEach(d3_layout_packUnlink); + } + function d3_layout_packLink(node) { + node._pack_next = node._pack_prev = node; + } + function d3_layout_packUnlink(node) { + delete node._pack_next; + delete node._pack_prev; + } + function d3_layout_packTransform(node, x, y, k) { + var children = node.children; + node.x = x += k * node.x; + node.y = y += k * node.y; + node.r *= k; + if (children) { + var i = -1, n = children.length; + while (++i < n) d3_layout_packTransform(children[i], x, y, k); + } + } + function d3_layout_packPlace(a, b, c) { + var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y; + if (db && (dx || dy)) { + var da = b.r + c.r, dc = dx * dx + dy * dy; + da *= da; + db *= db; + var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc); + c.x = a.x + x * dx + y * dy; + c.y = a.y + x * dy - y * dx; + } else { + c.x = a.x + db; + c.y = a.y; + } + } + d3.layout.cluster = function() { + var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false; + function cluster(d, i) { + var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0; + d3_layout_treeVisitAfter(root, function(node) { + var children = node.children; + if (children && children.length) { + node.x = d3_layout_clusterX(children); + node.y = d3_layout_clusterY(children); + } else { + node.x = previousNode ? x += separation(node, previousNode) : 0; + node.y = 0; + previousNode = node; + } + }); + var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2; + d3_layout_treeVisitAfter(root, nodeSize ? function(node) { + node.x = (node.x - root.x) * size[0]; + node.y = (root.y - node.y) * size[1]; + } : function(node) { + node.x = (node.x - x0) / (x1 - x0) * size[0]; + node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1]; + }); + return nodes; + } + cluster.separation = function(x) { + if (!arguments.length) return separation; + separation = x; + return cluster; + }; + cluster.size = function(x) { + if (!arguments.length) return nodeSize ? null : size; + nodeSize = (size = x) == null; + return cluster; + }; + cluster.nodeSize = function(x) { + if (!arguments.length) return nodeSize ? size : null; + nodeSize = (size = x) != null; + return cluster; + }; + return d3_layout_hierarchyRebind(cluster, hierarchy); + }; + function d3_layout_clusterY(children) { + return 1 + d3.max(children, function(child) { + return child.y; + }); + } + function d3_layout_clusterX(children) { + return children.reduce(function(x, child) { + return x + child.x; + }, 0) / children.length; + } + function d3_layout_clusterLeft(node) { + var children = node.children; + return children && children.length ? d3_layout_clusterLeft(children[0]) : node; + } + function d3_layout_clusterRight(node) { + var children = node.children, n; + return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node; + } + d3.layout.treemap = function() { + var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = "squarify", ratio = .5 * (1 + Math.sqrt(5)); + function scale(children, k) { + var i = -1, n = children.length, child, area; + while (++i < n) { + area = (child = children[i]).value * (k < 0 ? 0 : k); + child.area = isNaN(area) || area <= 0 ? 0 : area; + } + } + function squarify(node) { + var children = node.children; + if (children && children.length) { + var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === "slice" ? rect.dx : mode === "dice" ? rect.dy : mode === "slice-dice" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n; + scale(remaining, rect.dx * rect.dy / node.value); + row.area = 0; + while ((n = remaining.length) > 0) { + row.push(child = remaining[n - 1]); + row.area += child.area; + if (mode !== "squarify" || (score = worst(row, u)) <= best) { + remaining.pop(); + best = score; + } else { + row.area -= row.pop().area; + position(row, u, rect, false); + u = Math.min(rect.dx, rect.dy); + row.length = row.area = 0; + best = Infinity; + } + } + if (row.length) { + position(row, u, rect, true); + row.length = row.area = 0; + } + children.forEach(squarify); + } + } + function stickify(node) { + var children = node.children; + if (children && children.length) { + var rect = pad(node), remaining = children.slice(), child, row = []; + scale(remaining, rect.dx * rect.dy / node.value); + row.area = 0; + while (child = remaining.pop()) { + row.push(child); + row.area += child.area; + if (child.z != null) { + position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length); + row.length = row.area = 0; + } + } + children.forEach(stickify); + } + } + function worst(row, u) { + var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length; + while (++i < n) { + if (!(r = row[i].area)) continue; + if (r < rmin) rmin = r; + if (r > rmax) rmax = r; + } + s *= s; + u *= u; + return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity; + } + function position(row, u, rect, flush) { + var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o; + if (u == rect.dx) { + if (flush || v > rect.dy) v = rect.dy; + while (++i < n) { + o = row[i]; + o.x = x; + o.y = y; + o.dy = v; + x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0); + } + o.z = true; + o.dx += rect.x + rect.dx - x; + rect.y += v; + rect.dy -= v; + } else { + if (flush || v > rect.dx) v = rect.dx; + while (++i < n) { + o = row[i]; + o.x = x; + o.y = y; + o.dx = v; + y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0); + } + o.z = false; + o.dy += rect.y + rect.dy - y; + rect.x += v; + rect.dx -= v; + } + } + function treemap(d) { + var nodes = stickies || hierarchy(d), root = nodes[0]; + root.x = 0; + root.y = 0; + root.dx = size[0]; + root.dy = size[1]; + if (stickies) hierarchy.revalue(root); + scale([ root ], root.dx * root.dy / root.value); + (stickies ? stickify : squarify)(root); + if (sticky) stickies = nodes; + return nodes; + } + treemap.size = function(x) { + if (!arguments.length) return size; + size = x; + return treemap; + }; + treemap.padding = function(x) { + if (!arguments.length) return padding; + function padFunction(node) { + var p = x.call(treemap, node, node.depth); + return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === "number" ? [ p, p, p, p ] : p); + } + function padConstant(node) { + return d3_layout_treemapPad(node, x); + } + var type; + pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === "function" ? padFunction : type === "number" ? (x = [ x, x, x, x ], + padConstant) : padConstant; + return treemap; + }; + treemap.round = function(x) { + if (!arguments.length) return round != Number; + round = x ? Math.round : Number; + return treemap; + }; + treemap.sticky = function(x) { + if (!arguments.length) return sticky; + sticky = x; + stickies = null; + return treemap; + }; + treemap.ratio = function(x) { + if (!arguments.length) return ratio; + ratio = x; + return treemap; + }; + treemap.mode = function(x) { + if (!arguments.length) return mode; + mode = x + ""; + return treemap; + }; + return d3_layout_hierarchyRebind(treemap, hierarchy); + }; + function d3_layout_treemapPadNull(node) { + return { + x: node.x, + y: node.y, + dx: node.dx, + dy: node.dy + }; + } + function d3_layout_treemapPad(node, padding) { + var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2]; + if (dx < 0) { + x += dx / 2; + dx = 0; + } + if (dy < 0) { + y += dy / 2; + dy = 0; + } + return { + x: x, + y: y, + dx: dx, + dy: dy + }; + } + d3.random = { + normal: function(µ, σ) { + var n = arguments.length; + if (n < 2) σ = 1; + if (n < 1) µ = 0; + return function() { + var x, y, r; + do { + x = Math.random() * 2 - 1; + y = Math.random() * 2 - 1; + r = x * x + y * y; + } while (!r || r > 1); + return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r); + }; + }, + logNormal: function() { + var random = d3.random.normal.apply(d3, arguments); + return function() { + return Math.exp(random()); + }; + }, + irwinHall: function(m) { + return function() { + for (var s = 0, j = 0; j < m; j++) s += Math.random(); + return s / m; + }; + } + }; + d3.scale = {}; + function d3_scaleExtent(domain) { + var start = domain[0], stop = domain[domain.length - 1]; + return start < stop ? [ start, stop ] : [ stop, start ]; + } + function d3_scaleRange(scale) { + return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range()); + } + function d3_scale_bilinear(domain, range, uninterpolate, interpolate) { + var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]); + return function(x) { + return i(u(x)); + }; + } + function d3_scale_nice(domain, nice) { + var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx; + if (x1 < x0) { + dx = i0, i0 = i1, i1 = dx; + dx = x0, x0 = x1, x1 = dx; + } + domain[i0] = nice.floor(x0); + domain[i1] = nice.ceil(x1); + return domain; + } + function d3_scale_niceStep(step) { + return step ? { + floor: function(x) { + return Math.floor(x / step) * step; + }, + ceil: function(x) { + return Math.ceil(x / step) * step; + } + } : d3_scale_niceIdentity; + } + var d3_scale_niceIdentity = { + floor: d3_identity, + ceil: d3_identity + }; + function d3_scale_polylinear(domain, range, uninterpolate, interpolate) { + var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1; + if (domain[k] < domain[0]) { + domain = domain.slice().reverse(); + range = range.slice().reverse(); + } + while (++j <= k) { + u.push(uninterpolate(domain[j - 1], domain[j])); + i.push(interpolate(range[j - 1], range[j])); + } + return function(x) { + var j = d3.bisect(domain, x, 1, k) - 1; + return i[j](u[j](x)); + }; + } + d3.scale.linear = function() { + return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false); + }; + function d3_scale_linear(domain, range, interpolate, clamp) { + var output, input; + function rescale() { + var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber; + output = linear(domain, range, uninterpolate, interpolate); + input = linear(range, domain, uninterpolate, d3_interpolate); + return scale; + } + function scale(x) { + return output(x); + } + scale.invert = function(y) { + return input(y); + }; + scale.domain = function(x) { + if (!arguments.length) return domain; + domain = x.map(Number); + return rescale(); + }; + scale.range = function(x) { + if (!arguments.length) return range; + range = x; + return rescale(); + }; + scale.rangeRound = function(x) { + return scale.range(x).interpolate(d3_interpolateRound); + }; + scale.clamp = function(x) { + if (!arguments.length) return clamp; + clamp = x; + return rescale(); + }; + scale.interpolate = function(x) { + if (!arguments.length) return interpolate; + interpolate = x; + return rescale(); + }; + scale.ticks = function(m) { + return d3_scale_linearTicks(domain, m); + }; + scale.tickFormat = function(m, format) { + return d3_scale_linearTickFormat(domain, m, format); + }; + scale.nice = function(m) { + d3_scale_linearNice(domain, m); + return rescale(); + }; + scale.copy = function() { + return d3_scale_linear(domain, range, interpolate, clamp); + }; + return rescale(); + } + function d3_scale_linearRebind(scale, linear) { + return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp"); + } + function d3_scale_linearNice(domain, m) { + return d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2])); + } + function d3_scale_linearTickRange(domain, m) { + if (m == null) m = 10; + var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step; + if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2; + extent[0] = Math.ceil(extent[0] / step) * step; + extent[1] = Math.floor(extent[1] / step) * step + step * .5; + extent[2] = step; + return extent; + } + function d3_scale_linearTicks(domain, m) { + return d3.range.apply(d3, d3_scale_linearTickRange(domain, m)); + } + function d3_scale_linearTickFormat(domain, m, format) { + var precision = -Math.floor(Math.log(d3_scale_linearTickRange(domain, m)[2]) / Math.LN10 + .01); + return d3.format(format ? format.replace(d3_format_re, function(a, b, c, d, e, f, g, h, i, j) { + return [ b, c, d, e, f, g, h, i || "." + (precision - (j === "%") * 2), j ].join(""); + }) : ",." + precision + "f"); + } + d3.scale.log = function() { + return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]); + }; + function d3_scale_log(linear, base, positive, domain) { + function log(x) { + return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base); + } + function pow(x) { + return positive ? Math.pow(base, x) : -Math.pow(base, -x); + } + function scale(x) { + return linear(log(x)); + } + scale.invert = function(x) { + return pow(linear.invert(x)); + }; + scale.domain = function(x) { + if (!arguments.length) return domain; + positive = x[0] >= 0; + linear.domain((domain = x.map(Number)).map(log)); + return scale; + }; + scale.base = function(_) { + if (!arguments.length) return base; + base = +_; + linear.domain(domain.map(log)); + return scale; + }; + scale.nice = function() { + var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative); + linear.domain(niced); + domain = niced.map(pow); + return scale; + }; + scale.ticks = function() { + var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base; + if (isFinite(j - i)) { + if (positive) { + for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k); + ticks.push(pow(i)); + } else { + ticks.push(pow(i)); + for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k); + } + for (i = 0; ticks[i] < u; i++) {} + for (j = ticks.length; ticks[j - 1] > v; j--) {} + ticks = ticks.slice(i, j); + } + return ticks; + }; + scale.tickFormat = function(n, format) { + if (!arguments.length) return d3_scale_logFormat; + if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== "function") format = d3.format(format); + var k = Math.max(.1, n / scale.ticks().length), f = positive ? (e = 1e-12, Math.ceil) : (e = -1e-12, + Math.floor), e; + return function(d) { + return d / pow(f(log(d) + e)) <= k ? format(d) : ""; + }; + }; + scale.copy = function() { + return d3_scale_log(linear.copy(), base, positive, domain); + }; + return d3_scale_linearRebind(scale, linear); + } + var d3_scale_logFormat = d3.format(".0e"), d3_scale_logNiceNegative = { + floor: function(x) { + return -Math.ceil(-x); + }, + ceil: function(x) { + return -Math.floor(-x); + } + }; + d3.scale.pow = function() { + return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]); + }; + function d3_scale_pow(linear, exponent, domain) { + var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent); + function scale(x) { + return linear(powp(x)); + } + scale.invert = function(x) { + return powb(linear.invert(x)); + }; + scale.domain = function(x) { + if (!arguments.length) return domain; + linear.domain((domain = x.map(Number)).map(powp)); + return scale; + }; + scale.ticks = function(m) { + return d3_scale_linearTicks(domain, m); + }; + scale.tickFormat = function(m, format) { + return d3_scale_linearTickFormat(domain, m, format); + }; + scale.nice = function(m) { + return scale.domain(d3_scale_linearNice(domain, m)); + }; + scale.exponent = function(x) { + if (!arguments.length) return exponent; + powp = d3_scale_powPow(exponent = x); + powb = d3_scale_powPow(1 / exponent); + linear.domain(domain.map(powp)); + return scale; + }; + scale.copy = function() { + return d3_scale_pow(linear.copy(), exponent, domain); + }; + return d3_scale_linearRebind(scale, linear); + } + function d3_scale_powPow(e) { + return function(x) { + return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e); + }; + } + d3.scale.sqrt = function() { + return d3.scale.pow().exponent(.5); + }; + d3.scale.ordinal = function() { + return d3_scale_ordinal([], { + t: "range", + a: [ [] ] + }); + }; + function d3_scale_ordinal(domain, ranger) { + var index, range, rangeBand; + function scale(x) { + return range[((index.get(x) || ranger.t === "range" && index.set(x, domain.push(x))) - 1) % range.length]; + } + function steps(start, step) { + return d3.range(domain.length).map(function(i) { + return start + step * i; + }); + } + scale.domain = function(x) { + if (!arguments.length) return domain; + domain = []; + index = new d3_Map(); + var i = -1, n = x.length, xi; + while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi)); + return scale[ranger.t].apply(scale, ranger.a); + }; + scale.range = function(x) { + if (!arguments.length) return range; + range = x; + rangeBand = 0; + ranger = { + t: "range", + a: arguments + }; + return scale; + }; + scale.rangePoints = function(x, padding) { + if (arguments.length < 2) padding = 0; + var start = x[0], stop = x[1], step = (stop - start) / (Math.max(1, domain.length - 1) + padding); + range = steps(domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, step); + rangeBand = 0; + ranger = { + t: "rangePoints", + a: arguments + }; + return scale; + }; + scale.rangeBands = function(x, padding, outerPadding) { + if (arguments.length < 2) padding = 0; + if (arguments.length < 3) outerPadding = padding; + var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding); + range = steps(start + step * outerPadding, step); + if (reverse) range.reverse(); + rangeBand = step * (1 - padding); + ranger = { + t: "rangeBands", + a: arguments + }; + return scale; + }; + scale.rangeRoundBands = function(x, padding, outerPadding) { + if (arguments.length < 2) padding = 0; + if (arguments.length < 3) outerPadding = padding; + var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding)), error = stop - start - (domain.length - padding) * step; + range = steps(start + Math.round(error / 2), step); + if (reverse) range.reverse(); + rangeBand = Math.round(step * (1 - padding)); + ranger = { + t: "rangeRoundBands", + a: arguments + }; + return scale; + }; + scale.rangeBand = function() { + return rangeBand; + }; + scale.rangeExtent = function() { + return d3_scaleExtent(ranger.a[0]); + }; + scale.copy = function() { + return d3_scale_ordinal(domain, ranger); + }; + return scale.domain(domain); + } + d3.scale.category10 = function() { + return d3.scale.ordinal().range(d3_category10); + }; + d3.scale.category20 = function() { + return d3.scale.ordinal().range(d3_category20); + }; + d3.scale.category20b = function() { + return d3.scale.ordinal().range(d3_category20b); + }; + d3.scale.category20c = function() { + return d3.scale.ordinal().range(d3_category20c); + }; + var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString); + var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString); + var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString); + var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString); + d3.scale.quantile = function() { + return d3_scale_quantile([], []); + }; + function d3_scale_quantile(domain, range) { + var thresholds; + function rescale() { + var k = 0, q = range.length; + thresholds = []; + while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q); + return scale; + } + function scale(x) { + if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)]; + } + scale.domain = function(x) { + if (!arguments.length) return domain; + domain = x.filter(function(d) { + return !isNaN(d); + }).sort(d3.ascending); + return rescale(); + }; + scale.range = function(x) { + if (!arguments.length) return range; + range = x; + return rescale(); + }; + scale.quantiles = function() { + return thresholds; + }; + scale.invertExtent = function(y) { + y = range.indexOf(y); + return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ]; + }; + scale.copy = function() { + return d3_scale_quantile(domain, range); + }; + return rescale(); + } + d3.scale.quantize = function() { + return d3_scale_quantize(0, 1, [ 0, 1 ]); + }; + function d3_scale_quantize(x0, x1, range) { + var kx, i; + function scale(x) { + return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))]; + } + function rescale() { + kx = range.length / (x1 - x0); + i = range.length - 1; + return scale; + } + scale.domain = function(x) { + if (!arguments.length) return [ x0, x1 ]; + x0 = +x[0]; + x1 = +x[x.length - 1]; + return rescale(); + }; + scale.range = function(x) { + if (!arguments.length) return range; + range = x; + return rescale(); + }; + scale.invertExtent = function(y) { + y = range.indexOf(y); + y = y < 0 ? NaN : y / kx + x0; + return [ y, y + 1 / kx ]; + }; + scale.copy = function() { + return d3_scale_quantize(x0, x1, range); + }; + return rescale(); + } + d3.scale.threshold = function() { + return d3_scale_threshold([ .5 ], [ 0, 1 ]); + }; + function d3_scale_threshold(domain, range) { + function scale(x) { + if (x <= x) return range[d3.bisect(domain, x)]; + } + scale.domain = function(_) { + if (!arguments.length) return domain; + domain = _; + return scale; + }; + scale.range = function(_) { + if (!arguments.length) return range; + range = _; + return scale; + }; + scale.invertExtent = function(y) { + y = range.indexOf(y); + return [ domain[y - 1], domain[y] ]; + }; + scale.copy = function() { + return d3_scale_threshold(domain, range); + }; + return scale; + } + d3.scale.identity = function() { + return d3_scale_identity([ 0, 1 ]); + }; + function d3_scale_identity(domain) { + function identity(x) { + return +x; + } + identity.invert = identity; + identity.domain = identity.range = function(x) { + if (!arguments.length) return domain; + domain = x.map(identity); + return identity; + }; + identity.ticks = function(m) { + return d3_scale_linearTicks(domain, m); + }; + identity.tickFormat = function(m, format) { + return d3_scale_linearTickFormat(domain, m, format); + }; + identity.copy = function() { + return d3_scale_identity(domain); + }; + return identity; + } + d3.svg.arc = function() { + var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle; + function arc() { + var r0 = innerRadius.apply(this, arguments), r1 = outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) + d3_svg_arcOffset, a1 = endAngle.apply(this, arguments) + d3_svg_arcOffset, da = (a1 < a0 && (da = a0, + a0 = a1, a1 = da), a1 - a0), df = da < π ? "0" : "1", c0 = Math.cos(a0), s0 = Math.sin(a0), c1 = Math.cos(a1), s1 = Math.sin(a1); + return da >= d3_svg_arcMax ? r0 ? "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "M0," + r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + -r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + r0 + "Z" : "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "Z" : r0 ? "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L" + r0 * c1 + "," + r0 * s1 + "A" + r0 + "," + r0 + " 0 " + df + ",0 " + r0 * c0 + "," + r0 * s0 + "Z" : "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L0,0" + "Z"; + } + arc.innerRadius = function(v) { + if (!arguments.length) return innerRadius; + innerRadius = d3_functor(v); + return arc; + }; + arc.outerRadius = function(v) { + if (!arguments.length) return outerRadius; + outerRadius = d3_functor(v); + return arc; + }; + arc.startAngle = function(v) { + if (!arguments.length) return startAngle; + startAngle = d3_functor(v); + return arc; + }; + arc.endAngle = function(v) { + if (!arguments.length) return endAngle; + endAngle = d3_functor(v); + return arc; + }; + arc.centroid = function() { + var r = (innerRadius.apply(this, arguments) + outerRadius.apply(this, arguments)) / 2, a = (startAngle.apply(this, arguments) + endAngle.apply(this, arguments)) / 2 + d3_svg_arcOffset; + return [ Math.cos(a) * r, Math.sin(a) * r ]; + }; + return arc; + }; + var d3_svg_arcOffset = -halfπ, d3_svg_arcMax = τ - ε; + function d3_svg_arcInnerRadius(d) { + return d.innerRadius; + } + function d3_svg_arcOuterRadius(d) { + return d.outerRadius; + } + function d3_svg_arcStartAngle(d) { + return d.startAngle; + } + function d3_svg_arcEndAngle(d) { + return d.endAngle; + } + d3.svg.line.radial = function() { + var line = d3_svg_line(d3_svg_lineRadial); + line.radius = line.x, delete line.x; + line.angle = line.y, delete line.y; + return line; + }; + function d3_svg_lineRadial(points) { + var point, i = -1, n = points.length, r, a; + while (++i < n) { + point = points[i]; + r = point[0]; + a = point[1] + d3_svg_arcOffset; + point[0] = r * Math.cos(a); + point[1] = r * Math.sin(a); + } + return points; + } + function d3_svg_area(projection) { + var x0 = d3_svg_lineX, x1 = d3_svg_lineX, y0 = 0, y1 = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = "L", tension = .7; + function area(data) { + var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() { + return x; + } : d3_functor(x1), fy1 = y0 === y1 ? function() { + return y; + } : d3_functor(y1), x, y; + function segment() { + segments.push("M", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), "Z"); + } + while (++i < n) { + if (defined.call(this, d = data[i], i)) { + points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]); + points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]); + } else if (points0.length) { + segment(); + points0 = []; + points1 = []; + } + } + if (points0.length) segment(); + return segments.length ? segments.join("") : null; + } + area.x = function(_) { + if (!arguments.length) return x1; + x0 = x1 = _; + return area; + }; + area.x0 = function(_) { + if (!arguments.length) return x0; + x0 = _; + return area; + }; + area.x1 = function(_) { + if (!arguments.length) return x1; + x1 = _; + return area; + }; + area.y = function(_) { + if (!arguments.length) return y1; + y0 = y1 = _; + return area; + }; + area.y0 = function(_) { + if (!arguments.length) return y0; + y0 = _; + return area; + }; + area.y1 = function(_) { + if (!arguments.length) return y1; + y1 = _; + return area; + }; + area.defined = function(_) { + if (!arguments.length) return defined; + defined = _; + return area; + }; + area.interpolate = function(_) { + if (!arguments.length) return interpolateKey; + if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key; + interpolateReverse = interpolate.reverse || interpolate; + L = interpolate.closed ? "M" : "L"; + return area; + }; + area.tension = function(_) { + if (!arguments.length) return tension; + tension = _; + return area; + }; + return area; + } + d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter; + d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore; + d3.svg.area = function() { + return d3_svg_area(d3_identity); + }; + d3.svg.area.radial = function() { + var area = d3_svg_area(d3_svg_lineRadial); + area.radius = area.x, delete area.x; + area.innerRadius = area.x0, delete area.x0; + area.outerRadius = area.x1, delete area.x1; + area.angle = area.y, delete area.y; + area.startAngle = area.y0, delete area.y0; + area.endAngle = area.y1, delete area.y1; + return area; + }; + d3.svg.chord = function() { + var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle; + function chord(d, i) { + var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i); + return "M" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + "Z"; + } + function subgroup(self, f, d, i) { + var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) + d3_svg_arcOffset, a1 = endAngle.call(self, subgroup, i) + d3_svg_arcOffset; + return { + r: r, + a0: a0, + a1: a1, + p0: [ r * Math.cos(a0), r * Math.sin(a0) ], + p1: [ r * Math.cos(a1), r * Math.sin(a1) ] + }; + } + function equals(a, b) { + return a.a0 == b.a0 && a.a1 == b.a1; + } + function arc(r, p, a) { + return "A" + r + "," + r + " 0 " + +(a > π) + ",1 " + p; + } + function curve(r0, p0, r1, p1) { + return "Q 0,0 " + p1; + } + chord.radius = function(v) { + if (!arguments.length) return radius; + radius = d3_functor(v); + return chord; + }; + chord.source = function(v) { + if (!arguments.length) return source; + source = d3_functor(v); + return chord; + }; + chord.target = function(v) { + if (!arguments.length) return target; + target = d3_functor(v); + return chord; + }; + chord.startAngle = function(v) { + if (!arguments.length) return startAngle; + startAngle = d3_functor(v); + return chord; + }; + chord.endAngle = function(v) { + if (!arguments.length) return endAngle; + endAngle = d3_functor(v); + return chord; + }; + return chord; + }; + function d3_svg_chordRadius(d) { + return d.radius; + } + d3.svg.diagonal = function() { + var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection; + function diagonal(d, i) { + var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, { + x: p0.x, + y: m + }, { + x: p3.x, + y: m + }, p3 ]; + p = p.map(projection); + return "M" + p[0] + "C" + p[1] + " " + p[2] + " " + p[3]; + } + diagonal.source = function(x) { + if (!arguments.length) return source; + source = d3_functor(x); + return diagonal; + }; + diagonal.target = function(x) { + if (!arguments.length) return target; + target = d3_functor(x); + return diagonal; + }; + diagonal.projection = function(x) { + if (!arguments.length) return projection; + projection = x; + return diagonal; + }; + return diagonal; + }; + function d3_svg_diagonalProjection(d) { + return [ d.x, d.y ]; + } + d3.svg.diagonal.radial = function() { + var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection; + diagonal.projection = function(x) { + return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection; + }; + return diagonal; + }; + function d3_svg_diagonalRadialProjection(projection) { + return function() { + var d = projection.apply(this, arguments), r = d[0], a = d[1] + d3_svg_arcOffset; + return [ r * Math.cos(a), r * Math.sin(a) ]; + }; + } + d3.svg.symbol = function() { + var type = d3_svg_symbolType, size = d3_svg_symbolSize; + function symbol(d, i) { + return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i)); + } + symbol.type = function(x) { + if (!arguments.length) return type; + type = d3_functor(x); + return symbol; + }; + symbol.size = function(x) { + if (!arguments.length) return size; + size = d3_functor(x); + return symbol; + }; + return symbol; + }; + function d3_svg_symbolSize() { + return 64; + } + function d3_svg_symbolType() { + return "circle"; + } + function d3_svg_symbolCircle(size) { + var r = Math.sqrt(size / π); + return "M0," + r + "A" + r + "," + r + " 0 1,1 0," + -r + "A" + r + "," + r + " 0 1,1 0," + r + "Z"; + } + var d3_svg_symbols = d3.map({ + circle: d3_svg_symbolCircle, + cross: function(size) { + var r = Math.sqrt(size / 5) / 2; + return "M" + -3 * r + "," + -r + "H" + -r + "V" + -3 * r + "H" + r + "V" + -r + "H" + 3 * r + "V" + r + "H" + r + "V" + 3 * r + "H" + -r + "V" + r + "H" + -3 * r + "Z"; + }, + diamond: function(size) { + var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30; + return "M0," + -ry + "L" + rx + ",0" + " 0," + ry + " " + -rx + ",0" + "Z"; + }, + square: function(size) { + var r = Math.sqrt(size) / 2; + return "M" + -r + "," + -r + "L" + r + "," + -r + " " + r + "," + r + " " + -r + "," + r + "Z"; + }, + "triangle-down": function(size) { + var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2; + return "M0," + ry + "L" + rx + "," + -ry + " " + -rx + "," + -ry + "Z"; + }, + "triangle-up": function(size) { + var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2; + return "M0," + -ry + "L" + rx + "," + ry + " " + -rx + "," + ry + "Z"; + } + }); + d3.svg.symbolTypes = d3_svg_symbols.keys(); + var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians); + function d3_transition(groups, id) { + d3_subclass(groups, d3_transitionPrototype); + groups.id = id; + return groups; + } + var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit; + d3_transitionPrototype.call = d3_selectionPrototype.call; + d3_transitionPrototype.empty = d3_selectionPrototype.empty; + d3_transitionPrototype.node = d3_selectionPrototype.node; + d3_transitionPrototype.size = d3_selectionPrototype.size; + d3.transition = function(selection) { + return arguments.length ? d3_transitionInheritId ? selection.transition() : selection : d3_selectionRoot.transition(); + }; + d3.transition.prototype = d3_transitionPrototype; + d3_transitionPrototype.select = function(selector) { + var id = this.id, subgroups = [], subgroup, subnode, node; + selector = d3_selection_selector(selector); + for (var j = -1, m = this.length; ++j < m; ) { + subgroups.push(subgroup = []); + for (var group = this[j], i = -1, n = group.length; ++i < n; ) { + if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) { + if ("__data__" in node) subnode.__data__ = node.__data__; + d3_transitionNode(subnode, i, id, node.__transition__[id]); + subgroup.push(subnode); + } else { + subgroup.push(null); + } + } + } + return d3_transition(subgroups, id); + }; + d3_transitionPrototype.selectAll = function(selector) { + var id = this.id, subgroups = [], subgroup, subnodes, node, subnode, transition; + selector = d3_selection_selectorAll(selector); + for (var j = -1, m = this.length; ++j < m; ) { + for (var group = this[j], i = -1, n = group.length; ++i < n; ) { + if (node = group[i]) { + transition = node.__transition__[id]; + subnodes = selector.call(node, node.__data__, i, j); + subgroups.push(subgroup = []); + for (var k = -1, o = subnodes.length; ++k < o; ) { + if (subnode = subnodes[k]) d3_transitionNode(subnode, k, id, transition); + subgroup.push(subnode); + } + } + } + } + return d3_transition(subgroups, id); + }; + d3_transitionPrototype.filter = function(filter) { + var subgroups = [], subgroup, group, node; + if (typeof filter !== "function") filter = d3_selection_filter(filter); + for (var j = 0, m = this.length; j < m; j++) { + subgroups.push(subgroup = []); + for (var group = this[j], i = 0, n = group.length; i < n; i++) { + if ((node = group[i]) && filter.call(node, node.__data__, i)) { + subgroup.push(node); + } + } + } + return d3_transition(subgroups, this.id); + }; + d3_transitionPrototype.tween = function(name, tween) { + var id = this.id; + if (arguments.length < 2) return this.node().__transition__[id].tween.get(name); + return d3_selection_each(this, tween == null ? function(node) { + node.__transition__[id].tween.remove(name); + } : function(node) { + node.__transition__[id].tween.set(name, tween); + }); + }; + function d3_transition_tween(groups, name, value, tween) { + var id = groups.id; + return d3_selection_each(groups, typeof value === "function" ? function(node, i, j) { + node.__transition__[id].tween.set(name, tween(value.call(node, node.__data__, i, j))); + } : (value = tween(value), function(node) { + node.__transition__[id].tween.set(name, value); + })); + } + d3_transitionPrototype.attr = function(nameNS, value) { + if (arguments.length < 2) { + for (value in nameNS) this.attr(value, nameNS[value]); + return this; + } + var interpolate = nameNS == "transform" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS); + function attrNull() { + this.removeAttribute(name); + } + function attrNullNS() { + this.removeAttributeNS(name.space, name.local); + } + function attrTween(b) { + return b == null ? attrNull : (b += "", function() { + var a = this.getAttribute(name), i; + return a !== b && (i = interpolate(a, b), function(t) { + this.setAttribute(name, i(t)); + }); + }); + } + function attrTweenNS(b) { + return b == null ? attrNullNS : (b += "", function() { + var a = this.getAttributeNS(name.space, name.local), i; + return a !== b && (i = interpolate(a, b), function(t) { + this.setAttributeNS(name.space, name.local, i(t)); + }); + }); + } + return d3_transition_tween(this, "attr." + nameNS, value, name.local ? attrTweenNS : attrTween); + }; + d3_transitionPrototype.attrTween = function(nameNS, tween) { + var name = d3.ns.qualify(nameNS); + function attrTween(d, i) { + var f = tween.call(this, d, i, this.getAttribute(name)); + return f && function(t) { + this.setAttribute(name, f(t)); + }; + } + function attrTweenNS(d, i) { + var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local)); + return f && function(t) { + this.setAttributeNS(name.space, name.local, f(t)); + }; + } + return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween); + }; + d3_transitionPrototype.style = function(name, value, priority) { + var n = arguments.length; + if (n < 3) { + if (typeof name !== "string") { + if (n < 2) value = ""; + for (priority in name) this.style(priority, name[priority], value); + return this; + } + priority = ""; + } + function styleNull() { + this.style.removeProperty(name); + } + function styleString(b) { + return b == null ? styleNull : (b += "", function() { + var a = d3_window.getComputedStyle(this, null).getPropertyValue(name), i; + return a !== b && (i = d3_interpolate(a, b), function(t) { + this.style.setProperty(name, i(t), priority); + }); + }); + } + return d3_transition_tween(this, "style." + name, value, styleString); + }; + d3_transitionPrototype.styleTween = function(name, tween, priority) { + if (arguments.length < 3) priority = ""; + function styleTween(d, i) { + var f = tween.call(this, d, i, d3_window.getComputedStyle(this, null).getPropertyValue(name)); + return f && function(t) { + this.style.setProperty(name, f(t), priority); + }; + } + return this.tween("style." + name, styleTween); + }; + d3_transitionPrototype.text = function(value) { + return d3_transition_tween(this, "text", value, d3_transition_text); + }; + function d3_transition_text(b) { + if (b == null) b = ""; + return function() { + this.textContent = b; + }; + } + d3_transitionPrototype.remove = function() { + return this.each("end.transition", function() { + var p; + if (this.__transition__.count < 2 && (p = this.parentNode)) p.removeChild(this); + }); + }; + d3_transitionPrototype.ease = function(value) { + var id = this.id; + if (arguments.length < 1) return this.node().__transition__[id].ease; + if (typeof value !== "function") value = d3.ease.apply(d3, arguments); + return d3_selection_each(this, function(node) { + node.__transition__[id].ease = value; + }); + }; + d3_transitionPrototype.delay = function(value) { + var id = this.id; + return d3_selection_each(this, typeof value === "function" ? function(node, i, j) { + node.__transition__[id].delay = +value.call(node, node.__data__, i, j); + } : (value = +value, function(node) { + node.__transition__[id].delay = value; + })); + }; + d3_transitionPrototype.duration = function(value) { + var id = this.id; + return d3_selection_each(this, typeof value === "function" ? function(node, i, j) { + node.__transition__[id].duration = Math.max(1, value.call(node, node.__data__, i, j)); + } : (value = Math.max(1, value), function(node) { + node.__transition__[id].duration = value; + })); + }; + d3_transitionPrototype.each = function(type, listener) { + var id = this.id; + if (arguments.length < 2) { + var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId; + d3_transitionInheritId = id; + d3_selection_each(this, function(node, i, j) { + d3_transitionInherit = node.__transition__[id]; + type.call(node, node.__data__, i, j); + }); + d3_transitionInherit = inherit; + d3_transitionInheritId = inheritId; + } else { + d3_selection_each(this, function(node) { + var transition = node.__transition__[id]; + (transition.event || (transition.event = d3.dispatch("start", "end"))).on(type, listener); + }); + } + return this; + }; + d3_transitionPrototype.transition = function() { + var id0 = this.id, id1 = ++d3_transitionId, subgroups = [], subgroup, group, node, transition; + for (var j = 0, m = this.length; j < m; j++) { + subgroups.push(subgroup = []); + for (var group = this[j], i = 0, n = group.length; i < n; i++) { + if (node = group[i]) { + transition = Object.create(node.__transition__[id0]); + transition.delay += transition.duration; + d3_transitionNode(node, i, id1, transition); + } + subgroup.push(node); + } + } + return d3_transition(subgroups, id1); + }; + function d3_transitionNode(node, i, id, inherit) { + var lock = node.__transition__ || (node.__transition__ = { + active: 0, + count: 0 + }), transition = lock[id]; + if (!transition) { + var time = inherit.time; + transition = lock[id] = { + tween: new d3_Map(), + time: time, + ease: inherit.ease, + delay: inherit.delay, + duration: inherit.duration + }; + ++lock.count; + d3.timer(function(elapsed) { + var d = node.__data__, ease = transition.ease, delay = transition.delay, duration = transition.duration, tweened = []; + if (delay <= elapsed) return start(elapsed - delay); + d3_timer_replace(start, delay, time); + function start(elapsed) { + if (lock.active > id) return stop(); + lock.active = id; + transition.event && transition.event.start.call(node, d, i); + transition.tween.forEach(function(key, value) { + if (value = value.call(node, d, i)) { + tweened.push(value); + } + }); + if (tick(elapsed || 1)) return 1; + d3_timer_replace(tick, delay, time); + } + function tick(elapsed) { + if (lock.active !== id) return stop(); + var t = elapsed / duration, e = ease(t), n = tweened.length; + while (n > 0) { + tweened[--n].call(node, e); + } + if (t >= 1) { + transition.event && transition.event.end.call(node, d, i); + return stop(); + } + } + function stop() { + if (--lock.count) delete lock[id]; else delete node.__transition__; + return 1; + } + }, 0, time); + } + } + d3.svg.axis = function() { + var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_; + function axis(g) { + g.each(function() { + var g = d3.select(this); + var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy(); + var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(".tick").data(ticks, scale1), tickEnter = tick.enter().insert("g", ".domain").attr("class", "tick").style("opacity", ε), tickExit = d3.transition(tick.exit()).style("opacity", ε).remove(), tickUpdate = d3.transition(tick).style("opacity", 1), tickTransform; + var range = d3_scaleRange(scale1), path = g.selectAll(".domain").data([ 0 ]), pathUpdate = (path.enter().append("path").attr("class", "domain"), + d3.transition(path)); + tickEnter.append("line"); + tickEnter.append("text"); + var lineEnter = tickEnter.select("line"), lineUpdate = tickUpdate.select("line"), text = tick.select("text").text(tickFormat), textEnter = tickEnter.select("text"), textUpdate = tickUpdate.select("text"); + switch (orient) { + case "bottom": + { + tickTransform = d3_svg_axisX; + lineEnter.attr("y2", innerTickSize); + textEnter.attr("y", Math.max(innerTickSize, 0) + tickPadding); + lineUpdate.attr("x2", 0).attr("y2", innerTickSize); + textUpdate.attr("x", 0).attr("y", Math.max(innerTickSize, 0) + tickPadding); + text.attr("dy", ".71em").style("text-anchor", "middle"); + pathUpdate.attr("d", "M" + range[0] + "," + outerTickSize + "V0H" + range[1] + "V" + outerTickSize); + break; + } + + case "top": + { + tickTransform = d3_svg_axisX; + lineEnter.attr("y2", -innerTickSize); + textEnter.attr("y", -(Math.max(innerTickSize, 0) + tickPadding)); + lineUpdate.attr("x2", 0).attr("y2", -innerTickSize); + textUpdate.attr("x", 0).attr("y", -(Math.max(innerTickSize, 0) + tickPadding)); + text.attr("dy", "0em").style("text-anchor", "middle"); + pathUpdate.attr("d", "M" + range[0] + "," + -outerTickSize + "V0H" + range[1] + "V" + -outerTickSize); + break; + } + + case "left": + { + tickTransform = d3_svg_axisY; + lineEnter.attr("x2", -innerTickSize); + textEnter.attr("x", -(Math.max(innerTickSize, 0) + tickPadding)); + lineUpdate.attr("x2", -innerTickSize).attr("y2", 0); + textUpdate.attr("x", -(Math.max(innerTickSize, 0) + tickPadding)).attr("y", 0); + text.attr("dy", ".32em").style("text-anchor", "end"); + pathUpdate.attr("d", "M" + -outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + -outerTickSize); + break; + } + + case "right": + { + tickTransform = d3_svg_axisY; + lineEnter.attr("x2", innerTickSize); + textEnter.attr("x", Math.max(innerTickSize, 0) + tickPadding); + lineUpdate.attr("x2", innerTickSize).attr("y2", 0); + textUpdate.attr("x", Math.max(innerTickSize, 0) + tickPadding).attr("y", 0); + text.attr("dy", ".32em").style("text-anchor", "start"); + pathUpdate.attr("d", "M" + outerTickSize + "," + range[0] + "H0V" + range[1] + "H" + outerTickSize); + break; + } + } + if (scale1.rangeBand) { + var dx = scale1.rangeBand() / 2, x = function(d) { + return scale1(d) + dx; + }; + tickEnter.call(tickTransform, x); + tickUpdate.call(tickTransform, x); + } else { + tickEnter.call(tickTransform, scale0); + tickUpdate.call(tickTransform, scale1); + tickExit.call(tickTransform, scale1); + } + }); + } + axis.scale = function(x) { + if (!arguments.length) return scale; + scale = x; + return axis; + }; + axis.orient = function(x) { + if (!arguments.length) return orient; + orient = x in d3_svg_axisOrients ? x + "" : d3_svg_axisDefaultOrient; + return axis; + }; + axis.ticks = function() { + if (!arguments.length) return tickArguments_; + tickArguments_ = arguments; + return axis; + }; + axis.tickValues = function(x) { + if (!arguments.length) return tickValues; + tickValues = x; + return axis; + }; + axis.tickFormat = function(x) { + if (!arguments.length) return tickFormat_; + tickFormat_ = x; + return axis; + }; + axis.tickSize = function(x) { + var n = arguments.length; + if (!n) return innerTickSize; + innerTickSize = +x; + outerTickSize = +arguments[n - 1]; + return axis; + }; + axis.innerTickSize = function(x) { + if (!arguments.length) return innerTickSize; + innerTickSize = +x; + return axis; + }; + axis.outerTickSize = function(x) { + if (!arguments.length) return outerTickSize; + outerTickSize = +x; + return axis; + }; + axis.tickPadding = function(x) { + if (!arguments.length) return tickPadding; + tickPadding = +x; + return axis; + }; + axis.tickSubdivide = function() { + return arguments.length && axis; + }; + return axis; + }; + var d3_svg_axisDefaultOrient = "bottom", d3_svg_axisOrients = { + top: 1, + right: 1, + bottom: 1, + left: 1 + }; + function d3_svg_axisX(selection, x) { + selection.attr("transform", function(d) { + return "translate(" + x(d) + ",0)"; + }); + } + function d3_svg_axisY(selection, y) { + selection.attr("transform", function(d) { + return "translate(0," + y(d) + ")"; + }); + } + d3.svg.brush = function() { + var event = d3_eventDispatch(brush, "brushstart", "brush", "brushend"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0]; + function brush(g) { + g.each(function() { + var g = d3.select(this).style("pointer-events", "all").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)").on("mousedown.brush", brushstart).on("touchstart.brush", brushstart); + var background = g.selectAll(".background").data([ 0 ]); + background.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair"); + g.selectAll(".extent").data([ 0 ]).enter().append("rect").attr("class", "extent").style("cursor", "move"); + var resize = g.selectAll(".resize").data(resizes, d3_identity); + resize.exit().remove(); + resize.enter().append("g").attr("class", function(d) { + return "resize " + d; + }).style("cursor", function(d) { + return d3_svg_brushCursor[d]; + }).append("rect").attr("x", function(d) { + return /[ew]$/.test(d) ? -3 : null; + }).attr("y", function(d) { + return /^[ns]/.test(d) ? -3 : null; + }).attr("width", 6).attr("height", 6).style("visibility", "hidden"); + resize.style("display", brush.empty() ? "none" : null); + var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range; + if (x) { + range = d3_scaleRange(x); + backgroundUpdate.attr("x", range[0]).attr("width", range[1] - range[0]); + redrawX(gUpdate); + } + if (y) { + range = d3_scaleRange(y); + backgroundUpdate.attr("y", range[0]).attr("height", range[1] - range[0]); + redrawY(gUpdate); + } + redraw(gUpdate); + }); + } + brush.event = function(g) { + g.each(function() { + var event_ = event.of(this, arguments), extent1 = { + x: xExtent, + y: yExtent, + i: xExtentDomain, + j: yExtentDomain + }, extent0 = this.__chart__ || extent1; + this.__chart__ = extent1; + if (d3_transitionInheritId) { + d3.select(this).transition().each("start.brush", function() { + xExtentDomain = extent0.i; + yExtentDomain = extent0.j; + xExtent = extent0.x; + yExtent = extent0.y; + event_({ + type: "brushstart" + }); + }).tween("brush:brush", function() { + var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y); + xExtentDomain = yExtentDomain = null; + return function(t) { + xExtent = extent1.x = xi(t); + yExtent = extent1.y = yi(t); + event_({ + type: "brush", + mode: "resize" + }); + }; + }).each("end.brush", function() { + xExtentDomain = extent1.i; + yExtentDomain = extent1.j; + event_({ + type: "brush", + mode: "resize" + }); + event_({ + type: "brushend" + }); + }); + } else { + event_({ + type: "brushstart" + }); + event_({ + type: "brush", + mode: "resize" + }); + event_({ + type: "brushend" + }); + } + }); + }; + function redraw(g) { + g.selectAll(".resize").attr("transform", function(d) { + return "translate(" + xExtent[+/e$/.test(d)] + "," + yExtent[+/^s/.test(d)] + ")"; + }); + } + function redrawX(g) { + g.select(".extent").attr("x", xExtent[0]); + g.selectAll(".extent,.n>rect,.s>rect").attr("width", xExtent[1] - xExtent[0]); + } + function redrawY(g) { + g.select(".extent").attr("y", yExtent[0]); + g.selectAll(".extent,.e>rect,.w>rect").attr("height", yExtent[1] - yExtent[0]); + } + function brushstart() { + var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed("extent"), dragRestore = d3_event_dragSuppress(), center, origin = d3.mouse(target), offset; + var w = d3.select(d3_window).on("keydown.brush", keydown).on("keyup.brush", keyup); + if (d3.event.changedTouches) { + w.on("touchmove.brush", brushmove).on("touchend.brush", brushend); + } else { + w.on("mousemove.brush", brushmove).on("mouseup.brush", brushend); + } + g.interrupt().selectAll("*").interrupt(); + if (dragging) { + origin[0] = xExtent[0] - origin[0]; + origin[1] = yExtent[0] - origin[1]; + } else if (resizing) { + var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing); + offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ]; + origin[0] = xExtent[ex]; + origin[1] = yExtent[ey]; + } else if (d3.event.altKey) center = origin.slice(); + g.style("pointer-events", "none").selectAll(".resize").style("display", null); + d3.select("body").style("cursor", eventTarget.style("cursor")); + event_({ + type: "brushstart" + }); + brushmove(); + function keydown() { + if (d3.event.keyCode == 32) { + if (!dragging) { + center = null; + origin[0] -= xExtent[1]; + origin[1] -= yExtent[1]; + dragging = 2; + } + d3_eventPreventDefault(); + } + } + function keyup() { + if (d3.event.keyCode == 32 && dragging == 2) { + origin[0] += xExtent[1]; + origin[1] += yExtent[1]; + dragging = 0; + d3_eventPreventDefault(); + } + } + function brushmove() { + var point = d3.mouse(target), moved = false; + if (offset) { + point[0] += offset[0]; + point[1] += offset[1]; + } + if (!dragging) { + if (d3.event.altKey) { + if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ]; + origin[0] = xExtent[+(point[0] < center[0])]; + origin[1] = yExtent[+(point[1] < center[1])]; + } else center = null; + } + if (resizingX && move1(point, x, 0)) { + redrawX(g); + moved = true; + } + if (resizingY && move1(point, y, 1)) { + redrawY(g); + moved = true; + } + if (moved) { + redraw(g); + event_({ + type: "brush", + mode: dragging ? "move" : "resize" + }); + } + } + function move1(point, scale, i) { + var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max; + if (dragging) { + r0 -= position; + r1 -= size + position; + } + min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i]; + if (dragging) { + max = (min += position) + size; + } else { + if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min)); + if (position < min) { + max = min; + min = position; + } else { + max = position; + } + } + if (extent[0] != min || extent[1] != max) { + if (i) yExtentDomain = null; else xExtentDomain = null; + extent[0] = min; + extent[1] = max; + return true; + } + } + function brushend() { + brushmove(); + g.style("pointer-events", "all").selectAll(".resize").style("display", brush.empty() ? "none" : null); + d3.select("body").style("cursor", null); + w.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null); + dragRestore(); + event_({ + type: "brushend" + }); + } + } + brush.x = function(z) { + if (!arguments.length) return x; + x = z; + resizes = d3_svg_brushResizes[!x << 1 | !y]; + return brush; + }; + brush.y = function(z) { + if (!arguments.length) return y; + y = z; + resizes = d3_svg_brushResizes[!x << 1 | !y]; + return brush; + }; + brush.clamp = function(z) { + if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null; + if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z; + return brush; + }; + brush.extent = function(z) { + var x0, x1, y0, y1, t; + if (!arguments.length) { + if (x) { + if (xExtentDomain) { + x0 = xExtentDomain[0], x1 = xExtentDomain[1]; + } else { + x0 = xExtent[0], x1 = xExtent[1]; + if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1); + if (x1 < x0) t = x0, x0 = x1, x1 = t; + } + } + if (y) { + if (yExtentDomain) { + y0 = yExtentDomain[0], y1 = yExtentDomain[1]; + } else { + y0 = yExtent[0], y1 = yExtent[1]; + if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1); + if (y1 < y0) t = y0, y0 = y1, y1 = t; + } + } + return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ]; + } + if (x) { + x0 = z[0], x1 = z[1]; + if (y) x0 = x0[0], x1 = x1[0]; + xExtentDomain = [ x0, x1 ]; + if (x.invert) x0 = x(x0), x1 = x(x1); + if (x1 < x0) t = x0, x0 = x1, x1 = t; + if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ]; + } + if (y) { + y0 = z[0], y1 = z[1]; + if (x) y0 = y0[1], y1 = y1[1]; + yExtentDomain = [ y0, y1 ]; + if (y.invert) y0 = y(y0), y1 = y(y1); + if (y1 < y0) t = y0, y0 = y1, y1 = t; + if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ]; + } + return brush; + }; + brush.clear = function() { + if (!brush.empty()) { + xExtent = [ 0, 0 ], yExtent = [ 0, 0 ]; + xExtentDomain = yExtentDomain = null; + } + return brush; + }; + brush.empty = function() { + return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1]; + }; + return d3.rebind(brush, event, "on"); + }; + var d3_svg_brushCursor = { + n: "ns-resize", + e: "ew-resize", + s: "ns-resize", + w: "ew-resize", + nw: "nwse-resize", + ne: "nesw-resize", + se: "nwse-resize", + sw: "nesw-resize" + }; + var d3_svg_brushResizes = [ [ "n", "e", "s", "w", "nw", "ne", "se", "sw" ], [ "e", "w" ], [ "n", "s" ], [] ]; + var d3_time = d3.time = {}, d3_date = Date, d3_time_daySymbols = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]; + function d3_date_utc() { + this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]); + } + d3_date_utc.prototype = { + getDate: function() { + return this._.getUTCDate(); + }, + getDay: function() { + return this._.getUTCDay(); + }, + getFullYear: function() { + return this._.getUTCFullYear(); + }, + getHours: function() { + return this._.getUTCHours(); + }, + getMilliseconds: function() { + return this._.getUTCMilliseconds(); + }, + getMinutes: function() { + return this._.getUTCMinutes(); + }, + getMonth: function() { + return this._.getUTCMonth(); + }, + getSeconds: function() { + return this._.getUTCSeconds(); + }, + getTime: function() { + return this._.getTime(); + }, + getTimezoneOffset: function() { + return 0; + }, + valueOf: function() { + return this._.valueOf(); + }, + setDate: function() { + d3_time_prototype.setUTCDate.apply(this._, arguments); + }, + setDay: function() { + d3_time_prototype.setUTCDay.apply(this._, arguments); + }, + setFullYear: function() { + d3_time_prototype.setUTCFullYear.apply(this._, arguments); + }, + setHours: function() { + d3_time_prototype.setUTCHours.apply(this._, arguments); + }, + setMilliseconds: function() { + d3_time_prototype.setUTCMilliseconds.apply(this._, arguments); + }, + setMinutes: function() { + d3_time_prototype.setUTCMinutes.apply(this._, arguments); + }, + setMonth: function() { + d3_time_prototype.setUTCMonth.apply(this._, arguments); + }, + setSeconds: function() { + d3_time_prototype.setUTCSeconds.apply(this._, arguments); + }, + setTime: function() { + d3_time_prototype.setTime.apply(this._, arguments); + } + }; + var d3_time_prototype = Date.prototype; + var d3_time_formatDateTime = "%a %b %e %X %Y", d3_time_formatDate = "%m/%d/%Y", d3_time_formatTime = "%H:%M:%S"; + var d3_time_days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], d3_time_dayAbbreviations = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], d3_time_months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], d3_time_monthAbbreviations = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]; + function d3_time_interval(local, step, number) { + function round(date) { + var d0 = local(date), d1 = offset(d0, 1); + return date - d0 < d1 - date ? d0 : d1; + } + function ceil(date) { + step(date = local(new d3_date(date - 1)), 1); + return date; + } + function offset(date, k) { + step(date = new d3_date(+date), k); + return date; + } + function range(t0, t1, dt) { + var time = ceil(t0), times = []; + if (dt > 1) { + while (time < t1) { + if (!(number(time) % dt)) times.push(new Date(+time)); + step(time, 1); + } + } else { + while (time < t1) times.push(new Date(+time)), step(time, 1); + } + return times; + } + function range_utc(t0, t1, dt) { + try { + d3_date = d3_date_utc; + var utc = new d3_date_utc(); + utc._ = t0; + return range(utc, t1, dt); + } finally { + d3_date = Date; + } + } + local.floor = local; + local.round = round; + local.ceil = ceil; + local.offset = offset; + local.range = range; + var utc = local.utc = d3_time_interval_utc(local); + utc.floor = utc; + utc.round = d3_time_interval_utc(round); + utc.ceil = d3_time_interval_utc(ceil); + utc.offset = d3_time_interval_utc(offset); + utc.range = range_utc; + return local; + } + function d3_time_interval_utc(method) { + return function(date, k) { + try { + d3_date = d3_date_utc; + var utc = new d3_date_utc(); + utc._ = date; + return method(utc, k)._; + } finally { + d3_date = Date; + } + }; + } + d3_time.year = d3_time_interval(function(date) { + date = d3_time.day(date); + date.setMonth(0, 1); + return date; + }, function(date, offset) { + date.setFullYear(date.getFullYear() + offset); + }, function(date) { + return date.getFullYear(); + }); + d3_time.years = d3_time.year.range; + d3_time.years.utc = d3_time.year.utc.range; + d3_time.day = d3_time_interval(function(date) { + var day = new d3_date(2e3, 0); + day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate()); + return day; + }, function(date, offset) { + date.setDate(date.getDate() + offset); + }, function(date) { + return date.getDate() - 1; + }); + d3_time.days = d3_time.day.range; + d3_time.days.utc = d3_time.day.utc.range; + d3_time.dayOfYear = function(date) { + var year = d3_time.year(date); + return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5); + }; + d3_time_daySymbols.forEach(function(day, i) { + day = day.toLowerCase(); + i = 7 - i; + var interval = d3_time[day] = d3_time_interval(function(date) { + (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7); + return date; + }, function(date, offset) { + date.setDate(date.getDate() + Math.floor(offset) * 7); + }, function(date) { + var day = d3_time.year(date).getDay(); + return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i); + }); + d3_time[day + "s"] = interval.range; + d3_time[day + "s"].utc = interval.utc.range; + d3_time[day + "OfYear"] = function(date) { + var day = d3_time.year(date).getDay(); + return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7); + }; + }); + d3_time.week = d3_time.sunday; + d3_time.weeks = d3_time.sunday.range; + d3_time.weeks.utc = d3_time.sunday.utc.range; + d3_time.weekOfYear = d3_time.sundayOfYear; + d3_time.format = d3_time_format; + function d3_time_format(template) { + var n = template.length; + function format(date) { + var string = [], i = -1, j = 0, c, p, f; + while (++i < n) { + if (template.charCodeAt(i) === 37) { + string.push(template.substring(j, i)); + if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i); + if (f = d3_time_formats[c]) c = f(date, p == null ? c === "e" ? " " : "0" : p); + string.push(c); + j = i + 1; + } + } + string.push(template.substring(j, i)); + return string.join(""); + } + format.parse = function(string) { + var d = { + y: 1900, + m: 0, + d: 1, + H: 0, + M: 0, + S: 0, + L: 0, + Z: null + }, i = d3_time_parse(d, template, string, 0); + if (i != string.length) return null; + if ("p" in d) d.H = d.H % 12 + d.p * 12; + var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)(); + if ("j" in d) date.setFullYear(d.y, 0, d.j); else if ("w" in d && ("W" in d || "U" in d)) { + date.setFullYear(d.y, 0, 1); + date.setFullYear(d.y, 0, "W" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7); + } else date.setFullYear(d.y, d.m, d.d); + date.setHours(d.H + Math.floor(d.Z / 100), d.M + d.Z % 100, d.S, d.L); + return localZ ? date._ : date; + }; + format.toString = function() { + return template; + }; + return format; + } + function d3_time_parse(date, template, string, j) { + var c, p, t, i = 0, n = template.length, m = string.length; + while (i < n) { + if (j >= m) return -1; + c = template.charCodeAt(i++); + if (c === 37) { + t = template.charAt(i++); + p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t]; + if (!p || (j = p(date, string, j)) < 0) return -1; + } else if (c != string.charCodeAt(j++)) { + return -1; + } + } + return j; + } + function d3_time_formatRe(names) { + return new RegExp("^(?:" + names.map(d3.requote).join("|") + ")", "i"); + } + function d3_time_formatLookup(names) { + var map = new d3_Map(), i = -1, n = names.length; + while (++i < n) map.set(names[i].toLowerCase(), i); + return map; + } + function d3_time_formatPad(value, fill, width) { + var sign = value < 0 ? "-" : "", string = (sign ? -value : value) + "", length = string.length; + return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string); + } + var d3_time_dayRe = d3_time_formatRe(d3_time_days), d3_time_dayLookup = d3_time_formatLookup(d3_time_days), d3_time_dayAbbrevRe = d3_time_formatRe(d3_time_dayAbbreviations), d3_time_dayAbbrevLookup = d3_time_formatLookup(d3_time_dayAbbreviations), d3_time_monthRe = d3_time_formatRe(d3_time_months), d3_time_monthLookup = d3_time_formatLookup(d3_time_months), d3_time_monthAbbrevRe = d3_time_formatRe(d3_time_monthAbbreviations), d3_time_monthAbbrevLookup = d3_time_formatLookup(d3_time_monthAbbreviations), d3_time_percentRe = /^%/; + var d3_time_formatPads = { + "-": "", + _: " ", + "0": "0" + }; + var d3_time_formats = { + a: function(d) { + return d3_time_dayAbbreviations[d.getDay()]; + }, + A: function(d) { + return d3_time_days[d.getDay()]; + }, + b: function(d) { + return d3_time_monthAbbreviations[d.getMonth()]; + }, + B: function(d) { + return d3_time_months[d.getMonth()]; + }, + c: d3_time_format(d3_time_formatDateTime), + d: function(d, p) { + return d3_time_formatPad(d.getDate(), p, 2); + }, + e: function(d, p) { + return d3_time_formatPad(d.getDate(), p, 2); + }, + H: function(d, p) { + return d3_time_formatPad(d.getHours(), p, 2); + }, + I: function(d, p) { + return d3_time_formatPad(d.getHours() % 12 || 12, p, 2); + }, + j: function(d, p) { + return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3); + }, + L: function(d, p) { + return d3_time_formatPad(d.getMilliseconds(), p, 3); + }, + m: function(d, p) { + return d3_time_formatPad(d.getMonth() + 1, p, 2); + }, + M: function(d, p) { + return d3_time_formatPad(d.getMinutes(), p, 2); + }, + p: function(d) { + return d.getHours() >= 12 ? "PM" : "AM"; + }, + S: function(d, p) { + return d3_time_formatPad(d.getSeconds(), p, 2); + }, + U: function(d, p) { + return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2); + }, + w: function(d) { + return d.getDay(); + }, + W: function(d, p) { + return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2); + }, + x: d3_time_format(d3_time_formatDate), + X: d3_time_format(d3_time_formatTime), + y: function(d, p) { + return d3_time_formatPad(d.getFullYear() % 100, p, 2); + }, + Y: function(d, p) { + return d3_time_formatPad(d.getFullYear() % 1e4, p, 4); + }, + Z: d3_time_zone, + "%": function() { + return "%"; + } + }; + var d3_time_parsers = { + a: d3_time_parseWeekdayAbbrev, + A: d3_time_parseWeekday, + b: d3_time_parseMonthAbbrev, + B: d3_time_parseMonth, + c: d3_time_parseLocaleFull, + d: d3_time_parseDay, + e: d3_time_parseDay, + H: d3_time_parseHour24, + I: d3_time_parseHour24, + j: d3_time_parseDayOfYear, + L: d3_time_parseMilliseconds, + m: d3_time_parseMonthNumber, + M: d3_time_parseMinutes, + p: d3_time_parseAmPm, + S: d3_time_parseSeconds, + U: d3_time_parseWeekNumberSunday, + w: d3_time_parseWeekdayNumber, + W: d3_time_parseWeekNumberMonday, + x: d3_time_parseLocaleDate, + X: d3_time_parseLocaleTime, + y: d3_time_parseYear, + Y: d3_time_parseFullYear, + Z: d3_time_parseZone, + "%": d3_time_parseLiteralPercent + }; + function d3_time_parseWeekdayAbbrev(date, string, i) { + d3_time_dayAbbrevRe.lastIndex = 0; + var n = d3_time_dayAbbrevRe.exec(string.substring(i)); + return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function d3_time_parseWeekday(date, string, i) { + d3_time_dayRe.lastIndex = 0; + var n = d3_time_dayRe.exec(string.substring(i)); + return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function d3_time_parseWeekdayNumber(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 1)); + return n ? (date.w = +n[0], i + n[0].length) : -1; + } + function d3_time_parseWeekNumberSunday(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i)); + return n ? (date.U = +n[0], i + n[0].length) : -1; + } + function d3_time_parseWeekNumberMonday(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i)); + return n ? (date.W = +n[0], i + n[0].length) : -1; + } + function d3_time_parseMonthAbbrev(date, string, i) { + d3_time_monthAbbrevRe.lastIndex = 0; + var n = d3_time_monthAbbrevRe.exec(string.substring(i)); + return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function d3_time_parseMonth(date, string, i) { + d3_time_monthRe.lastIndex = 0; + var n = d3_time_monthRe.exec(string.substring(i)); + return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; + } + function d3_time_parseLocaleFull(date, string, i) { + return d3_time_parse(date, d3_time_formats.c.toString(), string, i); + } + function d3_time_parseLocaleDate(date, string, i) { + return d3_time_parse(date, d3_time_formats.x.toString(), string, i); + } + function d3_time_parseLocaleTime(date, string, i) { + return d3_time_parse(date, d3_time_formats.X.toString(), string, i); + } + function d3_time_parseFullYear(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 4)); + return n ? (date.y = +n[0], i + n[0].length) : -1; + } + function d3_time_parseYear(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1; + } + function d3_time_parseZone(date, string, i) { + return /^[+-]\d{4}$/.test(string = string.substring(i, i + 5)) ? (date.Z = +string, + i + 5) : -1; + } + function d3_time_expandYear(d) { + return d + (d > 68 ? 1900 : 2e3); + } + function d3_time_parseMonthNumber(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + return n ? (date.m = n[0] - 1, i + n[0].length) : -1; + } + function d3_time_parseDay(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + return n ? (date.d = +n[0], i + n[0].length) : -1; + } + function d3_time_parseDayOfYear(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 3)); + return n ? (date.j = +n[0], i + n[0].length) : -1; + } + function d3_time_parseHour24(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + return n ? (date.H = +n[0], i + n[0].length) : -1; + } + function d3_time_parseMinutes(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + return n ? (date.M = +n[0], i + n[0].length) : -1; + } + function d3_time_parseSeconds(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + return n ? (date.S = +n[0], i + n[0].length) : -1; + } + function d3_time_parseMilliseconds(date, string, i) { + d3_time_numberRe.lastIndex = 0; + var n = d3_time_numberRe.exec(string.substring(i, i + 3)); + return n ? (date.L = +n[0], i + n[0].length) : -1; + } + var d3_time_numberRe = /^\s*\d+/; + function d3_time_parseAmPm(date, string, i) { + var n = d3_time_amPmLookup.get(string.substring(i, i += 2).toLowerCase()); + return n == null ? -1 : (date.p = n, i); + } + var d3_time_amPmLookup = d3.map({ + am: 0, + pm: 1 + }); + function d3_time_zone(d) { + var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = ~~(Math.abs(z) / 60), zm = Math.abs(z) % 60; + return zs + d3_time_formatPad(zh, "0", 2) + d3_time_formatPad(zm, "0", 2); + } + function d3_time_parseLiteralPercent(date, string, i) { + d3_time_percentRe.lastIndex = 0; + var n = d3_time_percentRe.exec(string.substring(i, i + 1)); + return n ? i + n[0].length : -1; + } + d3_time_format.utc = d3_time_formatUtc; + function d3_time_formatUtc(template) { + var local = d3_time_format(template); + function format(date) { + try { + d3_date = d3_date_utc; + var utc = new d3_date(); + utc._ = date; + return local(utc); + } finally { + d3_date = Date; + } + } + format.parse = function(string) { + try { + d3_date = d3_date_utc; + var date = local.parse(string); + return date && date._; + } finally { + d3_date = Date; + } + }; + format.toString = local.toString; + return format; + } + var d3_time_formatIso = d3_time_formatUtc("%Y-%m-%dT%H:%M:%S.%LZ"); + d3_time_format.iso = Date.prototype.toISOString && +new Date("2000-01-01T00:00:00.000Z") ? d3_time_formatIsoNative : d3_time_formatIso; + function d3_time_formatIsoNative(date) { + return date.toISOString(); + } + d3_time_formatIsoNative.parse = function(string) { + var date = new Date(string); + return isNaN(date) ? null : date; + }; + d3_time_formatIsoNative.toString = d3_time_formatIso.toString; + d3_time.second = d3_time_interval(function(date) { + return new d3_date(Math.floor(date / 1e3) * 1e3); + }, function(date, offset) { + date.setTime(date.getTime() + Math.floor(offset) * 1e3); + }, function(date) { + return date.getSeconds(); + }); + d3_time.seconds = d3_time.second.range; + d3_time.seconds.utc = d3_time.second.utc.range; + d3_time.minute = d3_time_interval(function(date) { + return new d3_date(Math.floor(date / 6e4) * 6e4); + }, function(date, offset) { + date.setTime(date.getTime() + Math.floor(offset) * 6e4); + }, function(date) { + return date.getMinutes(); + }); + d3_time.minutes = d3_time.minute.range; + d3_time.minutes.utc = d3_time.minute.utc.range; + d3_time.hour = d3_time_interval(function(date) { + var timezone = date.getTimezoneOffset() / 60; + return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5); + }, function(date, offset) { + date.setTime(date.getTime() + Math.floor(offset) * 36e5); + }, function(date) { + return date.getHours(); + }); + d3_time.hours = d3_time.hour.range; + d3_time.hours.utc = d3_time.hour.utc.range; + d3_time.month = d3_time_interval(function(date) { + date = d3_time.day(date); + date.setDate(1); + return date; + }, function(date, offset) { + date.setMonth(date.getMonth() + offset); + }, function(date) { + return date.getMonth(); + }); + d3_time.months = d3_time.month.range; + d3_time.months.utc = d3_time.month.utc.range; + function d3_time_scale(linear, methods, format) { + function scale(x) { + return linear(x); + } + scale.invert = function(x) { + return d3_time_scaleDate(linear.invert(x)); + }; + scale.domain = function(x) { + if (!arguments.length) return linear.domain().map(d3_time_scaleDate); + linear.domain(x); + return scale; + }; + function tickMethod(extent, count) { + var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target); + return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) { + return d / 31536e6; + }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i]; + } + scale.nice = function(interval, skip) { + var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === "number" && tickMethod(extent, interval); + if (method) interval = method[0], skip = method[1]; + function skipped(date) { + return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length; + } + return scale.domain(d3_scale_nice(domain, skip > 1 ? { + floor: function(date) { + while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1); + return date; + }, + ceil: function(date) { + while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1); + return date; + } + } : interval)); + }; + scale.ticks = function(interval, skip) { + var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === "number" ? tickMethod(extent, interval) : !interval.range && [ { + range: interval + }, skip ]; + if (method) interval = method[0], skip = method[1]; + return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip); + }; + scale.tickFormat = function() { + return format; + }; + scale.copy = function() { + return d3_time_scale(linear.copy(), methods, format); + }; + return d3_scale_linearRebind(scale, linear); + } + function d3_time_scaleDate(t) { + return new Date(t); + } + function d3_time_scaleFormat(formats) { + return function(date) { + var i = formats.length - 1, f = formats[i]; + while (!f[1](date)) f = formats[--i]; + return f[0](date); + }; + } + var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ]; + var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ]; + var d3_time_scaleLocalFormats = [ [ d3_time_format("%Y"), d3_true ], [ d3_time_format("%B"), function(d) { + return d.getMonth(); + } ], [ d3_time_format("%b %d"), function(d) { + return d.getDate() != 1; + } ], [ d3_time_format("%a %d"), function(d) { + return d.getDay() && d.getDate() != 1; + } ], [ d3_time_format("%I %p"), function(d) { + return d.getHours(); + } ], [ d3_time_format("%I:%M"), function(d) { + return d.getMinutes(); + } ], [ d3_time_format(":%S"), function(d) { + return d.getSeconds(); + } ], [ d3_time_format(".%L"), function(d) { + return d.getMilliseconds(); + } ] ]; + var d3_time_scaleLocalFormat = d3_time_scaleFormat(d3_time_scaleLocalFormats); + d3_time_scaleLocalMethods.year = d3_time.year; + d3_time.scale = function() { + return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat); + }; + var d3_time_scaleMilliseconds = { + range: function(start, stop, step) { + return d3.range(+start, +stop, step).map(d3_time_scaleDate); + } + }; + var d3_time_scaleUTCMethods = d3_time_scaleLocalMethods.map(function(m) { + return [ m[0].utc, m[1] ]; + }); + var d3_time_scaleUTCFormats = [ [ d3_time_formatUtc("%Y"), d3_true ], [ d3_time_formatUtc("%B"), function(d) { + return d.getUTCMonth(); + } ], [ d3_time_formatUtc("%b %d"), function(d) { + return d.getUTCDate() != 1; + } ], [ d3_time_formatUtc("%a %d"), function(d) { + return d.getUTCDay() && d.getUTCDate() != 1; + } ], [ d3_time_formatUtc("%I %p"), function(d) { + return d.getUTCHours(); + } ], [ d3_time_formatUtc("%I:%M"), function(d) { + return d.getUTCMinutes(); + } ], [ d3_time_formatUtc(":%S"), function(d) { + return d.getUTCSeconds(); + } ], [ d3_time_formatUtc(".%L"), function(d) { + return d.getUTCMilliseconds(); + } ] ]; + var d3_time_scaleUTCFormat = d3_time_scaleFormat(d3_time_scaleUTCFormats); + d3_time_scaleUTCMethods.year = d3_time.year.utc; + d3_time.scale.utc = function() { + return d3_time_scale(d3.scale.linear(), d3_time_scaleUTCMethods, d3_time_scaleUTCFormat); + }; + d3.text = d3_xhrType(function(request) { + return request.responseText; + }); + d3.json = function(url, callback) { + return d3_xhr(url, "application/json", d3_json, callback); + }; + function d3_json(request) { + return JSON.parse(request.responseText); + } + d3.html = function(url, callback) { + return d3_xhr(url, "text/html", d3_html, callback); + }; + function d3_html(request) { + var range = d3_document.createRange(); + range.selectNode(d3_document.body); + return range.createContextualFragment(request.responseText); + } + d3.xml = d3_xhrType(function(request) { + return request.responseXML; + }); + return d3; +}(); \ No newline at end of file diff --git a/public/lib/d3.min.js b/public/lib/d3.min.js new file mode 100644 index 0000000..331756a --- /dev/null +++ b/public/lib/d3.min.js @@ -0,0 +1,5 @@ +d3=function(){function n(n){return null!=n&&!isNaN(n)}function t(n){return n.length}function e(n){for(var t=1;n*t%1;)t*=10;return t}function r(n,t){try{for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}catch(r){n.prototype=t}}function u(){}function i(){}function o(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function a(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.substring(1);for(var e=0,r=Do.length;r>e;++e){var u=Do[e]+t;if(u in n)return u}}function c(){}function l(){}function s(n){function t(){for(var t,r=e,u=-1,i=r.length;++ue;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function T(n){return Lo(n,Io),n}function q(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t0&&(n=n.substring(0,a));var s=Zo.get(n);return s&&(n=s,l=j),a?t?u:r:t?c:i}function D(n,t){return function(e){var r=mo.event;mo.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{mo.event=r}}}function j(n,t){var e=D(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function L(){var n=".dragsuppress-"+ ++Xo,t="touchmove"+n,e="selectstart"+n,r="dragstart"+n,u="click"+n,i=mo.select(_o).on(t,f).on(e,f).on(r,f),o=bo.style,a=o[Vo];return o[Vo]="none",function(t){function e(){i.on(u,null)}i.on(n,null),o[Vo]=a,t&&(i.on(u,function(){f(),e()},!0),setTimeout(e,0))}}function H(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();if(0>$o&&(_o.scrollX||_o.scrollY)){e=mo.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var u=e[0][0].getScreenCTM();$o=!(u.f||u.e),e.remove()}return $o?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}function F(n){return n>0?1:0>n?-1:0}function P(n){return n>1?0:-1>n?Bo:Math.acos(n)}function O(n){return n>1?Bo/2:-1>n?-Bo/2:Math.asin(n)}function R(n){return(Math.exp(n)-Math.exp(-n))/2}function Y(n){return(Math.exp(n)+Math.exp(-n))/2}function I(n){return R(n)/Y(n)}function U(n){return(n=Math.sin(n/2))*n}function Z(){}function V(n,t,e){return new X(n,t,e)}function X(n,t,e){this.h=n,this.s=t,this.l=e}function $(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,ot(u(n+120),u(n),u(n-120))}function B(n,t,e){return new W(n,t,e)}function W(n,t,e){this.h=n,this.c=t,this.l=e}function J(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),G(e,Math.cos(n*=Go)*t,Math.sin(n)*t)}function G(n,t,e){return new K(n,t,e)}function K(n,t,e){this.l=n,this.a=t,this.b=e}function Q(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=tt(u)*ca,r=tt(r)*la,i=tt(i)*sa,ot(rt(3.2404542*u-1.5371385*r-.4985314*i),rt(-.969266*u+1.8760108*r+.041556*i),rt(.0556434*u-.2040259*r+1.0572252*i))}function nt(n,t,e){return n>0?B(Math.atan2(e,t)*Ko,Math.sqrt(t*t+e*e),n):B(0/0,0/0,n)}function tt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function et(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function rt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function ut(n){return ot(n>>16,255&n>>8,255&n)}function it(n){return ut(n)+""}function ot(n,t,e){return new at(n,t,e)}function at(n,t,e){this.r=n,this.g=t,this.b=e}function ct(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function lt(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(gt(u[0]),gt(u[1]),gt(u[2]))}return(i=ga.get(n))?t(i.r,i.g,i.b):(null!=n&&"#"===n.charAt(0)&&(4===n.length?(o=n.charAt(1),o+=o,a=n.charAt(2),a+=a,c=n.charAt(3),c+=c):7===n.length&&(o=n.substring(1,3),a=n.substring(3,5),c=n.substring(5,7)),o=parseInt(o,16),a=parseInt(a,16),c=parseInt(c,16)),t(o,a,c))}function st(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),V(r,u,c)}function ft(n,t,e){n=ht(n),t=ht(t),e=ht(e);var r=et((.4124564*n+.3575761*t+.1804375*e)/ca),u=et((.2126729*n+.7151522*t+.072175*e)/la),i=et((.0193339*n+.119192*t+.9503041*e)/sa);return G(116*u-16,500*(r-u),200*(u-i))}function ht(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function gt(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function pt(n){return"function"==typeof n?n:function(){return n}}function dt(n){return n}function vt(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),mt(t,e,n,r)}}function mt(n,t,e,r){function u(){var n,t=c.status;if(!t&&c.responseText||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return o.error.call(i,r),void 0}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=mo.dispatch("beforesend","progress","load","error"),a={},c=new XMLHttpRequest,l=null;return!_o.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=mo.event;mo.event=n;try{o.progress.call(i,c)}finally{mo.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(l=n,i):l},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(Mo(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),c.setRequestHeader)for(var s in a)c.setRequestHeader(s,a[s]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=l&&(c.responseType=l),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},mo.rebind(i,o,"on"),null==r?i:i.get(yt(r))}function yt(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Mt(){var n=bt(),t=_t()-n;t>24?(isFinite(t)&&(clearTimeout(ma),ma=setTimeout(Mt,t)),va=0):(va=1,Ma(Mt))}function xt(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now()),ya.callback=n,ya.time=e+t}function bt(){var n=Date.now();for(ya=pa;ya;)n>=ya.time&&(ya.flush=ya.callback(n-ya.time)),ya=ya.next;return n}function _t(){for(var n,t=pa,e=1/0;t;)t.flush?t=n?n.next=t.next:pa=t.next:(t.time8?function(n){return n/e}:function(n){return n*e},symbol:n}}function St(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Et(n){return n+""}function kt(){}function At(n,t,e){var r=e.s=n+t,u=r-n,i=r-u;e.t=n-i+(t-u)}function Nt(n,t){n&&za.hasOwnProperty(n.type)&&za[n.type](n,t)}function Tt(n,t,e){var r,u=-1,i=n.length-e;for(t.lineStart();++ua;++a)u.point((e=n[a])[0],e[1]);return u.lineEnd(),void 0}var c={point:e,points:n,other:null,visited:!1,entry:!0,subject:!0},l={point:e,points:[e],other:c,visited:!1,entry:!1,subject:!1};c.other=l,i.push(c),o.push(l),c={point:r,points:[r],other:null,visited:!1,entry:!1,subject:!0},l={point:r,points:[r],other:c,visited:!1,entry:!0,subject:!1},c.other=l,i.push(c),o.push(l)}}),o.sort(t),$t(i),$t(o),i.length){if(e)for(var a=1,c=!e(o[0].point),l=o.length;l>a;++a)o[a].entry=c=!c;for(var s,f,h,g=i[0];;){for(s=g;s.visited;)if((s=s.next)===g)return;f=s.points,u.lineStart();do{if(s.visited=s.other.visited=!0,s.entry){if(s.subject)for(var a=0;a=0;)u.point((h=f[a])[0],h[1])}else r(s.point,s.prev.point,-1,u);s=s.prev}s=s.other,f=s.points}while(!s.visited);u.lineEnd()}}}function $t(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r1&&2&t&&e.push(e.pop().concat(e.shift())),h.push(e.filter(Wt))}}var h,g,p,d=t(u),v={point:i,lineStart:a,lineEnd:c,polygonStart:function(){v.point=l,v.lineStart=s,v.lineEnd=f,h=[],g=[],u.polygonStart()},polygonEnd:function(){v.point=i,v.lineStart=a,v.lineEnd=c,h=mo.merge(h),h.length?Xt(h,Gt,null,e,u):r(g)&&(u.lineStart(),e(null,null,1,u),u.lineEnd()),u.polygonEnd(),h=g=null},sphere:function(){u.polygonStart(),u.lineStart(),e(null,null,1,u),u.lineEnd(),u.polygonEnd()}},m=Jt(),y=t(m);return v}}function Wt(n){return n.length>1}function Jt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:c,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Gt(n,t){return((n=n.point)[0]<0?n[1]-Bo/2-Wo:Bo/2-n[1])-((t=t.point)[0]<0?t[1]-Bo/2-Wo:Bo/2-t[1])}function Kt(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=!1,a=!1,c=0;Da.reset();for(var l=0,s=t.length;s>l;++l){var f=t[l],h=f.length;if(h){for(var g=f[0],p=g[0],d=g[1]/2+Bo/4,v=Math.sin(d),m=Math.cos(d),y=1;;){y===h&&(y=0),n=f[y];var M=n[0],x=n[1]/2+Bo/4,b=Math.sin(x),_=Math.cos(x),w=M-p,S=Math.abs(w)>Bo,E=v*b;if(Da.add(Math.atan2(E*Math.sin(w),m*_+E*Math.cos(w))),Math.abs(x)=0?2:-2)*Bo:w,S^p>=e^M>=e){var k=jt(Ct(g),Ct(n));Ft(k);var A=jt(u,k);Ft(A);var N=(S^w>=0?-1:1)*O(A[2]);r>N&&(c+=S^w>=0?1:-1)}if(!y++)break;p=M,v=b,m=_,g=n}Math.abs(i)>Wo&&(o=!0)}}return(!a&&!o&&0>Da||-Wo>i)^1&c}function Qt(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?Bo:-Bo,c=Math.abs(i-e);Math.abs(c-Bo)0?Bo/2:-Bo/2),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=Bo&&(Math.abs(e-u)Wo?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function te(n,t,e,r){var u;if(null==n)u=e*Bo/2,r.point(-Bo,u),r.point(0,u),r.point(Bo,u),r.point(Bo,0),r.point(Bo,-u),r.point(0,-u),r.point(-Bo,-u),r.point(-Bo,0),r.point(-Bo,u);else if(Math.abs(n[0]-t[0])>Wo){var i=(n[0]o}function e(n){var e,i,o,c,s;return{lineStart:function(){c=o=!1,s=1},point:function(f,h){var g,p=[f,h],d=t(f,h),v=a?d?0:u(f,h):d?u(f+(0>f?Bo:-Bo),h):0;if(!e&&(c=o=d)&&n.lineStart(),d!==o&&(g=r(e,p),(Ot(e,g)||Ot(p,g))&&(p[0]+=Wo,p[1]+=Wo,d=t(p[0],p[1]))),d!==o)s=0,d?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(l&&e&&a^d){var m;v&i||!(m=r(p,e,!0))||(s=0,a?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!d||e&&Ot(e,p)||n.point(p[0],p[1]),e=p,o=d,i=v},lineEnd:function(){o&&n.lineEnd(),e=null},clean:function(){return s|(c&&o)<<1}}}function r(n,t,e){var r=Ct(n),u=Ct(t),i=[1,0,0],a=jt(r,u),c=Dt(a,a),l=a[0],s=c-l*l;if(!s)return!e&&n;var f=o*c/s,h=-o*l/s,g=jt(i,a),p=Ht(i,f),d=Ht(a,h);Lt(p,d);var v=g,m=Dt(p,v),y=Dt(v,v),M=m*m-y*(Dt(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),b=Ht(v,(-m-x)/y);if(Lt(b,p),b=Pt(b),!e)return b;var _,w=n[0],S=t[0],E=n[1],k=t[1];w>S&&(_=w,w=S,S=_);var A=S-w,N=Math.abs(A-Bo)A;if(!N&&E>k&&(_=E,E=k,k=_),T?N?E+k>0^b[1]<(Math.abs(b[0]-w)Bo^(w<=b[0]&&b[0]<=S)){var q=Ht(v,(-m+x)/y);return Lt(q,p),[b,Pt(q)]}}}function u(t,e){var r=a?n:Bo-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}function i(n){return Kt(c,n)}var o=Math.cos(n),a=o>0,c=[n,0],l=Math.abs(o)>Wo,s=Te(n,6*Go);return Bt(t,e,s,i)}function ue(n,t,e,r){function u(r,u){return Math.abs(r[0]-n)0?0:3:Math.abs(r[0]-e)0?2:1:Math.abs(r[1]-t)0?1:0:u>0?3:2}function i(n,t){return o(n.point,t.point)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}function a(u,i){var o=i[0]-u[0],a=i[1]-u[1],c=[0,1];return Math.abs(o)0&&(u[0]+=c[0]*o,u[1]+=c[0]*a),!0):!1}return function(c){function l(i){var o=u(i,-1),a=s([0===o||3===o?n:e,o>1?r:t]);return a}function s(n){for(var t=0,e=M.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=M[u],c=a.length,l=a[0];c>o;++o)i=a[o],l[1]<=r?i[1]>r&&f(l,i,n)>0&&++t:i[1]<=r&&f(l,i,n)<0&&--t,l=i;return 0!==t}function f(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(e[0]-n[0])*(t[1]-n[1])}function h(i,a,c,l){var s=0,f=0;if(null==i||(s=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do l.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+c+4)%4)!==f)}else l.point(a[0],a[1])}function g(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function p(n,t){g(n,t)&&c.point(n,t)}function d(){q.point=m,M&&M.push(x=[]),A=!0,k=!1,S=E=0/0}function v(){y&&(m(b,_),w&&k&&T.rejoin(),y.push(T.buffer())),q.point=p,k&&c.lineEnd()}function m(n,t){n=Math.max(-Wa,Math.min(Wa,n)),t=Math.max(-Wa,Math.min(Wa,t));var e=g(n,t);if(M&&x.push([n,t]),A)b=n,_=t,w=e,A=!1,e&&(c.lineStart(),c.point(n,t));else if(e&&k)c.point(n,t);else{var r=[S,E],u=[n,t];a(r,u)?(k||(c.lineStart(),c.point(r[0],r[1])),c.point(u[0],u[1]),e||c.lineEnd()):e&&(c.lineStart(),c.point(n,t))}S=n,E=t,k=e}var y,M,x,b,_,w,S,E,k,A,N=c,T=Jt(),q={point:p,lineStart:d,lineEnd:v,polygonStart:function(){c=T,y=[],M=[]},polygonEnd:function(){c=N,(y=mo.merge(y)).length?(c.polygonStart(),Xt(y,i,l,h,c),c.polygonEnd()):s([n,t])&&(c.polygonStart(),c.lineStart(),h(null,null,1,c),c.lineEnd(),c.polygonEnd()),y=M=x=null}};return q}}function ie(n,t,e){if(Math.abs(t)=n;var r=n/t;if(t>0){if(r>e[1])return!1;r>e[0]&&(e[0]=r)}else{if(rn&&(Ka=n),n>nc&&(nc=n),Qa>t&&(Qa=t),t>tc&&(tc=t)}function fe(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=he(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=he(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function he(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function ge(n,t){Fa+=n,Pa+=t,++Oa}function pe(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);Ra+=o*(t+n)/2,Ya+=o*(e+r)/2,Ia+=o,ge(t=n,e=r)}var t,e;uc.point=function(r,u){uc.point=n,ge(t=r,e=u)}}function de(){uc.point=ge}function ve(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);Ra+=o*(r+n)/2,Ya+=o*(u+t)/2,Ia+=o,o=u*n-r*t,Ua+=o*(r+n),Za+=o*(u+t),Va+=3*o,ge(r=n,u=t)}var t,e,r,u;uc.point=function(i,o){uc.point=n,ge(t=r=i,e=u=o)},uc.lineEnd=function(){n(t,e)}}function me(n){function t(t,e){n.moveTo(t,e),n.arc(t,e,o,0,2*Bo)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:c};return a}function ye(n){function t(t){function r(e,r){e=n(e,r),t.point(e[0],e[1])}function u(){M=0/0,S.point=o,t.lineStart()}function o(r,u){var o=Ct([r,u]),a=n(r,u);e(M,x,y,b,_,w,M=a[0],x=a[1],y=r,b=o[0],_=o[1],w=o[2],i,t),t.point(M,x)}function a(){S.point=r,t.lineEnd()}function c(){u(),S.point=l,S.lineEnd=s}function l(n,t){o(f=n,h=t),g=M,p=x,d=b,v=_,m=w,S.point=o}function s(){e(M,x,y,b,_,w,g,p,f,d,v,m,i,t),S.lineEnd=a,a()}var f,h,g,p,d,v,m,y,M,x,b,_,w,S={point:r,lineStart:u,lineEnd:a,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=u}};return S}function e(t,i,o,a,c,l,s,f,h,g,p,d,v,m){var y=s-t,M=f-i,x=y*y+M*M;if(x>4*r&&v--){var b=a+g,_=c+p,w=l+d,S=Math.sqrt(b*b+_*_+w*w),E=Math.asin(w/=S),k=Math.abs(Math.abs(w)-1)r||Math.abs((y*q+M*z)/x-.5)>.3||u>a*g+c*p+l*d)&&(e(t,i,o,a,c,l,N,T,k,b/=S,_/=S,w,v,m),m.point(N,T),e(N,T,k,b,_,w,s,f,h,g,p,d,v,m))}}var r=.5,u=Math.cos(30*Go),i=16;return t.precision=function(n){return arguments.length?(i=(r=n*n)>0&&16,t):Math.sqrt(r)},t}function Me(n){this.stream=n}function xe(n){var t=ye(function(t,e){return n([t*Ko,e*Ko])});return function(n){var e=new Me(n=t(n));return e.point=function(t,e){n.point(t*Go,e*Go)},e}}function be(n){return _e(function(){return n})()}function _e(n){function t(n){return n=a(n[0]*Go,n[1]*Go),[n[0]*h+c,l-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(l-n[1])/h),n&&[n[0]*Ko,n[1]*Ko]}function r(){a=oe(o=Ee(m,y,M),i);var n=i(d,v);return c=g-n[0]*h,l=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,o,a,c,l,s,f=ye(function(n,t){return n=i(n,t),[n[0]*h+c,l-n[1]*h]}),h=150,g=480,p=250,d=0,v=0,m=0,y=0,M=0,x=$a,b=dt,_=null,w=null;return t.stream=function(n){return s&&(s.valid=!1),s=we(o,x(f(b(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(x=null==n?(_=n,$a):re((_=+n)*Go),u()):_},t.clipExtent=function(n){return arguments.length?(w=n,b=n?ue(n[0][0],n[0][1],n[1][0],n[1][1]):dt,u()):w},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(d=n[0]%360*Go,v=n[1]%360*Go,r()):[d*Ko,v*Ko]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Go,y=n[1]%360*Go,M=n.length>2?n[2]%360*Go:0,r()):[m*Ko,y*Ko,M*Ko]},mo.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function we(n,t){var e=new Me(t);return e.point=function(e,r){r=n(e*Go,r*Go),e=r[0],t.point(e>Bo?e-2*Bo:-Bo>e?e+2*Bo:e,r[1])},e}function Se(n,t){return[n,t]}function Ee(n,t,e){return n?t||e?oe(Ae(n),Ne(t,e)):Ae(n):t||e?Ne(t,e):Se}function ke(n){return function(t,e){return t+=n,[t>Bo?t-2*Bo:-Bo>t?t+2*Bo:t,e]}}function Ae(n){var t=ke(n);return t.invert=ke(-n),t}function Ne(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*r+a*u;return[Math.atan2(c*i-s*o,a*r-l*u),O(s*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*i-c*o;return[Math.atan2(c*i+l*o,a*r+s*u),O(s*r-a*u)]},e}function Te(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=qe(e,u),i=qe(e,i),(o>0?i>u:u>i)&&(u+=2*o*Bo)):(u=n+2*o*Bo,i=n-.5*c);for(var l,s=u;o>0?s>i:i>s;s-=c)a.point((l=Pt([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],l[1])}}function qe(n,t){var e=Ct(t);e[0]-=n,Ft(e);var r=P(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Wo)%(2*Math.PI)}function ze(n,t,e){var r=mo.range(n,t-Wo,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function Ce(n,t,e){var r=mo.range(n,t-Wo,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function De(n){return n.source}function je(n){return n.target}function Le(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),l=u*Math.sin(n),s=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(U(r-t)+u*o*U(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*s,u=e*l+t*f,o=e*i+t*a;return[Math.atan2(u,r)*Ko,Math.atan2(o,Math.sqrt(r*r+u*u))*Ko]}:function(){return[n*Ko,t*Ko]};return p.distance=h,p}function He(){function n(n,u){var i=Math.sin(u*=Go),o=Math.cos(u),a=Math.abs((n*=Go)-t),c=Math.cos(a);ic+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;oc.point=function(u,i){t=u*Go,e=Math.sin(i*=Go),r=Math.cos(i),oc.point=n},oc.lineEnd=function(){oc.point=oc.lineEnd=c}}function Fe(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function Pe(n,t){function e(n,t){var e=Math.abs(Math.abs(t)-Bo/2)1&&u.push("H",r[0]),u.join("")}function We(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1){a=t[1],i=n[c],c++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var l=2;l9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function fr(n){return n.length<3?Xe(n):n[0]+nr(n,sr(n))}function hr(n,t,e,r){var u,i,o,a,c,l,s;return u=r[n],i=u[0],o=u[1],u=r[t],a=u[0],c=u[1],u=r[e],l=u[0],s=u[1],(s-o)*(a-i)-(c-o)*(l-i)>0}function gr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function pr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],l=e[1],s=t[1]-c,f=r[1]-l,h=(a*(c-l)-f*(u-i))/(f*o-a*s);return[u+h*o,c+h*s]}function dr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function vr(n,t){var e={list:n.map(function(n,t){return{index:t,x:n[0],y:n[1]}}).sort(function(n,t){return n.yt.y?1:n.xt.x?1:0}),bottomSite:null},r={list:[],leftEnd:null,rightEnd:null,init:function(){r.leftEnd=r.createHalfEdge(null,"l"),r.rightEnd=r.createHalfEdge(null,"l"),r.leftEnd.r=r.rightEnd,r.rightEnd.l=r.leftEnd,r.list.unshift(r.leftEnd,r.rightEnd)},createHalfEdge:function(n,t){return{edge:n,side:t,vertex:null,l:null,r:null}},insert:function(n,t){t.l=n,t.r=n.r,n.r.l=t,n.r=t},leftBound:function(n){var t=r.leftEnd;do t=t.r;while(t!=r.rightEnd&&u.rightOf(t,n));return t=t.l},del:function(n){n.l.r=n.r,n.r.l=n.l,n.edge=null},right:function(n){return n.r},left:function(n){return n.l},leftRegion:function(n){return null==n.edge?e.bottomSite:n.edge.region[n.side]},rightRegion:function(n){return null==n.edge?e.bottomSite:n.edge.region[mc[n.side]]}},u={bisect:function(n,t){var e={region:{l:n,r:t},ep:{l:null,r:null}},r=t.x-n.x,u=t.y-n.y,i=r>0?r:-r,o=u>0?u:-u;return e.c=n.x*r+n.y*u+.5*(r*r+u*u),i>o?(e.a=1,e.b=u/r,e.c/=r):(e.b=1,e.a=r/u,e.c/=u),e},intersect:function(n,t){var e=n.edge,r=t.edge;if(!e||!r||e.region.r==r.region.r)return null;var u=e.a*r.b-e.b*r.a;if(Math.abs(u)<1e-10)return null;var i,o,a=(e.c*r.b-r.c*e.b)/u,c=(r.c*e.a-e.c*r.a)/u,l=e.region.r,s=r.region.r;l.y=o.region.r.x;return f&&"l"===i.side||!f&&"r"===i.side?null:{x:a,y:c}},rightOf:function(n,t){var e=n.edge,r=e.region.r,u=t.x>r.x;if(u&&"l"===n.side)return 1;if(!u&&"r"===n.side)return 0;if(1===e.a){var i=t.y-r.y,o=t.x-r.x,a=0,c=0;if(!u&&e.b<0||u&&e.b>=0?c=a=i>=e.b*o:(c=t.x+t.y*e.b>e.c,e.b<0&&(c=!c),c||(a=1)),!a){var l=r.x-e.region.l.x;c=e.b*(o*o-i*i)h*h+g*g}return"l"===n.side?c:!c},endPoint:function(n,e,r){n.ep[e]=r,n.ep[mc[e]]&&t(n)},distance:function(n,t){var e=n.x-t.x,r=n.y-t.y;return Math.sqrt(e*e+r*r)}},i={list:[],insert:function(n,t,e){n.vertex=t,n.ystar=t.y+e;for(var r=0,u=i.list,o=u.length;o>r;r++){var a=u[r];if(!(n.ystar>a.ystar||n.ystar==a.ystar&&t.x>a.vertex.x))break}u.splice(r,0,n)},del:function(n){for(var t=0,e=i.list,r=e.length;r>t&&e[t]!=n;++t);e.splice(t,1)},empty:function(){return 0===i.list.length},nextEvent:function(n){for(var t=0,e=i.list,r=e.length;r>t;++t)if(e[t]==n)return e[t+1];return null},min:function(){var n=i.list[0];return{x:n.vertex.x,y:n.ystar}},extractMin:function(){return i.list.shift()}};r.init(),e.bottomSite=e.list.shift();for(var o,a,c,l,s,f,h,g,p,d,v,m,y,M=e.list.shift();;)if(i.empty()||(o=i.min()),M&&(i.empty()||M.yg.y&&(p=h,h=g,g=p,y="r"),m=u.bisect(h,g),f=r.createHalfEdge(m,y),r.insert(l,f),u.endPoint(m,mc[y],v),d=u.intersect(l,f),d&&(i.del(l),i.insert(l,d,u.distance(d,h))),d=u.intersect(f,s),d&&i.insert(f,d,u.distance(d,h))}for(a=r.right(r.leftEnd);a!=r.rightEnd;a=r.right(a))t(a.edge)}function mr(n){return n.x}function yr(n){return n.y}function Mr(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function xr(n,t,e,r,u,i){if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t.nodes;c[0]&&xr(n,c[0],e,r,o,a),c[1]&&xr(n,c[1],o,r,u,a),c[2]&&xr(n,c[2],e,a,o,i),c[3]&&xr(n,c[3],o,a,u,i)}}function br(n,t){n=mo.rgb(n),t=mo.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return"#"+ct(Math.round(e+i*n))+ct(Math.round(r+o*n))+ct(Math.round(u+a*n))}}function _r(n,t){var e,r={},u={};for(e in n)e in t?r[e]=Er(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function wr(n,t){return t-=n=+n,function(e){return n+t*e}}function Sr(n,t){var e,r,u,i,o,a=0,c=0,l=[],s=[];for(n+="",t+="",yc.lastIndex=0,r=0;e=yc.exec(t);++r)e.index&&l.push(t.substring(a,c=e.index)),s.push({i:l.length,x:e[0]}),l.push(null),a=yc.lastIndex;for(ar;++r)if(o=s[r],o.x==e[0]){if(o.i)if(null==l[o.i+1])for(l[o.i-1]+=o.x,l.splice(o.i,1),u=r+1;i>u;++u)s[u].i--;else for(l[o.i-1]+=o.x+l[o.i+1],l.splice(o.i,2),u=r+1;i>u;++u)s[u].i-=2;else if(null==l[o.i+1])l[o.i]=o.x;else for(l[o.i]=o.x+l[o.i+1],l.splice(o.i+1,1),u=r+1;i>u;++u)s[u].i--;s.splice(r,1),i--,r--}else o.x=wr(parseFloat(e[0]),parseFloat(o.x));for(;i>r;)o=s.pop(),null==l[o.i+1]?l[o.i]=o.x:(l[o.i]=o.x+l[o.i+1],l.splice(o.i+1,1)),i--;return 1===l.length?null==l[0]?(o=s[0].x,function(n){return o(n)+""}):function(){return t}:function(n){for(r=0;i>r;++r)l[(o=s[r]).i]=o.x(n);return l.join("")}}function Er(n,t){for(var e,r=mo.interpolators.length;--r>=0&&!(e=mo.interpolators[r](n,t)););return e}function kr(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(Er(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function Ar(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function Nr(n){return function(t){return 1-n(1-t)}}function Tr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function qr(n){return n*n}function zr(n){return n*n*n}function Cr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Dr(n){return function(t){return Math.pow(t,n)}}function jr(n){return 1-Math.cos(n*Bo/2)}function Lr(n){return Math.pow(2,10*(n-1))}function Hr(n){return 1-Math.sqrt(1-n*n)}function Fr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/(2*Bo)*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,10*-r)*Math.sin(2*(r-e)*Bo/t)}}function Pr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Or(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=mo.hcl(n),t=mo.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return J(e+i*n,r+o*n,u+a*n)+""}}function Yr(n,t){n=mo.hsl(n),t=mo.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return $(e+i*n,r+o*n,u+a*n)+""}}function Ir(n,t){n=mo.lab(n),t=mo.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return Q(e+i*n,r+o*n,u+a*n)+""}}function Ur(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Zr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Xr(t),u=Vr(t,e),i=Xr($r(e,t,-u))||0;t[0]*e[1]180?s+=360:s-l>180&&(l+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:wr(l,s)})):s&&r.push(r.pop()+"rotate("+s+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:wr(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:wr(g[0],p[0])},{i:e-2,x:wr(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++ie;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function vu(n){return n.reduce(mu,0)}function mu(n,t){return n+t[1]}function yu(n,t){return Mu(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function Mu(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function xu(n){return[mo.min(n),mo.max(n)]}function bu(n,t){return n.parent==t.parent?1:2}function _u(n){var t=n.children;return t&&t.length?t[0]:n._tree.thread}function wu(n){var t,e=n.children;return e&&(t=e.length)?e[t-1]:n._tree.thread}function Su(n,t){var e=n.children;if(e&&(u=e.length))for(var r,u,i=-1;++i0&&(n=r);return n}function Eu(n,t){return n.x-t.x}function ku(n,t){return t.x-n.x}function Au(n,t){return n.depth-t.depth}function Nu(n,t){function e(n,r){var u=n.children;if(u&&(o=u.length))for(var i,o,a=null,c=-1;++c=0;)t=u[i]._tree,t.prelim+=e,t.mod+=e,e+=t.shift+(r+=t.change)}function qu(n,t,e){n=n._tree,t=t._tree;var r=e/(t.number-n.number);n.change+=r,t.change-=r,t.shift+=e,t.prelim+=e,t.mod+=e}function zu(n,t,e){return n._tree.ancestor.parent==t.parent?n._tree.ancestor:e}function Cu(n,t){return n.value-t.value}function Du(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function ju(n,t){n._pack_next=t,t._pack_prev=n}function Lu(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function Hu(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(l=e.length)){var e,r,u,i,o,a,c,l,s=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(Fu),r=e[0],r.x=-r.r,r.y=0,t(r),l>1&&(u=e[1],u.x=u.r,u.y=0,t(u),l>2))for(i=e[2],Ru(r,u,i),t(i),Du(r,i),r._pack_prev=i,Du(i,u),u=r._pack_next,o=3;l>o;o++){Ru(r,u,i=e[o]);var p=0,d=1,v=1;for(a=u._pack_next;a!==u;a=a._pack_next,d++)if(Lu(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!Lu(c,i);c=c._pack_prev,v++);p?(v>d||d==v&&u.ro;o++)i=e[o],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(Pu)}}function Fu(n){n._pack_next=n._pack_prev=n}function Pu(n){delete n._pack_next,delete n._pack_prev}function Ou(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++iu&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function $u(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Bu(n){return n.rangeExtent?n.rangeExtent():$u(n.range())}function Wu(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Ju(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Gu(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:Nc}function Ku(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]2?Ku:Wu,c=r?Jr:Wr;return o=u(n,t,c,e),a=u(t,n,c,Er),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Ur)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return ri(n,t)},i.tickFormat=function(t,e){return ui(n,t,e)},i.nice=function(t){return ti(n,t),u()},i.copy=function(){return Qu(n,t,e,r)},u()}function ni(n,t){return mo.rebind(n,t,"range","rangeRound","interpolate","clamp")}function ti(n,t){return Ju(n,Gu(ei(n,t)[2]))}function ei(n,t){null==t&&(t=10);var e=$u(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function ri(n,t){return mo.range.apply(mo,ei(n,t))}function ui(n,t,e){var r=-Math.floor(Math.log(ei(n,t)[2])/Math.LN10+.01);return mo.format(e?e.replace(Ea,function(n,t,e,u,i,o,a,c,l,s){return[t,e,u,i,o,a,c,l||"."+(r-2*("%"===s)),s].join("")}):",."+r+"f")}function ii(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Ju(r.map(u),e?Math:qc);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=$u(r),o=[],a=n[0],c=n[1],l=Math.floor(u(a)),s=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(s-l)){if(e){for(;s>l;l++)for(var h=1;f>h;h++)o.push(i(l)*h);o.push(i(l))}else for(o.push(i(l));l++0;h--)o.push(i(l)*h);for(l=0;o[l]c;s--);o=o.slice(l,s)}return o},o.tickFormat=function(n,t){if(!arguments.length)return Tc;arguments.length<2?t=Tc:"function"!=typeof t&&(t=mo.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):""}},o.copy=function(){return ii(n.copy(),t,e,r)},ni(o,n)}function oi(n,t,e){function r(t){return n(u(t))}var u=ai(t),i=ai(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return ri(e,n)},r.tickFormat=function(n,t){return ui(e,n,t)},r.nice=function(n){return r.domain(ti(e,n))},r.exponent=function(o){return arguments.length?(u=ai(t=o),i=ai(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return oi(n.copy(),t,e)},ni(r,n)}function ai(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ci(n,t){function e(t){return o[((i.get(t)||i.set(t,n.push(t)))-1)%o.length]}function r(t,e){return mo.range(n.length).map(function(n){return t+e*n})}var i,o,a;return e.domain=function(r){if(!arguments.length)return n;n=[],i=new u;for(var o,a=-1,c=r.length;++ae?[0/0,0/0]:[e>0?u[e-1]:n[0],et?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return si(n,t,e)},u()}function fi(n,t){function e(e){return e>=e?t[mo.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return fi(n,t)},e}function hi(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return ri(n,t)},t.tickFormat=function(t,e){return ui(n,t,e)},t.copy=function(){return hi(n)},t}function gi(n){return n.innerRadius}function pi(n){return n.outerRadius}function di(n){return n.startAngle}function vi(n){return n.endAngle}function mi(n){for(var t,e,r,u=-1,i=n.length;++ue?l():(i.active=e,o.event&&o.event.start.call(n,s,t),o.tween.forEach(function(e,r){(r=r.call(n,s,t))&&p.push(r)}),c(r)?1:(xt(c,0,a),void 0))}function c(r){if(i.active!==e)return l();for(var u=(r-h)/g,a=f(u),c=p.length;c>0;)p[--c].call(n,a);return u>=1?(o.event&&o.event.end.call(n,s,t),l()):void 0}function l(){return--i.count?delete i[e]:delete n.__transition__,1}var s=n.__data__,f=o.ease,h=o.delay,g=o.duration,p=[];return r>=h?u(r):(xt(u,h,a),void 0)},0,a)}}function Ti(n,t){n.attr("transform",function(n){return"translate("+t(n)+",0)"})}function qi(n,t){n.attr("transform",function(n){return"translate(0,"+t(n)+")"})}function zi(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ci(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new Wc(e-1)),1),e}function i(n,e){return t(n=new Wc(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{Wc=zi;var r=new zi;return r._=n,o(r,t,e)}finally{Wc=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Di(n);return c.floor=c,c.round=Di(r),c.ceil=Di(u),c.offset=Di(i),c.range=a,n}function Di(n){return function(t,e){try{Wc=zi;var r=new zi;return r._=t,n(r,e)._}finally{Wc=Date}}}function ji(n){function t(t){for(var r,u,i,o=[],a=-1,c=0;++aa;){if(r>=l)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=vl[o in pl?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function Hi(n){return new RegExp("^(?:"+n.map(mo.requote).join("|")+")","i")}function Fi(n){for(var t=new u,e=-1,r=n.length;++en?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Oi(n,t,e){al.lastIndex=0;var r=al.exec(t.substring(e));return r?(n.w=cl.get(r[0].toLowerCase()),e+r[0].length):-1}function Ri(n,t,e){il.lastIndex=0;var r=il.exec(t.substring(e));return r?(n.w=ol.get(r[0].toLowerCase()),e+r[0].length):-1}function Yi(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function Ii(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e));return r?(n.U=+r[0],e+r[0].length):-1}function Ui(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e));return r?(n.W=+r[0],e+r[0].length):-1}function Zi(n,t,e){fl.lastIndex=0;var r=fl.exec(t.substring(e));return r?(n.m=hl.get(r[0].toLowerCase()),e+r[0].length):-1}function Vi(n,t,e){ll.lastIndex=0;var r=ll.exec(t.substring(e));return r?(n.m=sl.get(r[0].toLowerCase()),e+r[0].length):-1}function Xi(n,t,e){return Li(n,dl.c.toString(),t,e)}function $i(n,t,e){return Li(n,dl.x.toString(),t,e)}function Bi(n,t,e){return Li(n,dl.X.toString(),t,e)}function Wi(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Ji(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+2));return r?(n.y=Ki(+r[0]),e+r[0].length):-1}function Gi(n,t,e){return/^[+-]\d{4}$/.test(t=t.substring(e,e+5))?(n.Z=+t,e+5):-1}function Ki(n){return n+(n>68?1900:2e3)}function Qi(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function no(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function to(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function eo(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function ro(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function uo(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function io(n,t,e){ml.lastIndex=0;var r=ml.exec(t.substring(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function oo(n,t,e){var r=yl.get(t.substring(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}function ao(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=~~(Math.abs(t)/60),u=Math.abs(t)%60;return e+Pi(r,"0",2)+Pi(u,"0",2)}function co(n,t,e){gl.lastIndex=0;var r=gl.exec(t.substring(e,e+1));return r?e+r[0].length:-1}function lo(n){function t(n){try{Wc=zi;var t=new Wc;return t._=n,e(t)}finally{Wc=Date}}var e=ji(n);return t.parse=function(n){try{Wc=zi;var t=e.parse(n);return t&&t._}finally{Wc=Date}},t.toString=e.toString,t}function so(n){return n.toISOString()}function fo(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=mo.bisect(xl,u);return i==xl.length?[t.year,ei(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/xl[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=ho(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=ho(+t+1);return t}}:n))},r.ticks=function(n,t){var e=$u(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],ho(+e[1]+1),t)},r.tickFormat=function(){return e},r.copy=function(){return fo(n.copy(),t,e)},ni(r,n)}function ho(n){return new Date(n)}function go(n){return function(t){for(var e=n.length-1,r=n[e];!r[1](t);)r=n[--e];return r[0](t)}}function po(n){return JSON.parse(n.responseText)}function vo(n){var t=xo.createRange();return t.selectNode(xo.body),t.createContextualFragment(n.responseText)}var mo={version:"3.3.3"};Date.now||(Date.now=function(){return+new Date});var yo=[].slice,Mo=function(n){return yo.call(n)},xo=document,bo=xo.documentElement,_o=window;try{Mo(bo.childNodes)[0].nodeType}catch(wo){Mo=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}try{xo.createElement("div").style.setProperty("opacity",0,"")}catch(So){var Eo=_o.Element.prototype,ko=Eo.setAttribute,Ao=Eo.setAttributeNS,No=_o.CSSStyleDeclaration.prototype,To=No.setProperty;Eo.setAttribute=function(n,t){ko.call(this,n,t+"")},Eo.setAttributeNS=function(n,t,e){Ao.call(this,n,t,e+"")},No.setProperty=function(n,t,e){To.call(this,n,t+"",e)}}mo.ascending=function(n,t){return t>n?-1:n>t?1:n>=t?0:0/0},mo.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},mo.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=e);)e=void 0;for(;++ur&&(e=r)}else{for(;++u=e);)e=void 0;for(;++ur&&(e=r)}return e},mo.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=e);)e=void 0;for(;++ue&&(e=r)}else{for(;++u=e);)e=void 0;for(;++ue&&(e=r)}return e},mo.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i=e);)e=u=void 0;for(;++ir&&(e=r),r>u&&(u=r))}else{for(;++i=e);)e=void 0;for(;++ir&&(e=r),r>u&&(u=r))}return[e,u]},mo.sum=function(n,t){var e,r=0,u=n.length,i=-1;if(1===arguments.length)for(;++i1&&(t=t.map(e)),t=t.filter(n),t.length?mo.quantile(t.sort(mo.ascending),.5):void 0},mo.bisector=function(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n.call(t,t[i],i)r;){var i=r+u>>>1;er?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},mo.zip=function(){if(!(u=arguments.length))return[];for(var n=-1,e=mo.min(arguments,t),r=new Array(e);++nr)for(;(u=n+r*++a)>t;)i.push(u/o);else for(;(u=n+r*++a)=o.length)return r?r.call(i,a):e?a.sort(e):a;for(var l,s,f,h,g=-1,p=a.length,d=o[c++],v=new u;++g=o.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,i={},o=[],a=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(mo.map,e,0),0)},i.key=function(n){return o.push(n),i},i.sortKeys=function(n){return a[o.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},mo.set=function(n){var t=new i;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},r(i,{has:function(n){return zo+n in this},add:function(n){return this[zo+n]=!0,n},remove:function(n){return n=zo+n,n in this&&delete this[n]},values:function(){var n=[];return this.forEach(function(t){n.push(t)}),n},forEach:function(n){for(var t in this)t.charCodeAt(0)===Co&&n.call(this,t.substring(1))}}),mo.behavior={},mo.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r=0&&(r=n.substring(e+1),n=n.substring(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},mo.event=null,mo.requote=function(n){return n.replace(jo,"\\$&")};var jo=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,Lo={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},Ho=function(n,t){return t.querySelector(n)},Fo=function(n,t){return t.querySelectorAll(n)},Po=bo[a(bo,"matchesSelector")],Oo=function(n,t){return Po.call(n,t)};"function"==typeof Sizzle&&(Ho=function(n,t){return Sizzle(n,t)[0]||null},Fo=function(n,t){return Sizzle.uniqueSort(Sizzle(n,t))},Oo=Sizzle.matchesSelector),mo.selection=function(){return Uo};var Ro=mo.selection.prototype=[];Ro.select=function(n){var t,e,r,u,i=[];n=d(n);for(var o=-1,a=this.length;++o=0&&(e=n.substring(0,t),n=n.substring(t+1)),Yo.hasOwnProperty(e)?{space:Yo[e],local:n}:n}},Ro.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=mo.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(m(t,n[t]));return this}return this.each(m(n,t))},Ro.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=n.trim().split(/^|\s+/g)).length,u=-1;if(t=e.classList){for(;++ur){if("string"!=typeof n){2>r&&(t="");for(e in n)this.each(_(e,n[e],t));return this}if(2>r)return _o.getComputedStyle(this.node(),null).getPropertyValue(n);e=""}return this.each(_(n,t,e))},Ro.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(w(t,n[t]));return this}return this.each(w(n,t))},Ro.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Ro.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Ro.append=function(n){return n=S(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Ro.insert=function(n,t){return n=S(n),t=d(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments))})},Ro.remove=function(){return this.each(function(){var n=this.parentNode;n&&n.removeChild(this)})},Ro.data=function(n,t){function e(n,e){var r,i,o,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),d=new Array(a);if(t){var v,m=new u,y=new u,M=[];for(r=-1;++rr;++r)p[r]=E(e[r]);for(;a>r;++r)d[r]=n[r]}p.update=g,p.parentNode=g.parentNode=d.parentNode=n.parentNode,c.push(p),l.push(g),s.push(d)}var r,i,o=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++oi;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a)&&t.push(r)}return p(u)},Ro.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},Ro.sort=function(n){n=A.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},Ro.size=function(){var n=0;return this.each(function(){++n}),n};var Io=[];mo.selection.enter=T,mo.selection.enter.prototype=Io,Io.append=Ro.append,Io.empty=Ro.empty,Io.node=Ro.node,Io.call=Ro.call,Io.size=Ro.size,Io.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++ar){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(C(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(C(n,t,e))};var Zo=mo.map({mouseenter:"mouseover",mouseleave:"mouseout"});Zo.forEach(function(n){"on"+n in xo&&Zo.remove(n)});var Vo=a(bo.style,"userSelect"),Xo=0;mo.mouse=function(n){return H(n,h())};var $o=/WebKit/.test(_o.navigator.userAgent)?-1:0;mo.touches=function(n,t){return arguments.length<2&&(t=h().touches),t?Mo(t).map(function(t){var e=H(n,t);return e.identifier=t.identifier,e}):[]},mo.behavior.drag=function(){function n(){this.on("mousedown.drag",o).on("touchstart.drag",a)}function t(){return mo.event.changedTouches[0].identifier}function e(n,t){return mo.touches(n).filter(function(n){return n.identifier===t})[0]}function r(n,t,e,r){return function(){function o(){if(!s)return a();var n=t(s,g),e=n[0]-d[0],r=n[1]-d[1];v|=e|r,d=n,f({type:"drag",x:n[0]+c[0],y:n[1]+c[1],dx:e,dy:r})}function a(){m.on(e+"."+p,null).on(r+"."+p,null),y(v&&mo.event.target===h),f({type:"dragend"})}var c,l=this,s=l.parentNode,f=u.of(l,arguments),h=mo.event.target,g=n(),p=null==g?"drag":"drag-"+g,d=t(s,g),v=0,m=mo.select(_o).on(e+"."+p,o).on(r+"."+p,a),y=L();i?(c=i.apply(l,arguments),c=[c.x-d[0],c.y-d[1]]):c=[0,0],f({type:"dragstart"})}}var u=g(n,"drag","dragstart","dragend"),i=null,o=r(c,mo.mouse,"mousemove","mouseup"),a=r(t,e,"touchmove","touchend");return n.origin=function(t){return arguments.length?(i=t,n):i},mo.rebind(n,u,"on")};var Bo=Math.PI,Wo=1e-6,Jo=Wo*Wo,Go=Bo/180,Ko=180/Bo,Qo=Math.SQRT2,na=2,ta=4;mo.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=Y(d),o=i/(na*h)*(e*I(Qo*t+d)-R(d));return[r+o*l,u+o*s,i*e/Y(Qo*t+d)]}return[r+n*l,u+n*s,i*Math.exp(Qo*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],l=o-r,s=a-u,f=l*l+s*s,h=Math.sqrt(f),g=(c*c-i*i+ta*f)/(2*i*na*h),p=(c*c-i*i-ta*f)/(2*c*na*h),d=Math.log(Math.sqrt(g*g+1)-g),v=Math.log(Math.sqrt(p*p+1)-p),m=v-d,y=(m||Math.log(c/i))/Qo;return e.duration=1e3*y,e},mo.behavior.zoom=function(){function n(n){n.on(A,l).on(ua+".zoom",h).on(N,p).on("dblclick.zoom",d).on(q,s)}function t(n){return[(n[0]-S.x)/S.k,(n[1]-S.y)/S.k]}function e(n){return[n[0]*S.k+S.x,n[1]*S.k+S.y]}function r(n){S.k=Math.max(k[0],Math.min(k[1],n))}function u(n,t){t=e(t),S.x+=n[0]-t[0],S.y+=n[1]-t[1]}function i(){b&&b.domain(x.range().map(function(n){return(n-S.x)/S.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-S.y)/S.k}).map(_.invert))}function o(n){n({type:"zoomstart"})}function a(n){i(),n({type:"zoom",scale:S.k,translate:[S.x,S.y]})}function c(n){n({type:"zoomend"})}function l(){function n(){s=1,u(mo.mouse(r),h),a(i)}function e(){f.on(N,_o===r?p:null).on(T,null),g(s&&mo.event.target===l),c(i)}var r=this,i=C.of(r,arguments),l=mo.event.target,s=0,f=mo.select(_o).on(N,n).on(T,e),h=t(mo.mouse(r)),g=L();z.call(r),o(i)}function s(){function n(){var n=mo.touches(p);return g=S.k,n.forEach(function(n){n.identifier in v&&(v[n.identifier]=t(n))}),n}function e(){for(var t=mo.event.changedTouches,e=0,i=t.length;i>e;++e)v[t[e].identifier]=null;var o=n(),c=Date.now();if(1===o.length){if(500>c-M){var l=o[0],s=v[l.identifier];r(2*S.k),u(l,s),f(),a(d)}M=c}else if(o.length>1){var l=o[0],h=o[1],g=l[0]-h[0],p=l[1]-h[1];m=g*g+p*p}}function i(){for(var n,t,e,i,o=mo.touches(p),c=0,l=o.length;l>c;++c,i=null)if(e=o[c],i=v[e.identifier]){if(t)break;n=e,t=i}if(i){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*g)}M=null,u(n,t),a(d)}function h(){if(mo.event.touches.length){for(var t=mo.event.changedTouches,e=0,r=t.length;r>e;++e)delete v[t[e].identifier];for(var u in v)return void n()}_.on(x,null).on(b,null),w.on(A,l).on(q,s),E(),c(d)}var g,p=this,d=C.of(p,arguments),v={},m=0,y=mo.event.changedTouches[0].identifier,x="touchmove.zoom-"+y,b="touchend.zoom-"+y,_=mo.select(_o).on(x,i).on(b,h),w=mo.select(p).on(A,null).on(q,e),E=L();z.call(p),e(),o(d)}function h(){var n=C.of(this,arguments);y?clearTimeout(y):(z.call(this),o(n)),y=setTimeout(function(){y=null,c(n)},50),f();var e=m||mo.mouse(this);v||(v=t(e)),r(Math.pow(2,.002*ea())*S.k),u(e,v),a(n)}function p(){v=null}function d(){var n=C.of(this,arguments),e=mo.mouse(this),i=t(e),l=Math.log(S.k)/Math.LN2;o(n),r(Math.pow(2,mo.event.shiftKey?Math.ceil(l)-1:Math.floor(l)+1)),u(e,i),a(n),c(n)}var v,m,y,M,x,b,_,w,S={x:0,y:0,k:1},E=[960,500],k=ra,A="mousedown.zoom",N="mousemove.zoom",T="mouseup.zoom",q="touchstart.zoom",C=g(n,"zoomstart","zoom","zoomend");return n.event=function(n){n.each(function(){var n=C.of(this,arguments),t=S;Pc?mo.select(this).transition().each("start.zoom",function(){S=this.__chart__||{x:0,y:0,k:1},o(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],u=e/2,i=r/2,o=mo.interpolateZoom([(u-S.x)/S.k,(i-S.y)/S.k,e/S.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),c=e/r[2];this.__chart__=S={x:u-r[0]*c,y:i-r[1]*c,k:c},a(n)}}).each("end.zoom",function(){c(n)}):(this.__chart__=S,o(n),a(n),c(n))})},n.translate=function(t){return arguments.length?(S={x:+t[0],y:+t[1],k:S.k},i(),n):[S.x,S.y]},n.scale=function(t){return arguments.length?(S={x:S.x,y:S.y,k:+t},i(),n):S.k},n.scaleExtent=function(t){return arguments.length?(k=null==t?ra:[+t[0],+t[1]],n):k},n.center=function(t){return arguments.length?(m=t&&[+t[0],+t[1]],n):m},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.x=function(t){return arguments.length?(b=t,x=t.copy(),S={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),S={x:0,y:0,k:1},n):w},mo.rebind(n,C,"on")};var ea,ra=[0,1/0],ua="onwheel"in xo?(ea=function(){return-mo.event.deltaY*(mo.event.deltaMode?120:1)},"wheel"):"onmousewheel"in xo?(ea=function(){return mo.event.wheelDelta},"mousewheel"):(ea=function(){return-mo.event.detail},"MozMousePixelScroll");Z.prototype.toString=function(){return this.rgb()+""},mo.hsl=function(n,t,e){return 1===arguments.length?n instanceof X?V(n.h,n.s,n.l):lt(""+n,st,V):V(+n,+t,+e)};var ia=X.prototype=new Z;ia.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),V(this.h,this.s,this.l/n)},ia.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),V(this.h,this.s,n*this.l)},ia.rgb=function(){return $(this.h,this.s,this.l)},mo.hcl=function(n,t,e){return 1===arguments.length?n instanceof W?B(n.h,n.c,n.l):n instanceof K?nt(n.l,n.a,n.b):nt((n=ft((n=mo.rgb(n)).r,n.g,n.b)).l,n.a,n.b):B(+n,+t,+e)};var oa=W.prototype=new Z;oa.brighter=function(n){return B(this.h,this.c,Math.min(100,this.l+aa*(arguments.length?n:1)))},oa.darker=function(n){return B(this.h,this.c,Math.max(0,this.l-aa*(arguments.length?n:1)))},oa.rgb=function(){return J(this.h,this.c,this.l).rgb()},mo.lab=function(n,t,e){return 1===arguments.length?n instanceof K?G(n.l,n.a,n.b):n instanceof W?J(n.l,n.c,n.h):ft((n=mo.rgb(n)).r,n.g,n.b):G(+n,+t,+e)};var aa=18,ca=.95047,la=1,sa=1.08883,fa=K.prototype=new Z;fa.brighter=function(n){return G(Math.min(100,this.l+aa*(arguments.length?n:1)),this.a,this.b)},fa.darker=function(n){return G(Math.max(0,this.l-aa*(arguments.length?n:1)),this.a,this.b)},fa.rgb=function(){return Q(this.l,this.a,this.b)},mo.rgb=function(n,t,e){return 1===arguments.length?n instanceof at?ot(n.r,n.g,n.b):lt(""+n,ot,$):ot(~~n,~~t,~~e)};var ha=at.prototype=new Z;ha.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),ot(Math.min(255,~~(t/n)),Math.min(255,~~(e/n)),Math.min(255,~~(r/n)))):ot(u,u,u)},ha.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),ot(~~(n*this.r),~~(n*this.g),~~(n*this.b))},ha.hsl=function(){return st(this.r,this.g,this.b)},ha.toString=function(){return"#"+ct(this.r)+ct(this.g)+ct(this.b)};var ga=mo.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ga.forEach(function(n,t){ga.set(n,ut(t))}),mo.functor=pt,mo.xhr=vt(dt),mo.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=mo.xhr(n,t,i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o.row(e)}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function o(t){return t.map(a).join(n)}function a(n){return c.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var c=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=c)return o;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++s;){var r=n.charCodeAt(s++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++a);else if(r!==l)continue;return n.substring(t,s-a)}return n.substring(t)}for(var r,u,i={},o={},a=[],c=n.length,s=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();(!t||(h=t(h,f++)))&&a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new i,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(a).join(n)].concat(t.map(function(t){return u.map(function(n){return a(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(o).join("\n")},e},mo.csv=mo.dsv(",","text/csv"),mo.tsv=mo.dsv(" ","text/tab-separated-values");var pa,da,va,ma,ya,Ma=_o[a(_o,"requestAnimationFrame")]||function(n){setTimeout(n,17)};mo.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={callback:n,time:u,next:null};da?da.next=i:pa=i,da=i,va||(ma=clearTimeout(ma),va=1,Ma(Mt))},mo.timer.flush=function(){bt(),_t()};var xa=".",ba=",",_a=[3,3],wa="$",Sa=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(wt);mo.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=mo.round(n,St(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((0>=e?e+1:e-1)/3)))),Sa[8+e/3]},mo.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)},mo.format=function(n){var t=Ea.exec(n),e=t[1]||" ",r=t[2]||">",u=t[3]||"",i=t[4]||"",o=t[5],a=+t[6],c=t[7],l=t[8],s=t[9],f=1,h="",g=!1;switch(l&&(l=+l.substring(1)),(o||"0"===e&&"="===r)&&(o=e="0",r="=",c&&(a-=Math.floor((a-1)/4))),s){case"n":c=!0,s="g";break;case"%":f=100,h="%",s="f";break;case"p":f=100,h="%",s="r";break;case"b":case"o":case"x":case"X":"#"===i&&(i="0"+s.toLowerCase());case"c":case"d":g=!0,l=0;break;case"s":f=-1,s="r"}"#"===i?i="":"$"===i&&(i=wa),"r"!=s||l||(s="g"),null!=l&&("g"==s?l=Math.max(1,Math.min(21,l)):("e"==s||"f"==s)&&(l=Math.max(0,Math.min(20,l)))),s=ka.get(s)||Et;var p=o&&c;return function(n){if(g&&n%1)return"";var t=0>n||0===n&&0>1/n?(n=-n,"-"):u;if(0>f){var d=mo.formatPrefix(n,l);n=d.scale(n),h=d.symbol}else n*=f;n=s(n,l);var v=n.lastIndexOf("."),m=0>v?n:n.substring(0,v),y=0>v?"":xa+n.substring(v+1);!o&&c&&(m=Aa(m));var M=i.length+m.length+y.length+(p?0:t.length),x=a>M?new Array(M=a-M+1).join(e):"";return p&&(m=Aa(x+m)),t+=i,n=m+y,("<"===r?t+n+x:">"===r?x+t+n:"^"===r?x.substring(0,M>>=1)+t+n+x.substring(M):t+(p?n:x+n))+h}};var Ea=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,ka=mo.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=mo.round(n,St(n,t))).toFixed(Math.max(0,Math.min(20,St(n*(1+1e-15),t))))}}),Aa=dt;if(_a){var Na=_a.length;Aa=function(n){for(var t=n.length,e=[],r=0,u=_a[0];t>0&&u>0;)e.push(n.substring(t-=u,t+u)),u=_a[r=(r+1)%Na];return e.reverse().join(ba)}}mo.geo={},kt.prototype={s:0,t:0,add:function(n){At(n,this.t,Ta),At(Ta.s,this.s,this),this.s?this.t+=Ta.t:this.s=Ta.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var Ta=new kt;mo.geo.stream=function(n,t){n&&qa.hasOwnProperty(n.type)?qa[n.type](n,t):Nt(n,t)};var qa={Feature:function(n,t){Nt(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++rn?4*Bo+n:n,ja.lineStart=ja.lineEnd=ja.point=c}};mo.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=Ct([t*Go,e*Go]);if(m){var u=jt(m,r),i=[u[1],-u[0],0],o=jt(i,u);Ft(o),o=Pt(o);var c=t-p,l=c>0?1:-1,d=o[0]*Ko*l,v=Math.abs(c)>180;if(v^(d>l*p&&l*t>d)){var y=o[1]*Ko;y>g&&(g=y)}else if(d=(d+360)%360-180,v^(d>l*p&&l*t>d)){var y=-o[1]*Ko;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);v?p>t?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){b.point=t}function r(){x[0]=s,x[1]=h,b.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=Math.abs(r)>180?r+(r>0?360:-360):r}else d=n,v=e;ja.point(n,e),t(n,e)}function i(){ja.lineStart()}function o(){u(d,v),ja.lineEnd(),Math.abs(y)>Wo&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function l(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nDa?(s=-(h=180),f=-(g=90)):y>Wo?g=90:-Wo>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],mo.geo.stream(n,b);var t=M.length;if(t){M.sort(c);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],l(e[0],u)||l(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,s=e[0],h=u[1])}return M=x=null,1/0===s||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[s,f],[h,g]]}}(),mo.geo.centroid=function(n){La=Ha=Fa=Pa=Oa=Ra=Ya=Ia=Ua=Za=Va=0,mo.geo.stream(n,Xa);var t=Ua,e=Za,r=Va,u=t*t+e*e+r*r;return Jo>u&&(t=Ra,e=Ya,r=Ia,Wo>Ha&&(t=Fa,e=Pa,r=Oa),u=t*t+e*e+r*r,Jo>u)?[0/0,0/0]:[Math.atan2(e,t)*Ko,O(r/Math.sqrt(u))*Ko]};var La,Ha,Fa,Pa,Oa,Ra,Ya,Ia,Ua,Za,Va,Xa={sphere:c,point:Rt,lineStart:It,lineEnd:Ut,polygonStart:function(){Xa.lineStart=Zt},polygonEnd:function(){Xa.lineStart=It}},$a=Bt(Vt,Qt,te,ee),Ba=[-Bo,0],Wa=1e9;mo.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=ue(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(mo.geo.conicEqualArea=function(){return ae(ce)}).raw=ce,mo.geo.albers=function(){return mo.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},mo.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=mo.geo.albers(),o=mo.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=mo.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var l=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*l,f-.238*l],[s+.455*l,f+.238*l]]).stream(c).point,r=o.translate([s-.307*l,f+.201*l]).clipExtent([[s-.425*l+Wo,f+.12*l+Wo],[s-.214*l-Wo,f+.234*l-Wo]]).stream(c).point,u=a.translate([s-.205*l,f+.212*l]).clipExtent([[s-.214*l+Wo,f+.166*l+Wo],[s-.115*l-Wo,f+.234*l-Wo]]).stream(c).point,n},n.scale(1070)};var Ja,Ga,Ka,Qa,nc,tc,ec={point:c,lineStart:c,lineEnd:c,polygonStart:function(){Ga=0,ec.lineStart=le},polygonEnd:function(){ec.lineStart=ec.lineEnd=ec.point=c,Ja+=Math.abs(Ga/2)}},rc={point:se,lineStart:c,lineEnd:c,polygonStart:c,polygonEnd:c},uc={point:ge,lineStart:pe,lineEnd:de,polygonStart:function(){uc.lineStart=ve},polygonEnd:function(){uc.point=ge,uc.lineStart=pe,uc.lineEnd=de}};mo.geo.transform=function(n){return{stream:function(t){var e=new Me(t);for(var r in n)e[r]=n[r];return e}}},Me.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},mo.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),mo.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return Ja=0,mo.geo.stream(n,u(ec)),Ja},n.centroid=function(n){return Fa=Pa=Oa=Ra=Ya=Ia=Ua=Za=Va=0,mo.geo.stream(n,u(uc)),Va?[Ua/Va,Za/Va]:Ia?[Ra/Ia,Ya/Ia]:Oa?[Fa/Oa,Pa/Oa]:[0/0,0/0]},n.bounds=function(n){return nc=tc=-(Ka=Qa=1/0),mo.geo.stream(n,u(rc)),[[Ka,Qa],[nc,tc]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||xe(n):dt,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new fe:new me(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(mo.geo.albersUsa()).context(null)},mo.geo.projection=be,mo.geo.projectionMutator=_e,(mo.geo.equirectangular=function(){return be(Se)}).raw=Se.invert=Se,mo.geo.rotation=function(n){function t(t){return t=n(t[0]*Go,t[1]*Go),t[0]*=Ko,t[1]*=Ko,t}return n=Ee(n[0]%360*Go,n[1]*Go,n.length>2?n[2]*Go:0),t.invert=function(t){return t=n.invert(t[0]*Go,t[1]*Go),t[0]*=Ko,t[1]*=Ko,t},t},mo.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=Ee(-n[0]*Go,-n[1]*Go,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ko,n[1]*=Ko}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=Te((t=+r)*Go,u*Go),n):t},n.precision=function(r){return arguments.length?(e=Te(t*Go,(u=+r)*Go),n):u},n.angle(90)},mo.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Go,u=n[1]*Go,i=t[1]*Go,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),l=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=l*s-c*f*a)*e),c*s+l*f*a)},mo.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return mo.range(Math.ceil(i/v)*v,u,v).map(h).concat(mo.range(Math.ceil(l/m)*m,c,m).map(g)).concat(mo.range(Math.ceil(r/p)*p,e,p).filter(function(n){return Math.abs(n%v)>Wo +}).map(s)).concat(mo.range(Math.ceil(a/d)*d,o,d).filter(function(n){return Math.abs(n%m)>Wo}).map(f))}var e,r,u,i,o,a,c,l,s,f,h,g,p=10,d=p,v=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(l).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],l=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),l>c&&(t=l,l=c,c=t),n.precision(y)):[[i,l],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(v=+t[0],m=+t[1],n):[v,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],d=+t[1],n):[p,d]},n.precision=function(t){return arguments.length?(y=+t,s=ze(a,o,90),f=Ce(r,e,y),h=ze(l,c,90),g=Ce(i,u,y),n):y},n.majorExtent([[-180,-90+Wo],[180,90-Wo]]).minorExtent([[-180,-80-Wo],[180,80+Wo]])},mo.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=De,u=je;return n.distance=function(){return mo.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},mo.geo.interpolate=function(n,t){return Le(n[0]*Go,n[1]*Go,t[0]*Go,t[1]*Go)},mo.geo.length=function(n){return ic=0,mo.geo.stream(n,oc),ic};var ic,oc={sphere:c,point:c,lineStart:He,lineEnd:c,polygonStart:c,polygonEnd:c},ac=Fe(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(mo.geo.azimuthalEqualArea=function(){return be(ac)}).raw=ac;var cc=Fe(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},dt);(mo.geo.azimuthalEquidistant=function(){return be(cc)}).raw=cc,(mo.geo.conicConformal=function(){return ae(Pe)}).raw=Pe,(mo.geo.conicEquidistant=function(){return ae(Oe)}).raw=Oe;var lc=Fe(function(n){return 1/n},Math.atan);(mo.geo.gnomonic=function(){return be(lc)}).raw=lc,Re.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Bo/2]},(mo.geo.mercator=function(){return Ye(Re)}).raw=Re;var sc=Fe(function(){return 1},Math.asin);(mo.geo.orthographic=function(){return be(sc)}).raw=sc;var fc=Fe(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(mo.geo.stereographic=function(){return be(fc)}).raw=fc,Ie.invert=function(n,t){return[Math.atan2(R(n),Math.cos(t)),O(Math.sin(t)/Y(n))]},(mo.geo.transverseMercator=function(){return Ye(Ie)}).raw=Ie,mo.geom={},mo.svg={},mo.svg.line=function(){return Ue(dt)};var hc=mo.map({linear:Xe,"linear-closed":$e,step:Be,"step-before":We,"step-after":Je,basis:er,"basis-open":rr,"basis-closed":ur,bundle:ir,cardinal:Qe,"cardinal-open":Ge,"cardinal-closed":Ke,monotone:fr});hc.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var gc=[0,2/3,1/3,0],pc=[0,1/3,2/3,0],dc=[0,1/6,2/3,1/6];mo.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u,i,o,a,c,l,s,f,h,g,p,d=pt(e),v=pt(r),m=n.length,y=m-1,M=[],x=[],b=0;if(d===Ze&&r===Ve)t=n;else for(i=0,t=[];m>i;++i)t.push([+d.call(this,u=n[i],i),+v.call(this,u,i)]);for(i=1;m>i;++i)(t[i][1]i;++i)i!==b&&(c=t[i][1]-t[b][1],a=t[i][0]-t[b][0],M.push({angle:Math.atan2(c,a),index:i}));for(M.sort(function(n,t){return n.angle-t.angle}),g=M[0].angle,h=M[0].index,f=0,i=1;y>i;++i){if(o=M[i].index,g==M[i].angle){if(a=t[h][0]-t[b][0],c=t[h][1]-t[b][1],l=t[o][0]-t[b][0],s=t[o][1]-t[b][1],a*a+c*c>=l*l+s*s){M[i].index=-1;continue}M[f].index=-1}g=M[i].angle,f=i,h=o}for(x.push(b),i=0,o=0;2>i;++o)M[o].index>-1&&(x.push(M[o].index),i++);for(p=x.length;y>o;++o)if(!(M[o].index<0)){for(;!hr(x[p-2],x[p-1],M[o].index,t);)--p;x[p++]=M[o].index}var _=[];for(i=p-1;i>=0;--i)_.push(n[x[i]]);return _}var e=Ze,r=Ve;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},mo.geom.polygon=function(n){return Lo(n,vc),n};var vc=mo.geom.polygon.prototype=[];vc.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],u=0;++ta;a++)e.push([u,t[a],t[a+1]])}),e},mo.geom.voronoi=function(n){function t(n){var t,i,o,a=n.map(function(){return[]}),c=pt(e),l=pt(r),s=n.length,f=1e6;if(c===Ze&&l===Ve)t=n;else for(t=new Array(s),o=0;s>o;++o)t[o]=[+c.call(this,i=n[o],o),+l.call(this,i,o)];if(vr(t,function(n){var t,e,r,u,i,o;1===n.a&&n.b>=0?(t=n.ep.r,e=n.ep.l):(t=n.ep.l,e=n.ep.r),1===n.a?(i=t?t.y:-f,r=n.c-n.b*i,o=e?e.y:f,u=n.c-n.b*o):(r=t?t.x:-f,i=n.c-n.a*r,u=e?e.x:f,o=n.c-n.a*u);var c=[r,i],l=[u,o];a[n.region.l.index].push(c,l),a[n.region.r.index].push(c,l)}),a=a.map(function(n,e){var r=t[e][0],u=t[e][1],i=n.map(function(n){return Math.atan2(n[0]-r,n[1]-u)}),o=mo.range(n.length).sort(function(n,t){return i[n]-i[t]});return o.filter(function(n,t){return!t||i[n]-i[o[t-1]]>Wo}).map(function(t){return n[t]})}),a.forEach(function(n,e){var r=n.length;if(!r)return n.push([-f,-f],[-f,f],[f,f],[f,-f]);if(!(r>2)){var u=t[e],i=n[0],o=n[1],a=u[0],c=u[1],l=i[0],s=i[1],h=o[0],g=o[1],p=Math.abs(h-l),d=g-s;if(Math.abs(d)c?-f:f;n.push([-f,v],[f,v])}else if(Wo>p){var m=l>a?-f:f;n.push([m,-f],[m,f])}else{var v=(l-a)*(g-s)>(h-l)*(s-c)?f:-f,y=Math.abs(d)-p;Math.abs(y)d?v:-v,v]):(y>0&&(v*=-1),n.push([-f,v],[f,v]))}}}),u)for(o=0;s>o;++o)u.clip(a[o]);for(o=0;s>o;++o)a[o].point=n[o];return a}var e=Ze,r=Ve,u=null;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.clipExtent=function(n){if(!arguments.length)return u&&[u[0],u[2]];if(null==n)u=null;else{var e=+n[0][0],r=+n[0][1],i=+n[1][0],o=+n[1][1];u=mo.geom.polygon([[e,r],[e,o],[i,o],[i,r]])}return t},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):u&&u[2]},t.links=function(n){var t,u,i,o=n.map(function(){return[]}),a=[],c=pt(e),l=pt(r),s=n.length;if(c===Ze&&l===Ve)t=n;else for(t=new Array(s),i=0;s>i;++i)t[i]=[+c.call(this,u=n[i],i),+l.call(this,u,i)];return vr(t,function(t){var e=t.region.l.index,r=t.region.r.index;o[e][r]||(o[e][r]=o[r][e]=!0,a.push({source:n[e],target:n[r]}))}),a},t.triangles=function(n){if(e===Ze&&r===Ve)return mo.geom.delaunay(n);for(var t,u=new Array(c),i=pt(e),o=pt(r),a=-1,c=n.length;++a=l,h=r>=s,g=(h<<1)+f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=Mr()),f?u=l:a=l,h?o=s:c=s,i(n,t,e,r,u,o,a,c)}var s,f,h,g,p,d,v,m,y,M=pt(a),x=pt(c);if(null!=t)d=t,v=e,m=r,y=u;else if(m=y=-(d=v=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)s=n[g],s.xm&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var b=+M(s=n[g],g),_=+x(s,g);d>b&&(d=b),v>_&&(v=_),b>m&&(m=b),_>y&&(y=_),f.push(b),h.push(_)}var w=m-d,S=y-v;w>S?y=v+w:m=d+S;var E=Mr();if(E.add=function(n){i(E,n,+M(n,++g),+x(n,g),d,v,m,y)},E.visit=function(n){xr(n,E,d,v,m,y)},g=-1,null==t){for(;++g=0?n.substring(0,t):n,r=t>=0?n.substring(t+1):"in";return e=xc.get(e)||Mc,r=bc.get(r)||dt,Ar(r(e.apply(null,Array.prototype.slice.call(arguments,1))))},mo.interpolateHcl=Rr,mo.interpolateHsl=Yr,mo.interpolateLab=Ir,mo.interpolateRound=Ur,mo.transform=function(n){var t=xo.createElementNS(mo.ns.prefix.svg,"g");return(mo.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Zr(e?e.matrix:_c)})(n)},Zr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var _c={a:1,b:0,c:0,d:1,e:0,f:0};mo.interpolateTransform=Br,mo.layout={},mo.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e(u-e)*a){var c=t.charge*a*a;return n.px-=i*c,n.py-=o*c,!0}if(t.point&&isFinite(a)){var c=t.pointCharge*a*a;n.px-=i*c,n.py-=o*c}}return!t.charge}}function t(n){n.px=mo.event.x,n.py=mo.event.y,a.resume()}var e,r,u,i,o,a={},c=mo.dispatch("start","tick","end"),l=[1,1],s=.9,f=wc,h=Sc,g=-30,p=.1,d=.8,v=[],m=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,d,y,M,x,b=v.length,_=m.length;for(e=0;_>e;++e)a=m[e],f=a.source,h=a.target,M=h.x-f.x,x=h.y-f.y,(d=M*M+x*x)&&(d=r*i[e]*((d=Math.sqrt(d))-u[e])/d,M*=d,x*=d,h.x-=M*(y=f.weight/(h.weight+f.weight)),h.y-=x*y,f.x+=M*(y=1-y),f.y+=x*y);if((y=r*p)&&(M=l[0]/2,x=l[1]/2,e=-1,y))for(;++e0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),mo.timer(a.tick)),a):r},a.start=function(){function n(n,r){for(var u,i=t(e),o=-1,a=i.length;++or;++r)c[r]=[];for(r=0;d>r;++r){var n=m[r];c[n.source.index].push(n.target),c[n.target.index].push(n.source)}}return c[e]}var e,r,c,s,p=v.length,d=m.length,y=l[0],M=l[1];for(e=0;p>e;++e)(s=v[e]).index=e,s.weight=0;for(e=0;d>e;++e)s=m[e],"number"==typeof s.source&&(s.source=v[s.source]),"number"==typeof s.target&&(s.target=v[s.target]),++s.source.weight,++s.target.weight;for(e=0;p>e;++e)s=v[e],isNaN(s.x)&&(s.x=n("x",y)),isNaN(s.y)&&(s.y=n("y",M)),isNaN(s.px)&&(s.px=s.x),isNaN(s.py)&&(s.py=s.y);if(u=[],"function"==typeof f)for(e=0;d>e;++e)u[e]=+f.call(this,m[e],e);else for(e=0;d>e;++e)u[e]=f;if(i=[],"function"==typeof h)for(e=0;d>e;++e)i[e]=+h.call(this,m[e],e);else for(e=0;d>e;++e)i[e]=h;if(o=[],"function"==typeof g)for(e=0;p>e;++e)o[e]=+g.call(this,v[e],e);else for(e=0;p>e;++e)o[e]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=mo.behavior.drag().origin(dt).on("dragstart.force",nu).on("drag.force",t).on("dragend.force",tu)),arguments.length?(this.on("mouseover.force",eu).on("mouseout.force",ru).call(e),void 0):e},mo.rebind(a,c,"on")};var wc=20,Sc=1;mo.layout.hierarchy=function(){function n(t,o,a){var c=u.call(e,t,o);if(t.depth=o,a.push(t),c&&(l=c.length)){for(var l,s,f=-1,h=t.children=[],g=0,p=o+1;++fg;++g)for(u.call(n,l[0][g],p=d[g],s[0][g][1]),h=1;v>h;++h)u.call(n,l[h][g],p+=s[h-1][g][1],s[h][g][1]);return a}var t=dt,e=gu,r=pu,u=hu,i=su,o=fu;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:kc.get(t)||gu,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:Ac.get(t)||pu,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var kc=mo.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(du),i=n.map(vu),o=mo.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,l=[],s=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],l.push(e)):(c+=i[e],s.push(e));return s.reverse().concat(l)},reverse:function(n){return mo.range(n.length).reverse()},"default":gu}),Ac=mo.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,l,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=l=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];s>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,l>c&&(l=c)}for(e=0;h>e;++e)g[e]-=l;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:pu});mo.layout.histogram=function(){function n(n,i){for(var o,a,c=[],l=n.map(e,this),s=r.call(this,l,i),f=u.call(this,s,l,i),i=-1,h=l.length,g=f.length-1,p=t?1:1/h;++i0)for(i=-1;++i=s[0]&&a<=s[1]&&(o=c[mo.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=xu,u=yu;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=pt(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return Mu(n,t)}:pt(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},mo.layout.tree=function(){function n(n,i){function o(n,t){var r=n.children,u=n._tree;if(r&&(i=r.length)){for(var i,a,l,s=r[0],f=s,h=-1;++h0&&(qu(zu(a,n,r),n,u),l+=u,s+=u),f+=a._tree.mod,l+=i._tree.mod,h+=c._tree.mod,s+=o._tree.mod;a&&!wu(o)&&(o._tree.thread=a,o._tree.mod+=f-s),i&&!_u(c)&&(c._tree.thread=i,c._tree.mod+=l-h,r=n)}return r}var l=t.call(this,n,i),s=l[0];Nu(s,function(n,t){n._tree={ancestor:n,prelim:0,mod:0,change:0,shift:0,number:t?t._tree.number+1:0}}),o(s),a(s,-s._tree.prelim);var f=Su(s,ku),h=Su(s,Eu),g=Su(s,Au),p=f.x-e(f,h)/2,d=h.x+e(h,f)/2,v=g.depth||1;return Nu(s,u?function(n){n.x*=r[0],n.y=n.depth*r[1],delete n._tree}:function(n){n.x=(n.x-p)/(d-p)*r[0],n.y=n.depth/v*r[1],delete n._tree}),l}var t=mo.layout.hierarchy().sort(null).value(null),e=bu,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},iu(n,t)},mo.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],l=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,Nu(a,function(n){n.r=+s(n.value)}),Nu(a,Hu),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/l))/2;Nu(a,function(n){n.r+=f}),Nu(a,Hu),Nu(a,function(n){n.r-=f})}return Ou(a,c/2,l/2,t?1:1/Math.max(2*a.r/c,2*a.r/l)),o}var t,e=mo.layout.hierarchy().sort(Cu),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},iu(n,e)},mo.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],l=0;Nu(c,function(n){var t=n.children;t&&t.length?(n.x=Iu(t),n.y=Yu(t)):(n.x=o?l+=e(n,o):0,n.y=0,o=n)});var s=Uu(c),f=Zu(c),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return Nu(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=mo.layout.hierarchy().sort(null).value(null),e=bu,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},iu(n,t)},mo.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++ut?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,l=f(e),s=[],h=i.slice(),p=1/0,d="slice"===g?l.dx:"dice"===g?l.dy:"slice-dice"===g?1&e.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(h,l.dx*l.dy/e.value),s.area=0;(c=h.length)>0;)s.push(o=h[c-1]),s.area+=o.area,"squarify"!==g||(a=r(s,d))<=p?(h.pop(),p=a):(s.area-=s.pop().area,u(s,d,l,!1),d=Math.min(l.dx,l.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,d,l,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++oe&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,l=e.y,s=t?c(n.area/t):0;if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++ie.dx)&&(s=e.dx);++ie&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=mo.random.normal.apply(mo,arguments);return function(){return Math.exp(n())}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t/n}}},mo.scale={};var Nc={floor:dt,ceil:dt};mo.scale.linear=function(){return Qu([0,1],[0,1],Er,!1)},mo.scale.log=function(){return ii(mo.scale.linear().domain([0,1]),10,!0,[1,10])};var Tc=mo.format(".0e"),qc={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};mo.scale.pow=function(){return oi(mo.scale.linear(),1,[0,1])},mo.scale.sqrt=function(){return mo.scale.pow().exponent(.5)},mo.scale.ordinal=function(){return ci([],{t:"range",a:[[]]})},mo.scale.category10=function(){return mo.scale.ordinal().range(zc)},mo.scale.category20=function(){return mo.scale.ordinal().range(Cc)},mo.scale.category20b=function(){return mo.scale.ordinal().range(Dc)},mo.scale.category20c=function(){return mo.scale.ordinal().range(jc)};var zc=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(it),Cc=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(it),Dc=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(it),jc=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(it);mo.scale.quantile=function(){return li([],[])},mo.scale.quantize=function(){return si(0,1,[0,1])},mo.scale.threshold=function(){return fi([.5],[0,1])},mo.scale.identity=function(){return hi([0,1])},mo.svg.arc=function(){function n(){var n=t.apply(this,arguments),i=e.apply(this,arguments),o=r.apply(this,arguments)+Lc,a=u.apply(this,arguments)+Lc,c=(o>a&&(c=o,o=a,a=c),a-o),l=Bo>c?"0":"1",s=Math.cos(o),f=Math.sin(o),h=Math.cos(a),g=Math.sin(a);return c>=Hc?n?"M0,"+i+"A"+i+","+i+" 0 1,1 0,"+-i+"A"+i+","+i+" 0 1,1 0,"+i+"M0,"+n+"A"+n+","+n+" 0 1,0 0,"+-n+"A"+n+","+n+" 0 1,0 0,"+n+"Z":"M0,"+i+"A"+i+","+i+" 0 1,1 0,"+-i+"A"+i+","+i+" 0 1,1 0,"+i+"Z":n?"M"+i*s+","+i*f+"A"+i+","+i+" 0 "+l+",1 "+i*h+","+i*g+"L"+n*h+","+n*g+"A"+n+","+n+" 0 "+l+",0 "+n*s+","+n*f+"Z":"M"+i*s+","+i*f+"A"+i+","+i+" 0 "+l+",1 "+i*h+","+i*g+"L0,0"+"Z"}var t=gi,e=pi,r=di,u=vi;return n.innerRadius=function(e){return arguments.length?(t=pt(e),n):t},n.outerRadius=function(t){return arguments.length?(e=pt(t),n):e},n.startAngle=function(t){return arguments.length?(r=pt(t),n):r},n.endAngle=function(t){return arguments.length?(u=pt(t),n):u},n.centroid=function(){var n=(t.apply(this,arguments)+e.apply(this,arguments))/2,i=(r.apply(this,arguments)+u.apply(this,arguments))/2+Lc;return[Math.cos(i)*n,Math.sin(i)*n]},n};var Lc=-Bo/2,Hc=2*Bo-1e-6;mo.svg.line.radial=function(){var n=Ue(mi);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},We.reverse=Je,Je.reverse=We,mo.svg.area=function(){return yi(dt)},mo.svg.area.radial=function(){var n=yi(mi);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},mo.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),l=t(this,o,n,a);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,l)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+u(l.r,l.p1,c.r,c.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)+Lc,s=l.call(n,u,r)+Lc;return{r:i,a0:o,a1:s,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Bo)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=De,o=je,a=Mi,c=di,l=vi;return n.radius=function(t){return arguments.length?(a=pt(t),n):a},n.source=function(t){return arguments.length?(i=pt(t),n):i},n.target=function(t){return arguments.length?(o=pt(t),n):o},n.startAngle=function(t){return arguments.length?(c=pt(t),n):c},n.endAngle=function(t){return arguments.length?(l=pt(t),n):l},n},mo.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var t=De,e=je,r=xi;return n.source=function(e){return arguments.length?(t=pt(e),n):t},n.target=function(t){return arguments.length?(e=pt(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},mo.svg.diagonal.radial=function(){var n=mo.svg.diagonal(),t=xi,e=n.projection;return n.projection=function(n){return arguments.length?e(bi(t=n)):t},n},mo.svg.symbol=function(){function n(n,r){return(Fc.get(t.call(this,n,r))||Si)(e.call(this,n,r))}var t=wi,e=_i;return n.type=function(e){return arguments.length?(t=pt(e),n):t},n.size=function(t){return arguments.length?(e=pt(t),n):e},n};var Fc=mo.map({circle:Si,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Yc)),e=t*Yc;return"M0,"+-t+"L"+e+",0"+" 0,"+t+" "+-e+",0"+"Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Rc),e=t*Rc/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Rc),e=t*Rc/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});mo.svg.symbolTypes=Fc.keys();var Pc,Oc,Rc=Math.sqrt(3),Yc=Math.tan(30*Go),Ic=[],Uc=0;Ic.call=Ro.call,Ic.empty=Ro.empty,Ic.node=Ro.node,Ic.size=Ro.size,mo.transition=function(n){return arguments.length?Pc?n.transition():n:Uo.transition()},mo.transition.prototype=Ic,Ic.select=function(n){var t,e,r,u=this.id,i=[];n=d(n);for(var o=-1,a=this.length;++oi;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a)&&t.push(r)}return Ei(u,this.id)},Ic.tween=function(n,t){var e=this.id;return arguments.length<2?this.node().__transition__[e].tween.get(n):N(this,null==t?function(t){t.__transition__[e].tween.remove(n)}:function(r){r.__transition__[e].tween.set(n,t)})},Ic.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n)) +})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Br:Er,a=mo.ns.qualify(n);return ki(this,"attr."+n,t,a.local?i:u)},Ic.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=mo.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Ic.style=function(n,t,e){function r(){this.style.removeProperty(n)}function u(t){return null==t?r:(t+="",function(){var r,u=_o.getComputedStyle(this,null).getPropertyValue(n);return u!==t&&(r=Er(u,t),function(t){this.style.setProperty(n,r(t),e)})})}var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(t="");for(e in n)this.style(e,n[e],t);return this}e=""}return ki(this,"style."+n,t,u)},Ic.styleTween=function(n,t,e){function r(r,u){var i=t.call(this,r,u,_o.getComputedStyle(this,null).getPropertyValue(n));return i&&function(t){this.style.setProperty(n,i(t),e)}}return arguments.length<3&&(e=""),this.tween("style."+n,r)},Ic.text=function(n){return ki(this,"text",n,Ai)},Ic.remove=function(){return this.each("end.transition",function(){var n;this.__transition__.count<2&&(n=this.parentNode)&&n.removeChild(this)})},Ic.ease=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].ease:("function"!=typeof n&&(n=mo.ease.apply(mo,arguments)),N(this,function(e){e.__transition__[t].ease=n}))},Ic.delay=function(n){var t=this.id;return N(this,"function"==typeof n?function(e,r,u){e.__transition__[t].delay=+n.call(e,e.__data__,r,u)}:(n=+n,function(e){e.__transition__[t].delay=n}))},Ic.duration=function(n){var t=this.id;return N(this,"function"==typeof n?function(e,r,u){e.__transition__[t].duration=Math.max(1,n.call(e,e.__data__,r,u))}:(n=Math.max(1,n),function(e){e.__transition__[t].duration=n}))},Ic.each=function(n,t){var e=this.id;if(arguments.length<2){var r=Oc,u=Pc;Pc=e,N(this,function(t,r,u){Oc=t.__transition__[e],n.call(t,t.__data__,r,u)}),Oc=r,Pc=u}else N(this,function(r){var u=r.__transition__[e];(u.event||(u.event=mo.dispatch("start","end"))).on(n,t)});return this},Ic.transition=function(){for(var n,t,e,r,u=this.id,i=++Uc,o=[],a=0,c=this.length;c>a;a++){o.push(n=[]);for(var t=this[a],l=0,s=t.length;s>l;l++)(e=t[l])&&(r=Object.create(e.__transition__[u]),r.delay+=r.duration,Ni(e,l,i,r)),n.push(e)}return Ei(o,i)},mo.svg.axis=function(){function n(n){n.each(function(){var n,l=mo.select(this),s=null==c?e.ticks?e.ticks.apply(e,a):e.domain():c,f=null==t?e.tickFormat?e.tickFormat.apply(e,a):dt:t,h=l.selectAll(".tick").data(s,dt),g=h.enter().insert("g",".domain").attr("class","tick").style("opacity",1e-6),p=mo.transition(h.exit()).style("opacity",1e-6).remove(),d=mo.transition(h).style("opacity",1),v=Bu(e),m=l.selectAll(".domain").data([0]),y=(m.enter().append("path").attr("class","domain"),mo.transition(m)),M=e.copy(),x=this.__chart__||M;this.__chart__=M,g.append("line"),g.append("text");var b=g.select("line"),_=d.select("line"),w=h.select("text").text(f),S=g.select("text"),E=d.select("text");switch(r){case"bottom":n=Ti,b.attr("y2",u),S.attr("y",Math.max(u,0)+o),_.attr("x2",0).attr("y2",u),E.attr("x",0).attr("y",Math.max(u,0)+o),w.attr("dy",".71em").style("text-anchor","middle"),y.attr("d","M"+v[0]+","+i+"V0H"+v[1]+"V"+i);break;case"top":n=Ti,b.attr("y2",-u),S.attr("y",-(Math.max(u,0)+o)),_.attr("x2",0).attr("y2",-u),E.attr("x",0).attr("y",-(Math.max(u,0)+o)),w.attr("dy","0em").style("text-anchor","middle"),y.attr("d","M"+v[0]+","+-i+"V0H"+v[1]+"V"+-i);break;case"left":n=qi,b.attr("x2",-u),S.attr("x",-(Math.max(u,0)+o)),_.attr("x2",-u).attr("y2",0),E.attr("x",-(Math.max(u,0)+o)).attr("y",0),w.attr("dy",".32em").style("text-anchor","end"),y.attr("d","M"+-i+","+v[0]+"H0V"+v[1]+"H"+-i);break;case"right":n=qi,b.attr("x2",u),S.attr("x",Math.max(u,0)+o),_.attr("x2",u).attr("y2",0),E.attr("x",Math.max(u,0)+o).attr("y",0),w.attr("dy",".32em").style("text-anchor","start"),y.attr("d","M"+i+","+v[0]+"H0V"+v[1]+"H"+i)}if(e.rangeBand){var k=M.rangeBand()/2,A=function(n){return M(n)+k};g.call(n,A),d.call(n,A)}else g.call(n,x),d.call(n,M),p.call(n,M)})}var t,e=mo.scale.linear(),r=Zc,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Vc?t+"":Zc,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Zc="bottom",Vc={top:1,right:1,bottom:1,left:1};mo.svg.brush=function(){function n(i){i.each(function(){var i=mo.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=i.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),i.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=i.selectAll(".resize").data(v,dt);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Xc[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var s,f=mo.transition(i),h=mo.transition(o);c&&(s=Bu(c),h.attr("x",s[0]).attr("width",s[1]-s[0]),e(f)),l&&(s=Bu(l),h.attr("y",s[0]).attr("height",s[1]-s[0]),r(f)),t(f)})}function t(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function e(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function r(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function u(){function u(){32==mo.event.keyCode&&(N||(M=null,q[0]-=s[1],q[1]-=h[1],N=2),f())}function g(){32==mo.event.keyCode&&2==N&&(q[0]+=s[1],q[1]+=h[1],N=0,f())}function v(){var n=mo.mouse(b),u=!1;x&&(n[0]+=x[0],n[1]+=x[1]),N||(mo.event.altKey?(M||(M=[(s[0]+s[1])/2,(h[0]+h[1])/2]),q[0]=s[+(n[0]f?(u=r,r=f):u=f),g[0]!=r||g[1]!=u?(e?o=null:i=null,g[0]=r,g[1]=u,!0):void 0}function y(){v(),S.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),mo.select("body").style("cursor",null),z.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),T(),w({type:"brushend"})}var M,x,b=this,_=mo.select(mo.event.target),w=a.of(b,arguments),S=mo.select(b),E=_.datum(),k=!/^(n|s)$/.test(E)&&c,A=!/^(e|w)$/.test(E)&&l,N=_.classed("extent"),T=L(),q=mo.mouse(b),z=mo.select(_o).on("keydown.brush",u).on("keyup.brush",g);if(mo.event.changedTouches?z.on("touchmove.brush",v).on("touchend.brush",y):z.on("mousemove.brush",v).on("mouseup.brush",y),S.interrupt().selectAll("*").interrupt(),N)q[0]=s[0]-q[0],q[1]=h[0]-q[1];else if(E){var C=+/w$/.test(E),D=+/^n/.test(E);x=[s[1-C]-q[0],h[1-D]-q[1]],q[0]=s[C],q[1]=h[D]}else mo.event.altKey&&(M=q.slice());S.style("pointer-events","none").selectAll(".resize").style("display",null),mo.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),v()}var i,o,a=g(n,"brushstart","brush","brushend"),c=null,l=null,s=[0,0],h=[0,0],p=!0,d=!0,v=$c[0];return n.event=function(n){n.each(function(){var n=a.of(this,arguments),t={x:s,y:h,i:i,j:o},e=this.__chart__||t;this.__chart__=t,Pc?mo.select(this).transition().each("start.brush",function(){i=e.i,o=e.j,s=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=kr(s,t.x),r=kr(h,t.y);return i=o=null,function(u){s=t.x=e(u),h=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){i=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=$c[!c<<1|!l],n):c},n.y=function(t){return arguments.length?(l=t,v=$c[!c<<1|!l],n):l},n.clamp=function(t){return arguments.length?(c&&l?(p=!!t[0],d=!!t[1]):c?p=!!t:l&&(d=!!t),n):c&&l?[p,d]:c?p:l?d:null},n.extent=function(t){var e,r,u,a,f;return arguments.length?(c&&(e=t[0],r=t[1],l&&(e=e[0],r=r[0]),i=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(f=e,e=r,r=f),(e!=s[0]||r!=s[1])&&(s=[e,r])),l&&(u=t[0],a=t[1],c&&(u=u[1],a=a[1]),o=[u,a],l.invert&&(u=l(u),a=l(a)),u>a&&(f=u,u=a,a=f),(u!=h[0]||a!=h[1])&&(h=[u,a])),n):(c&&(i?(e=i[0],r=i[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(f=e,e=r,r=f))),l&&(o?(u=o[0],a=o[1]):(u=h[0],a=h[1],l.invert&&(u=l.invert(u),a=l.invert(a)),u>a&&(f=u,u=a,a=f))),c&&l?[[e,u],[r,a]]:c?[e,r]:l&&[u,a])},n.clear=function(){return n.empty()||(s=[0,0],h=[0,0],i=o=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!l&&h[0]==h[1]},mo.rebind(n,a,"on")};var Xc={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},$c=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Bc=mo.time={},Wc=Date,Jc=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];zi.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){Gc.setUTCDate.apply(this._,arguments)},setDay:function(){Gc.setUTCDay.apply(this._,arguments)},setFullYear:function(){Gc.setUTCFullYear.apply(this._,arguments)},setHours:function(){Gc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){Gc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){Gc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){Gc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){Gc.setUTCSeconds.apply(this._,arguments)},setTime:function(){Gc.setTime.apply(this._,arguments)}};var Gc=Date.prototype,Kc="%a %b %e %X %Y",Qc="%m/%d/%Y",nl="%H:%M:%S",tl=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],el=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],rl=["January","February","March","April","May","June","July","August","September","October","November","December"],ul=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];Bc.year=Ci(function(n){return n=Bc.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),Bc.years=Bc.year.range,Bc.years.utc=Bc.year.utc.range,Bc.day=Ci(function(n){var t=new Wc(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),Bc.days=Bc.day.range,Bc.days.utc=Bc.day.utc.range,Bc.dayOfYear=function(n){var t=Bc.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},Jc.forEach(function(n,t){n=n.toLowerCase(),t=7-t;var e=Bc[n]=Ci(function(n){return(n=Bc.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=Bc.year(n).getDay();return Math.floor((Bc.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});Bc[n+"s"]=e.range,Bc[n+"s"].utc=e.utc.range,Bc[n+"OfYear"]=function(n){var e=Bc.year(n).getDay();return Math.floor((Bc.dayOfYear(n)+(e+t)%7)/7)}}),Bc.week=Bc.sunday,Bc.weeks=Bc.sunday.range,Bc.weeks.utc=Bc.sunday.utc.range,Bc.weekOfYear=Bc.sundayOfYear,Bc.format=ji;var il=Hi(tl),ol=Fi(tl),al=Hi(el),cl=Fi(el),ll=Hi(rl),sl=Fi(rl),fl=Hi(ul),hl=Fi(ul),gl=/^%/,pl={"-":"",_:" ",0:"0"},dl={a:function(n){return el[n.getDay()]},A:function(n){return tl[n.getDay()]},b:function(n){return ul[n.getMonth()]},B:function(n){return rl[n.getMonth()]},c:ji(Kc),d:function(n,t){return Pi(n.getDate(),t,2)},e:function(n,t){return Pi(n.getDate(),t,2)},H:function(n,t){return Pi(n.getHours(),t,2)},I:function(n,t){return Pi(n.getHours()%12||12,t,2)},j:function(n,t){return Pi(1+Bc.dayOfYear(n),t,3)},L:function(n,t){return Pi(n.getMilliseconds(),t,3)},m:function(n,t){return Pi(n.getMonth()+1,t,2)},M:function(n,t){return Pi(n.getMinutes(),t,2)},p:function(n){return n.getHours()>=12?"PM":"AM"},S:function(n,t){return Pi(n.getSeconds(),t,2)},U:function(n,t){return Pi(Bc.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Pi(Bc.mondayOfYear(n),t,2)},x:ji(Qc),X:ji(nl),y:function(n,t){return Pi(n.getFullYear()%100,t,2)},Y:function(n,t){return Pi(n.getFullYear()%1e4,t,4)},Z:ao,"%":function(){return"%"}},vl={a:Oi,A:Ri,b:Zi,B:Vi,c:Xi,d:no,e:no,H:eo,I:eo,j:to,L:io,m:Qi,M:ro,p:oo,S:uo,U:Ii,w:Yi,W:Ui,x:$i,X:Bi,y:Ji,Y:Wi,Z:Gi,"%":co},ml=/^\s*\d+/,yl=mo.map({am:0,pm:1});ji.utc=lo;var Ml=lo("%Y-%m-%dT%H:%M:%S.%LZ");ji.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?so:Ml,so.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},so.toString=Ml.toString,Bc.second=Ci(function(n){return new Wc(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),Bc.seconds=Bc.second.range,Bc.seconds.utc=Bc.second.utc.range,Bc.minute=Ci(function(n){return new Wc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),Bc.minutes=Bc.minute.range,Bc.minutes.utc=Bc.minute.utc.range,Bc.hour=Ci(function(n){var t=n.getTimezoneOffset()/60;return new Wc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),Bc.hours=Bc.hour.range,Bc.hours.utc=Bc.hour.utc.range,Bc.month=Ci(function(n){return n=Bc.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),Bc.months=Bc.month.range,Bc.months.utc=Bc.month.utc.range;var xl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],bl=[[Bc.second,1],[Bc.second,5],[Bc.second,15],[Bc.second,30],[Bc.minute,1],[Bc.minute,5],[Bc.minute,15],[Bc.minute,30],[Bc.hour,1],[Bc.hour,3],[Bc.hour,6],[Bc.hour,12],[Bc.day,1],[Bc.day,2],[Bc.week,1],[Bc.month,1],[Bc.month,3],[Bc.year,1]],_l=[[ji("%Y"),Vt],[ji("%B"),function(n){return n.getMonth()}],[ji("%b %d"),function(n){return 1!=n.getDate()}],[ji("%a %d"),function(n){return n.getDay()&&1!=n.getDate()}],[ji("%I %p"),function(n){return n.getHours()}],[ji("%I:%M"),function(n){return n.getMinutes()}],[ji(":%S"),function(n){return n.getSeconds()}],[ji(".%L"),function(n){return n.getMilliseconds()}]],wl=go(_l);bl.year=Bc.year,Bc.scale=function(){return fo(mo.scale.linear(),bl,wl)};var Sl={range:function(n,t,e){return mo.range(+n,+t,e).map(ho)}},El=bl.map(function(n){return[n[0].utc,n[1]]}),kl=[[lo("%Y"),Vt],[lo("%B"),function(n){return n.getUTCMonth()}],[lo("%b %d"),function(n){return 1!=n.getUTCDate()}],[lo("%a %d"),function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],[lo("%I %p"),function(n){return n.getUTCHours()}],[lo("%I:%M"),function(n){return n.getUTCMinutes()}],[lo(":%S"),function(n){return n.getUTCSeconds()}],[lo(".%L"),function(n){return n.getUTCMilliseconds()}]],Al=go(kl);return El.year=Bc.year.utc,Bc.scale.utc=function(){return fo(mo.scale.linear(),El,Al)},mo.text=vt(function(n){return n.responseText}),mo.json=function(n,t){return mt(n,"application/json",po,t)},mo.html=function(n,t){return mt(n,"text/html",vo,t)},mo.xml=vt(function(n){return n.responseXML}),mo}(); \ No newline at end of file diff --git a/public/lib/images/animated-overlay.gif b/public/lib/images/animated-overlay.gif new file mode 100644 index 0000000..d441f75 Binary files /dev/null and b/public/lib/images/animated-overlay.gif differ diff --git a/public/lib/images/ui-bg_flat_0_aaaaaa_40x100.png b/public/lib/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000..9c012f6 Binary files /dev/null and b/public/lib/images/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/public/lib/images/ui-bg_flat_75_ffffff_40x100.png b/public/lib/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 0000000..a709a5d Binary files /dev/null and b/public/lib/images/ui-bg_flat_75_ffffff_40x100.png differ diff --git a/public/lib/images/ui-bg_glass_55_fbf9ee_1x400.png b/public/lib/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000..ec6a7d5 Binary files /dev/null and b/public/lib/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/public/lib/images/ui-bg_glass_65_ffffff_1x400.png b/public/lib/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000..f8de70a Binary files /dev/null and b/public/lib/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/public/lib/images/ui-bg_glass_75_dadada_1x400.png b/public/lib/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000..3d1dfae Binary files /dev/null and b/public/lib/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/public/lib/images/ui-bg_glass_75_e6e6e6_1x400.png b/public/lib/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000..548004c Binary files /dev/null and b/public/lib/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/public/lib/images/ui-bg_glass_95_fef1ec_1x400.png b/public/lib/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000..71dfda1 Binary files /dev/null and b/public/lib/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/public/lib/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/public/lib/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000..92cbef3 Binary files /dev/null and b/public/lib/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/public/lib/images/ui-icons_222222_256x240.png b/public/lib/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000..c1cb117 Binary files /dev/null and b/public/lib/images/ui-icons_222222_256x240.png differ diff --git a/public/lib/images/ui-icons_2e83ff_256x240.png b/public/lib/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000..84b601b Binary files /dev/null and b/public/lib/images/ui-icons_2e83ff_256x240.png differ diff --git a/public/lib/images/ui-icons_454545_256x240.png b/public/lib/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000..b6db1ac Binary files /dev/null and b/public/lib/images/ui-icons_454545_256x240.png differ diff --git a/public/lib/images/ui-icons_888888_256x240.png b/public/lib/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000..feea0e2 Binary files /dev/null and b/public/lib/images/ui-icons_888888_256x240.png differ diff --git a/public/lib/images/ui-icons_cd0a0a_256x240.png b/public/lib/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000..ed5b6b0 Binary files /dev/null and b/public/lib/images/ui-icons_cd0a0a_256x240.png differ diff --git a/public/lib/jquery-1.10.1.min.js b/public/lib/jquery-1.10.1.min.js new file mode 100644 index 0000000..e407e76 --- /dev/null +++ b/public/lib/jquery-1.10.1.min.js @@ -0,0 +1,6 @@ +/*! jQuery v1.10.1 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery-1.10.1.min.map +*/ +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.1",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=lt(),k=lt(),E=lt(),S=!1,A=function(){return 0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=bt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+xt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return At(e.replace(z,"$1"),t,n,i)}function st(e){return K.test(e+"")}function lt(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function ut(e){return e[b]=!0,e}function ct(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function pt(e,t,n){e=e.split("|");var r,i=e.length,a=n?null:t;while(i--)(r=o.attrHandle[e[i]])&&r!==t||(o.attrHandle[e[i]]=a)}function ft(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:e[t]===!0?t.toLowerCase():null}function dt(e,t){return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function ht(e){return"input"===e.nodeName.toLowerCase()?e.defaultValue:t}function gt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function mt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function yt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function vt(e){return ut(function(t){return t=+t,ut(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.parentWindow;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.frameElement&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ct(function(e){return e.innerHTML="",pt("type|href|height|width",dt,"#"===e.firstChild.getAttribute("href")),pt(B,ft,null==e.getAttribute("disabled")),e.className="i",!e.getAttribute("className")}),r.input=ct(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}),pt("value",ht,r.attributes&&r.input),r.getElementsByTagName=ct(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ct(function(e){return e.innerHTML="
",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ct(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=st(n.querySelectorAll))&&(ct(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ct(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=st(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ct(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=st(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},r.sortDetached=ct(function(e){return 1&e.compareDocumentPosition(n.createElement("div"))}),A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return gt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?gt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:ut,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=bt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?ut(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ut(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?ut(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ut(function(e){return function(t){return at(e,t).length>0}}),contains:ut(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:ut(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:vt(function(){return[0]}),last:vt(function(e,t){return[t-1]}),eq:vt(function(e,t,n){return[0>n?n+t:n]}),even:vt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:vt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:vt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:vt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=mt(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=yt(n);function bt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function xt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function wt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function Tt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Ct(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function Nt(e,t,n,r,i,o){return r&&!r[b]&&(r=Nt(r)),i&&!i[b]&&(i=Nt(i,o)),ut(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||St(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:Ct(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=Ct(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=Ct(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function kt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=wt(function(e){return e===t},s,!0),p=wt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[wt(Tt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return Nt(l>1&&Tt(f),l>1&&xt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&kt(e.slice(l,r)),i>r&&kt(e=e.slice(r)),i>r&&xt(e))}f.push(n)}return Tt(f)}function Et(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=Ct(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?ut(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=bt(e)),n=t.length;while(n--)o=kt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Et(i,r))}return o};function St(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function At(e,t,n,i){var a,s,u,c,p,f=bt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&xt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}o.pseudos.nth=o.pseudos.eq;function jt(){}jt.prototype=o.filters=o.pseudos,o.setFilters=new jt,r.sortStable=b.split("").sort(A).join("")===b,p(),[0,0].sort(A),r.detectDuplicates=S,x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!u||(n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
t
",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null) +}),n=s=l=u=r=o=null,t}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=x(this),l=t,u=e.match(T)||[];while(o=u[a++])l=r?l:!s.hasClass(o),s[l?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); +u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("