errors.html 76.9 KB
<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width" charset="utf-8"><title>Documentation</title><script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script><!-- Foundation CSS--><style>*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%}body{background:#fff;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-size:14px;line-height:1;color:#222;position:relative;-webkit-font-smoothing:antialiased}a{color:#479;text-decoration:none;line-height:inherit}a:hover{color:#3c6987}a:focus{color:#479;outline:none}p a,p a:visited{line-height:inherit}.left{float:left}@media only screen and (max-width: 767px){.left{float:none}}.right{float:right}@media only screen and (max-width: 767px){.right{float:none}}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.hide{display:none}.highlight{background:#ff9}#googlemap img,object,embed{max-width:none}#map_canvas embed{max-width:none}#map_canvas img{max-width:none}#map_canvas object{max-width:none}figure{margin:0}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;font-size:14px;direction:ltr}p{font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:normal;font-size:14px;line-height:1.6;margin-bottom:17px}p.lead{font-size:17.5px;line-height:1.6;margin-bottom:17px}aside p{font-size:13px;line-height:1.35;font-style:italic}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:bold;color:#222;text-rendering:optimizeLegibility;line-height:1.1;margin-bottom:14px;margin-top:14px}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-size:60%;color:#6f6f6f;line-height:0}h1{font-size:44px}h2{font-size:37px}h3{font-size:27px}h4{font-size:23px}h5{font-size:17px}h6{font-size:14px}hr{border:solid #ddd;border-width:1px 0 0;clear:both;margin:22px 0 21px;height:0}.subheader{line-height:1.3;color:#6f6f6f;font-weight:300;margin-bottom:17px}em,i{font-style:italic;line-height:inherit}strong,b{font-weight:bold;line-height:inherit}small{font-size:60%;line-height:inherit}code{font-weight:bold;background:#ff9}ul,ol{font-size:14px;line-height:1.6;margin-bottom:17px;list-style-position:inside}ul li ul,ul li ol{margin-left:20px;margin-bottom:0}ul.square,ul.circle,ul.disc{margin-left:17px}ul.square{list-style-type:square}ul.square li ul{list-style:inherit}ul.circle{list-style-type:circle}ul.circle li ul{list-style:inherit}ul.disc{list-style-type:disc}ul.disc li ul{list-style:inherit}ul.no-bullet{list-style:none}ul.large li{line-height:21px}ol li ul,ol li ol{margin-left:20px;margin-bottom:0}blockquote,blockquote p{line-height:1.5;color:#6f6f6f}blockquote{margin:0 0 17px;padding:9px 20px 0 19px;border-left:1px solid #ddd}blockquote cite{display:block;font-size:13px;color:#555}blockquote cite:before{content:"\2014 \0020"}blockquote cite a,blockquote cite a:visited{color:#555}abbr,acronym{text-transform:uppercase;font-size:90%;color:#222;border-bottom:1px solid #ddd;cursor:help}abbr{text-transform:none}.print-only{display:none !important}@media print{*{background:transparent !important;color:black !important;box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.hide-on-print{display:none !important}.print-only{display:block !important}}form{margin:0 0 19.41641px}.row form .row{margin:0 -6px}.row form .row .column,.row form .row .columns{padding:0 6px}.row form .row.collapse{margin:0}.row form .row.collapse .column,.row form .row.collapse .columns{padding:0}label{font-size:14px;color:#4d4d4d;cursor:pointer;display:block;font-weight:500;margin-bottom:3px}label.right{float:none;text-align:right}label.inline{line-height:32px;margin:0 0 12px 0}@media only screen and (max-width: 767px){label.right{text-align:left}}.prefix,.postfix{display:block;position:relative;z-index:2;text-align:center;width:100%;padding-top:0;padding-bottom:0;height:32px;line-height:31px}a.button.prefix,a.button.postfix{padding-left:0;padding-right:0;text-align:center}span.prefix,span.postfix{background:#f2f2f2;border:1px solid #ccc}.prefix{left:2px;-moz-border-radius-topleft:2px;-webkit-border-top-left-radius:2px;border-top-left-radius:2px;-moz-border-radius-bottomleft:2px;-webkit-border-bottom-left-radius:2px;border-bottom-left-radius:2px;overflow:hidden}.postfix{right:2px;-moz-border-radius-topright:2px;-webkit-border-top-right-radius:2px;border-top-right-radius:2px;-moz-border-radius-bottomright:2px;-webkit-border-bottom-right-radius:2px;border-bottom-right-radius:2px}input[type="text"],input[type="password"],input[type="date"],input[type="datetime"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="time"],input[type="url"],textarea{font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;border:1px solid #ccc;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);color:rgba(0,0,0,0.75);display:block;font-size:14px;margin:0 0 12px 0;padding:6px;height:32px;width:100%;-webkit-transition:all 0.15s linear;-moz-transition:all 0.15s linear;-o-transition:all 0.15s linear;transition:all 0.15s linear}input[type="text"].oversize,input[type="password"].oversize,input[type="date"].oversize,input[type="datetime"].oversize,input[type="email"].oversize,input[type="number"].oversize,input[type="search"].oversize,input[type="tel"].oversize,input[type="time"].oversize,input[type="url"].oversize,textarea.oversize{font-size:17px;padding:4px 6px}input[type="text"]:focus,input[type="password"]:focus,input[type="date"]:focus,input[type="datetime"]:focus,input[type="email"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="time"]:focus,input[type="url"]:focus,textarea:focus{background:#fafafa;outline:none !important;border-color:#b3b3b3}input[type="text"][disabled],input[type="password"][disabled],input[type="date"][disabled],input[type="datetime"][disabled],input[type="email"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="time"][disabled],input[type="url"][disabled],textarea[disabled]{background-color:#ddd}textarea{height:auto}select{width:100%}fieldset{border:solid 1px #ddd;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;padding:12px 12px 0;margin:18px 0}fieldset legend{font-weight:bold;background:#fff;padding:0 3px;margin:0;margin-left:-3px}.error input,input.error,.error textarea,textarea.error{border-color:#c60f13;background-color:rgba(198,15,19,0.1)}.error label,label.error{color:#c60f13}.error small,small.error{display:block;padding:6px 4px;margin-top:-13px;margin-bottom:12px;background:#c60f13;color:#fff;font-size:12px;font-size:1.2rem;font-weight:bold;-moz-border-radius-bottomleft:2px;-webkit-border-bottom-left-radius:2px;border-bottom-left-radius:2px;-moz-border-radius-bottomright:2px;-webkit-border-bottom-right-radius:2px;border-bottom-right-radius:2px}@media only screen and (max-width: 767px){input[type="text"].one,input[type="password"].one,input[type="date"].one,input[type="datetime"].one,input[type="email"].one,input[type="number"].one,input[type="search"].one,input[type="tel"].one,input[type="time"].one,input[type="url"].one,textarea.one,.row textarea.one{width:100% !important}input[type="text"].two,.row input[type="text"].two,input[type="password"].two,.row input[type="password"].two,input[type="date"].two,.row input[type="date"].two,input[type="datetime"].two,.row input[type="datetime"].two,input[type="email"].two,.row input[type="email"].two,input[type="number"].two,.row input[type="number"].two,input[type="search"].two,.row input[type="search"].two,input[type="tel"].two,.row input[type="tel"].two,input[type="time"].two,.row input[type="time"].two,input[type="url"].two,.row input[type="url"].two,textarea.two,.row textarea.two{width:100% !important}input[type="text"].three,.row input[type="text"].three,input[type="password"].three,.row input[type="password"].three,input[type="date"].three,.row input[type="date"].three,input[type="datetime"].three,.row input[type="datetime"].three,input[type="email"].three,.row input[type="email"].three,input[type="number"].three,.row input[type="number"].three,input[type="search"].three,.row input[type="search"].three,input[type="tel"].three,.row input[type="tel"].three,input[type="time"].three,.row input[type="time"].three,input[type="url"].three,.row input[type="url"].three,textarea.three,.row textarea.three{width:100% !important}input[type="text"].four,.row input[type="text"].four,input[type="password"].four,.row input[type="password"].four,input[type="date"].four,.row input[type="date"].four,input[type="datetime"].four,.row input[type="datetime"].four,input[type="email"].four,.row input[type="email"].four,input[type="number"].four,.row input[type="number"].four,input[type="search"].four,.row input[type="search"].four,input[type="tel"].four,.row input[type="tel"].four,input[type="time"].four,.row input[type="time"].four,input[type="url"].four,.row input[type="url"].four,textarea.four,.row textarea.four{width:100% !important}input[type="text"].five,.row input[type="text"].five,input[type="password"].five,.row input[type="password"].five,input[type="date"].five,.row input[type="date"].five,input[type="datetime"].five,.row input[type="datetime"].five,input[type="email"].five,.row input[type="email"].five,input[type="number"].five,.row input[type="number"].five,input[type="search"].five,.row input[type="search"].five,input[type="tel"].five,.row input[type="tel"].five,input[type="time"].five,.row input[type="time"].five,input[type="url"].five,.row input[type="url"].five,textarea.five,.row textarea.five{width:100% !important}input[type="text"].six,.row input[type="text"].six,input[type="password"].six,.row input[type="password"].six,input[type="date"].six,.row input[type="date"].six,input[type="datetime"].six,.row input[type="datetime"].six,input[type="email"].six,.row input[type="email"].six,input[type="number"].six,.row input[type="number"].six,input[type="search"].six,.row input[type="search"].six,input[type="tel"].six,.row input[type="tel"].six,input[type="time"].six,.row input[type="time"].six,input[type="url"].six,.row input[type="url"].six,textarea.six,.row textarea.six{width:100% !important}input[type="text"].seven,.row input[type="text"].seven,input[type="password"].seven,.row input[type="password"].seven,input[type="date"].seven,.row input[type="date"].seven,input[type="datetime"].seven,.row input[type="datetime"].seven,input[type="email"].seven,.row input[type="email"].seven,input[type="number"].seven,.row input[type="number"].seven,input[type="search"].seven,.row input[type="search"].seven,input[type="tel"].seven,.row input[type="tel"].seven,input[type="time"].seven,.row input[type="time"].seven,input[type="url"].seven,.row input[type="url"].seven,textarea.seven,.row textarea.seven{width:100% !important}input[type="text"].eight,.row input[type="text"].eight,input[type="password"].eight,.row input[type="password"].eight,input[type="date"].eight,.row input[type="date"].eight,input[type="datetime"].eight,.row input[type="datetime"].eight,input[type="email"].eight,.row input[type="email"].eight,input[type="number"].eight,.row input[type="number"].eight,input[type="search"].eight,.row input[type="search"].eight,input[type="tel"].eight,.row input[type="tel"].eight,input[type="time"].eight,.row input[type="time"].eight,input[type="url"].eight,.row input[type="url"].eight,textarea.eight,.row textarea.eight{width:100% !important}input[type="text"].nine,.row input[type="text"].nine,input[type="password"].nine,.row input[type="password"].nine,input[type="date"].nine,.row input[type="date"].nine,input[type="datetime"].nine,.row input[type="datetime"].nine,input[type="email"].nine,.row input[type="email"].nine,input[type="number"].nine,.row input[type="number"].nine,input[type="search"].nine,.row input[type="search"].nine,input[type="tel"].nine,.row input[type="tel"].nine,input[type="time"].nine,.row input[type="time"].nine,input[type="url"].nine,.row input[type="url"].nine,textarea.nine,.row textarea.nine{width:100% !important}input[type="text"].ten,.row input[type="text"].ten,input[type="password"].ten,.row input[type="password"].ten,input[type="date"].ten,.row input[type="date"].ten,input[type="datetime"].ten,.row input[type="datetime"].ten,input[type="email"].ten,.row input[type="email"].ten,input[type="number"].ten,.row input[type="number"].ten,input[type="search"].ten,.row input[type="search"].ten,input[type="tel"].ten,.row input[type="tel"].ten,input[type="time"].ten,.row input[type="time"].ten,input[type="url"].ten,.row input[type="url"].ten,textarea.ten,.row textarea.ten{width:100% !important}input[type="text"].eleven,.row input[type="text"].eleven,input[type="password"].eleven,.row input[type="password"].eleven,input[type="date"].eleven,.row input[type="date"].eleven,input[type="datetime"].eleven,.row input[type="datetime"].eleven,input[type="email"].eleven,.row input[type="email"].eleven,input[type="number"].eleven,.row input[type="number"].eleven,input[type="search"].eleven,.row input[type="search"].eleven,input[type="tel"].eleven,.row input[type="tel"].eleven,input[type="time"].eleven,.row input[type="time"].eleven,input[type="url"].eleven,.row input[type="url"].eleven,textarea.eleven,.row textarea.eleven{width:100% !important}input[type="text"].twelve,.row input[type="text"].twelve,input[type="password"].twelve,.row input[type="password"].twelve,input[type="date"].twelve,.row input[type="date"].twelve,input[type="datetime"].twelve,.row input[type="datetime"].twelve,input[type="email"].twelve,.row input[type="email"].twelve,input[type="number"].twelve,.row input[type="number"].twelve,input[type="search"].twelve,.row input[type="search"].twelve,input[type="tel"].twelve,.row input[type="tel"].twelve,input[type="time"].twelve,.row input[type="time"].twelve,input[type="url"].twelve,.row input[type="url"].twelve,textarea.twelve,.row textarea.twelve{width:100% !important}}form.custom span.custom{display:inline-block;width:16px;height:16px;position:relative;top:2px;border:solid 1px #ccc;background:#fff}form.custom span.custom.radio{-webkit-border-radius:100px;-moz-border-radius:100px;-ms-border-radius:100px;-o-border-radius:100px;border-radius:100px}form.custom span.custom.checkbox:before{content:"";display:block;line-height:0.8;height:14px;width:14px;text-align:center;position:absolute;top:0;left:0;font-size:14px;color:#fff}form.custom span.custom.radio.checked:before{content:"";display:block;width:8px;height:8px;-webkit-border-radius:100px;-moz-border-radius:100px;-ms-border-radius:100px;-o-border-radius:100px;border-radius:100px;background:#222;position:relative;top:3px;left:3px}form.custom span.custom.checkbox.checked:before{content:"\00d7";color:#222}form.custom div.custom.dropdown{display:block;position:relative;width:auto;height:28px;margin-bottom:9px;margin-top:2px}form.custom div.custom.dropdown a.current{display:block;width:auto;line-height:26px;min-height:28px;padding:0;padding-left:6px;padding-right:38px;border:solid 1px #ddd;color:#141414;background-color:#fff;white-space:nowrap}form.custom div.custom.dropdown a.selector{position:absolute;width:27px;height:28px;display:block;right:0;top:0;border:solid 1px #ddd}form.custom div.custom.dropdown a.selector:after{content:"";display:block;content:"";display:block;width:0;height:0;border:solid 5px;border-color:#aaa transparent transparent transparent;position:absolute;left:50%;top:50%;margin-top:-2px;margin-left:-5px}form.custom div.custom.dropdown:hover a.selector:after,form.custom div.custom.dropdown.open a.selector:after{content:"";display:block;width:0;height:0;border:solid 5px;border-color:#222 transparent transparent transparent}form.custom div.custom.dropdown.open ul{display:block;z-index:10}form.custom div.custom.dropdown.small{width:134px !important}form.custom div.custom.dropdown.medium{width:254px !important}form.custom div.custom.dropdown.large{width:434px !important}form.custom div.custom.dropdown.expand{width:100% !important}form.custom div.custom.dropdown.open.small ul{width:134px !important}form.custom div.custom.dropdown.open.medium ul{width:254px !important}form.custom div.custom.dropdown.open.large ul{width:434px !important}form.custom div.custom.dropdown.open.expand ul{width:100% !important}form.custom div.custom.dropdown ul{position:absolute;width:auto;display:none;margin:0;left:0;top:27px;margin:0;padding:0;background:#fff;background:rgba(255,255,255,0.95);border:solid 1px #ccc}form.custom div.custom.dropdown ul li{color:#555;font-size:13px;cursor:pointer;padding:3px;padding-left:6px;padding-right:38px;min-height:18px;line-height:18px;margin:0;white-space:nowrap;list-style:none}form.custom div.custom.dropdown ul li.selected{background:#c4d8e5;color:#000}form.custom div.custom.dropdown ul li.selected:after{content:"\2013";position:absolute;right:10px}form.custom div.custom.dropdown ul li:hover{background-color:#d6e4ed;color:#222}form.custom div.custom.dropdown ul li:hover:after{content:"\2013";position:absolute;right:10px;color:#8fb4cd}form.custom div.custom.dropdown ul li.selected:hover{background:#c4d8e5;cursor:default;color:#000}form.custom div.custom.dropdown ul li.selected:hover:after{color:#000}form.custom div.custom.dropdown ul.show{display:block}form.custom .custom.disabled{background-color:#ddd}@-moz-document url-prefix(){form.custom div.custom.dropdown a.selector{height:30px}}.lt-ie9 form.custom div.custom.dropdown a.selector{height:30px}.row{width:940px;max-width:100%;min-width:768px;margin:0 auto}.row .row{width:auto;max-width:none;min-width:0;margin:0 -15px}.row.collapse .column,.row.collapse .columns{padding:0}.row .row{width:auto;max-width:none;min-width:0;margin:0 -15px}.row .row.collapse{margin:0}.column,.columns{float:left;min-height:1px;padding:0 15px;position:relative}.column.centered,.columns.centered{float:none;margin:0 auto}[class*="column"]+[class*="column"]:last-child{float:right}[class*="column"]+[class*="column"].end{float:left}.one,.row .one{width:8.33333%}.two,.row .two{width:16.66667%}.three,.row .three{width:25%}.four,.row .four{width:33.33333%}.five,.row .five{width:41.66667%}.six,.row .six{width:50%}.seven,.row .seven{width:58.33333%}.eight,.row .eight{width:66.66667%}.nine,.row .nine{width:75%}.ten,.row .ten{width:83.33333%}.eleven,.row .eleven{width:91.66667%}.twelve,.row .twelve{width:100%}.row .offset-by-one{margin-left:8.33333%}.row .offset-by-two{margin-left:16.66667%}.row .offset-by-three{margin-left:25%}.row .offset-by-four{margin-left:33.33333%}.row .offset-by-five{margin-left:41.66667%}.row .offset-by-six{margin-left:50%}.row .offset-by-seven{margin-left:58.33333%}.row .offset-by-eight{margin-left:66.66667%}.row .offset-by-nine{margin-left:75%}.row .offset-by-ten{margin-left:83.33333%}.push-two{left:16.66667%}.pull-two{right:16.66667%}.push-three{left:25%}.pull-three{right:25%}.push-four{left:33.33333%}.pull-four{right:33.33333%}.push-five{left:41.66667%}.pull-five{right:41.66667%}.push-six{left:50%}.pull-six{right:50%}.push-seven{left:58.33333%}.pull-seven{right:58.33333%}.push-eight{left:66.66667%}.pull-eight{right:66.66667%}.push-nine{left:75%}.pull-nine{right:75%}.push-ten{left:83.33333%}.pull-ten{right:83.33333%}img,object,embed{max-width:100%;height:auto}object,embed{height:100%}img{-ms-interpolation-mode:bicubic}#map_canvas img,.map_canvas img{max-width:none!important}.row{*zoom:1}.row:before,.row:after{content:"";display:table}.row:after{clear:both}@media only screen and (max-width: 767px){body{-webkit-text-size-adjust:none;-ms-text-size-adjust:none;width:100%;min-width:0;margin-left:0;margin-right:0;padding-left:0;padding-right:0}.row{width:auto;min-width:0;margin-left:0;margin-right:0}.column,.columns{width:auto !important;float:none}.column:last-child,.columns:last-child{float:none}[class*="column"]+[class*="column"]:last-child{float:none}.column:before,.columns:before,.column:after,.columns:after{content:"";display:table}.column:after,.columns:after{clear:both}.offset-by-one,.offset-by-two,.offset-by-three,.offset-by-four,.offset-by-five,.offset-by-six,.offset-by-seven,.offset-by-eight,.offset-by-nine,.offset-by-ten{margin-left:0 !important}.push-two,.push-three,.push-four,.push-five,.push-six,.push-seven,.push-eight,.push-nine,.push-ten{left:auto}.pull-two,.pull-three,.pull-four,.pull-five,.pull-six,.pull-seven,.pull-eight,.pull-nine,.pull-ten{right:auto}.row .mobile-one{width:25% !important;float:left;padding:0 15px}.row .mobile-one:last-child{float:right}.row .mobile-one.end{float:left}.row.collapse .mobile-one{padding:0}.row .mobile-two{width:50% !important;float:left;padding:0 15px}.row .mobile-two:last-child{float:right}.row .mobile-two.end{float:left}.row.collapse .mobile-two{padding:0}.row .mobile-three{width:75% !important;float:left;padding:0 15px}.row .mobile-three:last-child{float:right}.row .mobile-three.end{float:left}.row.collapse .mobile-three{padding:0}.row .mobile-four{width:100% !important;float:left;padding:0 15px}.row .mobile-four:last-child{float:right}.row .mobile-four.end{float:left}.row.collapse .mobile-four{padding:0}.push-one-mobile{left:25%}.pull-one-mobile{right:25%}.push-two-mobile{left:50%}.pull-two-mobile{right:50%}.push-three-mobile{left:75%}.pull-three-mobile{right:75%}}.block-grid{display:block;overflow:hidden;padding:0}.block-grid>li{display:block;height:auto;float:left}.block-grid.one-up{margin:0}.block-grid.one-up>li{width:100%;padding:0 0 15px}.block-grid.two-up{margin:0 -15px}.block-grid.two-up>li{width:50%;padding:0 15px 15px}.block-grid.two-up>li:nth-child(2n+1){clear:both}.block-grid.three-up{margin:0 -12px}.block-grid.three-up>li{width:33.33%;padding:0 12px 12px}.block-grid.three-up>li:nth-child(3n+1){clear:both}.block-grid.four-up{margin:0 -10px}.block-grid.four-up>li{width:25%;padding:0 10px 10px}.block-grid.four-up>li:nth-child(4n+1){clear:both}.block-grid.five-up{margin:0 -8px}.block-grid.five-up>li{width:20%;padding:0 8px 8px}.block-grid.five-up>li:nth-child(5n+1){clear:both}@media only screen and (max-width: 767px){.block-grid.mobile>li{float:none;width:100%;margin-left:0}.block-grid>li{clear:none !important}.block-grid.mobile-two-up>li{width:50%}.block-grid.mobile-two-up>li:nth-child(2n+1){clear:both}.block-grid.mobile-three-up>li{width:33.33%}.block-grid.mobile-three-up>li:nth-child(3n+1){clear:both !important}.block-grid.mobile-four-up>li{width:25%}.block-grid.mobile-four-up>li:nth-child(4n+1){clear:both}.block-grid.mobile-five-up>li:nth-child(5n+1){clear:both}}.nav-bar{height:40px;background:#4d4d4d;margin-top:20px;padding:0}.nav-bar>li{float:left;display:block;position:relative;padding:0;margin:0;border:1px solid #333;border-right:none;line-height:38px;-webkit-box-shadow:1px 0 0 rgba(255,255,255,0.2) inset;-moz-box-shadow:1px 0 0 rgba(255,255,255,0.2) inset;box-shadow:1px 0 0 rgba(255,255,255,0.2) inset}.nav-bar>li:first-child{-webkit-box-shadow:0 0 0;-moz-box-shadow:0 0 0;box-shadow:0 0 0}.nav-bar>li:last-child{border-right:solid 1px #333;-webkit-box-shadow:1px 0 0 rgba(255,255,255,0.2) inset,1px 0 0 rgba(255,255,255,0.2);-moz-box-shadow:1px 0 0 rgba(255,255,255,0.2) inset,1px 0 0 rgba(255,255,255,0.2);box-shadow:1px 0 0 rgba(255,255,255,0.2) inset,1px 0 0 rgba(255,255,255,0.2)}.nav-bar>li.active{background:#479;border-color:#345c76}.nav-bar>li.active>a{color:#fff;cursor:default}.nav-bar>li.active:hover{background:#479;cursor:default}.nav-bar>li:hover{background:#333}.nav-bar>li>a{color:#e6e6e6}.nav-bar>li ul{margin-bottom:0}.nav-bar>li .flyout{display:none}.nav-bar>li.has-flyout>a:first-child{padding-right:40px;position:relative}.nav-bar>li.has-flyout>a:first-child:after{content:"";display:block;width:0;height:0;border:solid 4px;border-color:#e6e6e6 transparent transparent transparent;position:absolute;right:20px;top:17px}.nav-bar>li.has-flyout>a.flyout-toggle{border-left:0 !important;position:absolute;right:0;top:0;padding:20px;z-index:2;display:block}.nav-bar>li.has-flyout.is-touch>a:first-child{padding-right:55px}.nav-bar>li.has-flyout.is-touch>a.flyout-toggle{border-left:1px dashed #666}.nav-bar>li>a:first-child{position:relative;padding:0 20px;display:block;text-decoration:none;font-size:14px}.nav-bar>li>input{margin:0 10px}.nav-bar.vertical{height:auto;margin-top:0}.nav-bar.vertical>li{float:none;border-bottom:none;border-right:solid 1px #333;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-bar.vertical>li.has-flyout>a:first-child:after{content:"";display:block;width:0;height:0;border:solid 4px;border-color:transparent transparent transparent #e6e6e6}.nav-bar.vertical>li .flyout{left:100%;top:-1px}.nav-bar.vertical>li .flyout.right{left:auto;right:100%}.nav-bar.vertical>li.active{border-right:solid 1px #345c76}.nav-bar.vertical>li:last-child{border-bottom:solid 1px #333}.flyout{background:#f2f2f2;padding:20px;margin:0;border:1px solid #d9d9d9;position:absolute;top:39px;left:-1px;width:250px;z-index:40;-webkit-box-shadow:0 1px 5px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 5px rgba(0,0,0,0.1);box-shadow:0 1px 5px rgba(0,0,0,0.1)}.flyout p{line-height:1.2;font-size:13px}.flyout *:first-child{margin-top:0}.flyout *:last-child{margin-bottom:0}.flyout.small{width:166.66667px}.flyout.large{width:437.5px}.flyout.right{left:auto;right:-2px}.flyout.left{right:auto;left:-2px}.flyout.up{top:auto;bottom:39px}ul.flyout,.nav-bar li ul{padding:0;list-style:none}ul.flyout li,.nav-bar li ul li{border-left:solid 3px #CCC}ul.flyout li a,.nav-bar li ul li a{background:#f2f2f2;border:1px solid #e6e6e6;border-width:1px 1px 0 0;color:#555;display:block;font-size:14px;height:auto;line-height:1;padding:15px 20px;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;-moz-box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;box-shadow:0 1px 0 rgba(255,255,255,0.5) inset}ul.flyout li a:hover,.nav-bar li ul li a:hover{background:#ebebeb;color:#333}ul.flyout li.active,.nav-bar li ul li.active{margin-top:0;border-top:1px solid #4d4d4d;border-left:4px solid #1a1a1a}ul.flyout li.active a,.nav-bar li ul li.active a{background:#4d4d4d;border:none;color:#fff;height:auto;margin:0;position:static;top:0;-webkit-box-shadow:0 0 0;-moz-box-shadow:0 0 0;box-shadow:0 0 0}@media only screen and (max-device-width: 1280px){.touch .nav-bar li.has-flyout>a{padding-right:36px !important}}@media only screen and (max-width: 1279px) and (min-width: 768px){.touch .nav-bar li a{font-size:13px;font-size:1.3rem}.touch .nav-bar li.has-flyout>a.flyout-toggle{padding:20px !important}.touch .nav-bar li.has-flyout>a{padding-right:36px !important}}@media only screen and (max-width: 767px){.nav-bar{height:auto}.nav-bar>li{float:none;display:block;border-right:none}.nav-bar>li>a.main{text-align:left;border-top:1px solid #ddd;border-right:none}.nav-bar>li:first-child>a.main{border-top:none}.nav-bar>li.has-flyout>a.flyout-toggle{position:absolute;right:0;top:0;padding:22px;z-index:2;display:block}.nav-bar>li.has-flyout.is-touch>a.flyout-toggle span{content:"";width:0;height:0;display:block}.nav-bar>li.has-flyout>a.flyout-toggle:hover span{border-top-color:#141414}.nav-bar.vertical>li.has-flyout>.flyout{left:0}.flyout{position:relative;width:100% !important;top:auto;margin-right:-2px;border-width:1px 1px 0 1px}.flyout.right{float:none;right:auto;left:-1px}.flyout.small,.flyout.large{width:100% !important}.flyout p:last-child{margin-bottom:18px}}dl.tabs{border-bottom:solid 1px #e6e6e6;display:block;height:40px;padding:0;margin-bottom:20px}dl.tabs.contained{margin-bottom:0}dl.tabs dt{color:#b3b3b3;cursor:default;display:block;float:left;font-size:12px;height:40px;line-height:40px;padding:0;padding-right:9px;padding-left:20px;width:auto;text-transform:uppercase}dl.tabs dt:first-child{padding:0;padding-right:9px}dl.tabs dd{display:block;float:left;padding:0;margin:0}dl.tabs dd a{color:#6f6f6f;display:block;font-size:14px;height:40px;line-height:40px;padding:0px 23.8px}dl.tabs dd a:focus{font-weight:bold;color:#479}dl.tabs dd.active{border-top:3px solid #479;margin-top:-3px}dl.tabs dd.active a{cursor:default;color:#3c3c3c;background:#fff;border-left:1px solid #e6e6e6;border-right:1px solid #e6e6e6;font-weight:bold}dl.tabs dd:first-child{margin-left:0}dl.tabs.vertical{height:auto;border-bottom:1px solid #e6e6e6}dl.tabs.vertical dt,dl.tabs.vertical dd{float:none;height:auto}dl.tabs.vertical dd{border-left:3px solid #ccc}dl.tabs.vertical dd a{background:#f2f2f2;border:none;border:1px solid #e6e6e6;border-width:1px 1px 0 0;color:#555;display:block;font-size:14px;height:auto;line-height:1;padding:15px 20px;-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;-moz-box-shadow:0 1px 0 rgba(255,255,255,0.5) inset;box-shadow:0 1px 0 rgba(255,255,255,0.5) inset}dl.tabs.vertical dd.active{margin-top:0;border-top:1px solid #4d4d4d;border-left:4px solid #1a1a1a}dl.tabs.vertical dd.active a{background:#4d4d4d;border:none;color:#fff;height:auto;margin:0;position:static;top:0;-webkit-box-shadow:0 0 0;-moz-box-shadow:0 0 0;box-shadow:0 0 0}dl.tabs.vertical dd:first-child a.active{margin:0}dl.tabs.pill{border-bottom:none;margin-bottom:10px}dl.tabs.pill dd{margin-right:10px}dl.tabs.pill dd:last-child{margin-right:0}dl.tabs.pill dd a{-webkit-border-radius:1000px;-moz-border-radius:1000px;-ms-border-radius:1000px;-o-border-radius:1000px;border-radius:1000px;background:#e6e6e6;height:26px;line-height:26px;color:#666}dl.tabs.pill dd.active{border:none;margin-top:0}dl.tabs.pill dd.active a{background-color:#479;border:none;color:#fff}dl.tabs.pill.contained{border-bottom:solid 1px #eee;margin-bottom:0}dl.tabs.pill.two-up dd,dl.tabs.pill.three-up dd,dl.tabs.pill.four-up dd,dl.tabs.pill.five-up dd{margin-right:0}dl.tabs.two-up dt a,dl.tabs.two-up dd a,dl.tabs.three-up dt a,dl.tabs.three-up dd a,dl.tabs.four-up dt a,dl.tabs.four-up dd a,dl.tabs.five-up dt a,dl.tabs.five-up dd a{padding:0 17px;text-align:center;overflow:hidden}dl.tabs.two-up dt,dl.tabs.two-up dd{width:50%}dl.tabs.three-up dt,dl.tabs.three-up dd{width:33.33%}dl.tabs.four-up dt,dl.tabs.four-up dd{width:25%}dl.tabs.five-up dt,dl.tabs.five-up dd{width:20%}ul.tabs-content{display:block;margin:0 0 20px;padding:0}ul.tabs-content>li{display:none}ul.tabs-content>li.active{display:block}ul.tabs-content.contained{padding:0}ul.tabs-content.contained>li{border:solid 0 #e6e6e6;border-width:0 1px 1px 1px;padding:20px}ul.tabs-content.contained.vertical>li{border-width:1px 1px 1px 1px}.no-js ul.tabs-content>li{display:block}@media only screen and (max-width: 767px){dl.tabs.mobile{width:auto;margin:20px -20px 40px;height:auto}dl.tabs.mobile dt,dl.tabs.mobile dd{float:none;height:auto}dl.tabs.mobile dd a{display:block;width:auto;height:auto;padding:18px 20px;line-height:1;border:solid 0 #ccc;border-width:1px 0 0;margin:0;color:#555;background:#eee;font-size:15px;font-size:1.5rem}dl.tabs.mobile dd a.active{height:auto;margin:0;border-width:1px 0 0}.tabs.mobile{border-bottom:solid 1px #ccc;height:auto}.tabs.mobile dd a{padding:18px 20px;border:none;border-left:none;border-right:none;border-top:1px solid #ccc;background:#fff}.tabs.mobile dd a.active{border:none;background:#479;color:#fff;margin:0;position:static;top:0;height:auto}.tabs.mobile dd:first-child a.active{margin:0}dl.contained.mobile{margin-bottom:0}dl.contained.tabs.mobile dd a{padding:18px 20px}dl.tabs.mobile+ul.contained{margin-left:-20px;margin-right:-20px;border-width:0 0 1px 0}}.show-for-small,.show-for-medium,.show-for-medium-down,.hide-for-large,.hide-for-large-up,.show-for-xlarge{display:none !important}.hide-for-xlarge,.show-for-large,.show-for-large-up,.hide-for-small,.hide-for-medium,.hide-for-medium-down{display:block !important}@media only screen and (min-width: 1441px){.hide-for-small,.hide-for-medium,.hide-for-medium-down,.hide-for-large,.show-for-large-up,.show-for-xlarge{display:block !important}.show-for-small,.show-for-medium,.show-for-medium-down,.show-for-large,.hide-for-large-up,.hide-for-xlarge{display:none !important}}@media only screen and (max-width: 1279px) and (min-width: 768px){.hide-for-small,.show-for-medium,.show-for-medium-down,.hide-for-large,.hide-for-large-up,.hide-for-xlarge{display:block !important}.show-for-small,.hide-for-medium,.hide-for-medium-down,.show-for-large,.show-for-large-up,.show-for-xlarge{display:none !important}}@media only screen and (max-width: 767px){.show-for-small,.hide-for-medium,.show-for-medium-down,.hide-for-large,.hide-for-large-up,.hide-for-xlarge{display:block !important}.hide-for-small,.show-for-medium,.hide-for-medium-down,.show-for-large,.show-for-large-up,.show-for-xlarge{display:none !important}}.show-for-landscape,.hide-for-portrait{display:block !important}.hide-for-landscape,.show-for-portrait{display:none !important}@media screen and (orientation: landscape){.show-for-landscape,.hide-for-portrait{display:block !important}.hide-for-landscape,.show-for-portrait{display:none !important}}@media screen and (orientation: portrait){.show-for-portrait,.hide-for-landscape{display:block !important}.hide-for-portrait,.show-for-landscape{display:none !important}}.show-for-touch{display:none !important}.hide-for-touch{display:block !important}.touch .show-for-touch{display:block !important}.touch .hide-for-touch{display:none !important}table.show-for-xlarge,table.show-for-large,table.hide-for-small,table.hide-for-medium{display:table !important}@media only screen and (max-width: 1279px) and (min-width: 768px){.touch table.hide-for-xlarge,.touch table.hide-for-large,.touch table.hide-for-small,.touch table.show-for-medium{display:table !important}}@media only screen and (max-width: 767px){table.hide-for-xlarge,table.hide-for-large,table.hide-for-medium,table.show-for-small{display:table !important}}div.alert-box{display:block;padding:6px 7px 7px;font-weight:bold;font-size:14px;color:#fff;background-color:#479;border:1px solid rgba(0,0,0,0.1);margin-bottom:12px;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;text-shadow:0 -1px rgba(0,0,0,0.3);position:relative}div.alert-box.success{background-color:#5da423;color:#fff;text-shadow:0 -1px rgba(0,0,0,0.3)}div.alert-box.alert{background-color:#c60f13;color:#fff;text-shadow:0 -1px rgba(0,0,0,0.3)}div.alert-box.secondary{background-color:#e9e9e9;color:#505050;text-shadow:0 1px rgba(255,255,255,0.3)}div.alert-box a.close{color:#333;position:absolute;right:4px;top:-1px;font-size:17px;opacity:0.2;padding:4px}div.alert-box a.close:hover,div.alert-box a.close:focus{opacity:0.4}.label{padding:1px 4px 2px;font-size:12px;font-weight:bold;text-align:center;text-decoration:none;line-height:1;white-space:nowrap;display:inline;position:relative;bottom:1px;color:#fff;background:#479}.label.radius{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.label.round{padding:1px 7px 2px;-webkit-border-radius:1000px;-moz-border-radius:1000px;-ms-border-radius:1000px;-o-border-radius:1000px;border-radius:1000px}.label.alert{background-color:#c60f13}.label.success{background-color:#5da423}.label.secondary{background-color:#e9e9e9;color:#505050}.has-tip{border-bottom:dotted 1px #ccc;cursor:help;font-weight:bold;color:#333}.has-tip:hover{border-bottom:dotted 1px #254052;color:#479}.has-tip.tip-left,.has-tip.tip-right{float:none !important}.tooltip{display:none;background:#000;background:rgba(0,0,0,0.85);position:absolute;color:#fff;font-weight:bold;font-size:12px;font-size:1.2rem;padding:5px;z-index:999;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;line-height:normal}.tooltip>.nub{display:block;width:0;height:0;border:solid 5px;border-color:transparent transparent #000 transparent;border-color:transparent transparent rgba(0,0,0,0.85) transparent;position:absolute;top:-10px;left:10px}.tooltip.tip-override>.nub{border-color:transparent transparent #000 transparent !important;border-color:transparent transparent rgba(0,0,0,0.85) transparent !important;top:-10px !important}.tooltip.tip-top>.nub{border-color:#000 transparent transparent transparent;border-color:rgba(0,0,0,0.85) transparent transparent transparent;top:auto;bottom:-10px}.tooltip.tip-left,.tooltip.tip-right{float:none !important}.tooltip.tip-left>.nub{border-color:transparent transparent transparent #000;border-color:transparent transparent transparent rgba(0,0,0,0.85);right:-10px;left:auto}.tooltip.tip-right>.nub{border-color:transparent #000 transparent transparent;border-color:transparent rgba(0,0,0,0.85) transparent transparent;right:auto;left:-10px}.tooltip.noradius{-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}.tooltip.opened{color:#479 !important;border-bottom:dotted 1px #254052 !important}.tap-to-close{display:block;font-size:10px;font-size:1rem;color:#888;font-weight:normal}@media only screen and (max-width: 767px){.tooltip{font-size:14px;font-size:1.4rem;line-height:1.4;padding:7px 10px 9px 10px}.tooltip>.nub,.tooltip.top>.nub,.tooltip.left>.nub,.tooltip.right>.nub{border-color:transparent transparent #000 transparent;border-color:transparent transparent rgba(0,0,0,0.85) transparent;top:-12px;left:10px}}.panel{background:#f2f2f2;border:solid 1px #e6e6e6;margin:0 0 22px 0;padding:20px}.panel>:first-child{margin-top:0}.panel>:last-child{margin-bottom:0}.panel.callout{background:#479;color:#fff;border-color:#345c76;-webkit-box-shadow:inset 0px 1px 0px rgba(255,255,255,0.5);-moz-box-shadow:inset 0px 1px 0px rgba(255,255,255,0.5);box-shadow:inset 0px 1px 0px rgba(255,255,255,0.5)}.panel.callout a{color:#fff}.panel.callout .button{background:#fff;border:none;color:#479;text-shadow:none}.panel.callout .button:hover{background:rgba(255,255,255,0.8)}.panel.radius{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}ul.accordion{margin:0 0 22px 0;border-bottom:1px solid #e9e9e9}ul.accordion>li{list-style:none;margin:0;padding:0;border-top:1px solid #e9e9e9}ul.accordion>li .title{cursor:pointer;background:#f6f6f6;padding:15px;margin:0;position:relative;border-left:1px solid #e9e9e9;border-right:1px solid #e9e9e9;-webkit-transition:0.15s background linear;-moz-transition:0.15s background linear;-o-transition:0.15s background linear;transition:0.15s background linear}ul.accordion>li .title h1,ul.accordion>li .title h2,ul.accordion>li .title h3,ul.accordion>li .title h4,ul.accordion>li .title h5{margin:0}ul.accordion>li .title:after{content:"";display:block;width:0;height:0;border:solid 6px;border-color:transparent #9d9d9d transparent transparent;position:absolute;right:15px;top:21px}ul.accordion>li .content{display:none;padding:15px}ul.accordion>li.active{border-top:3px solid #479}ul.accordion>li.active .title{background:#fff;padding-top:13px}ul.accordion>li.active .title:after{content:"";display:block;width:0;height:0;border:solid 6px;border-color:#9d9d9d transparent transparent transparent}ul.accordion>li.active .content{background:#fff;display:block;border-left:1px solid #e9e9e9;border-right:1px solid #e9e9e9}ul.side-nav{display:block;list-style:none;margin:0;padding:17px 0}ul.side-nav li{display:block;list-style:none;margin:0 0 7px 0}ul.side-nav li a{display:block}ul.side-nav li.active a{color:#4d4d4d;font-weight:bold}ul.side-nav li.divider{border-top:1px solid #e6e6e6;height:0;padding:0}dl.sub-nav{display:block;width:auto;overflow:hidden;margin:-4px 0 18px;margin-right:0;margin-left:-9px;padding-top:4px}dl.sub-nav dt,dl.sub-nav dd{float:left;display:inline;margin-left:9px;margin-bottom:10px}dl.sub-nav dt{color:#999;font-weight:normal}dl.sub-nav dd a{text-decoration:none;-webkit-border-radius:1000px;-moz-border-radius:1000px;-ms-border-radius:1000px;-o-border-radius:1000px;border-radius:1000px}dl.sub-nav dd.active a{font-weight:bold;background:#479;color:#fff;padding:3px 9px;cursor:default}ul.pagination{display:block;height:24px;margin-left:-5px}ul.pagination li{float:left;display:block;height:24px;color:#999;font-size:14px;margin-left:5px}ul.pagination li a{display:block;padding:1px 7px 1px;color:#555}ul.pagination li:hover a,ul.pagination li a:focus{background:#e6e6e6}ul.pagination li.unavailable a{cursor:default;color:#999}ul.pagination li.unavailable:hover a,ul.pagination li.unavailable a:focus{background:transparent}ul.pagination li.current a{background:#479;color:#fff;font-weight:bold;cursor:default}ul.pagination li.current a:hover{background:#479}ul.breadcrumbs{display:block;background:#f6f6f6;padding:6px 10px 7px;border:1px solid #e9e9e9;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;overflow:hidden}ul.breadcrumbs li{margin:0;padding:0 12px 0 0;float:left;list-style:none}ul.breadcrumbs li a,ul.breadcrumbs li span{text-transform:uppercase;font-size:11px;font-size:1.1rem;padding-left:12px}ul.breadcrumbs li:first-child a,ul.breadcrumbs li:first-child span{padding-left:0}ul.breadcrumbs li:before{content:"/";color:#aaa}ul.breadcrumbs li:first-child:before{content:" "}ul.breadcrumbs li.current a{cursor:default;color:#333}ul.breadcrumbs li:hover a,ul.breadcrumbs li a:focus{text-decoration:underline}ul.breadcrumbs li.current:hover a,ul.breadcrumbs li.current a:focus{text-decoration:none}ul.breadcrumbs li.unavailable a{color:#999}ul.breadcrumbs li.unavailable:hover a,ul.breadcrumbs li.unavailable a:focus{text-decoration:none;color:#999;cursor:default}ul.link-list{margin:0 0 17px -22px;padding:0;list-style:none;overflow:hidden}ul.link-list li{list-style:none;float:left;margin-left:22px;display:block}ul.link-list li a{display:block}.keystroke,kbd{font-family:"Consolas", "Menlo", "Courier", monospace;font-size:13px;padding:2px 4px 0px;margin:0;background:#ededed;border:solid 1px #dbdbdb;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.th{display:block}.th img{display:block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,0.2);-moz-box-shadow:0 0 0 1px rgba(0,0,0,0.2);box-shadow:0 0 0 1px rgba(0,0,0,0.2);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-transition-property:box-shadow;-moz-transition-property:box-shadow;-o-transition-property:box-shadow;transition-property:box-shadow;-webkit-transition-duration:300ms;-moz-transition-duration:300ms;-o-transition-duration:300ms;transition-duration:300ms}.th:hover img{-webkit-box-shadow:0 0 6px 1px rgba(68,119,153,0.5);-moz-box-shadow:0 0 6px 1px rgba(68,119,153,0.5);box-shadow:0 0 6px 1px rgba(68,119,153,0.5)}.flex-video{position:relative;padding-top:25px;padding-bottom:67.5%;height:0;margin-bottom:16px;overflow:hidden}.flex-video.widescreen{padding-bottom:57.25%}.flex-video.vimeo{padding-top:0}.flex-video iframe,.flex-video object,.flex-video embed,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}@media only screen and (max-device-width: 800px), only screen and (device-width: 1024px) and (device-height: 600px), only screen and (width: 1280px) and (orientation: landscape), only screen and (device-width: 800px), only screen and (max-width: 767px){.flex-video{padding-top:0}}table{background:#fff;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;margin:0 0 18px;border:1px solid #ddd}table thead,table tfoot{background:#f5f5f5}table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{font-size:14px;line-height:18px;text-align:left}table thead tr th,table tfoot tr td{padding:8px 10px 9px;font-size:16px;font-weight:bold;color:#222}table thead tr th:first-child,table tfoot tr td:first-child{border-left:none}table thead tr th:last-child,table tfoot tr td:last-child{border-right:none}table tbody tr.even,table tbody tr.alt{background:#f9f9f9}table tbody tr:nth-child(even){background:#f9f9f9}table tbody tr td{color:#333;padding:9px 10px;vertical-align:top;border:none}ul.vcard{display:inline-block;margin:0 0 12px 0;border:1px solid #ddd;padding:10px}ul.vcard li{margin:0;display:block}ul.vcard li.fn{font-weight:bold;font-size:15px;font-size:1.5rem}p.vevent span.summary{font-weight:bold}p.vevent abbr{cursor:default;text-decoration:none;font-weight:bold;border:none;padding:0 1px}div.progress{padding:2px;margin-bottom:10px;border:1px solid #ccc;height:25px}div.progress .meter{background:#479;height:100%;display:block;width:50%}div.progress.secondary .meter{background:#e9e9e9}div.progress.success .meter{background:#5da423}div.progress.alert .meter{background:#c60f13}div.progress.radius{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}div.progress.radius .meter{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px}div.progress.round{-webkit-border-radius:1000px;-moz-border-radius:1000px;-ms-border-radius:1000px;-o-border-radius:1000px;border-radius:1000px}div.progress.round .meter{-webkit-border-radius:1000px;-moz-border-radius:1000px;-ms-border-radius:1000px;-o-border-radius:1000px;border-radius:1000px}</style><!-- Custom Styles--><style>code {
  background: transparent;
  line-height:1.4em
}
.comment { position:relative;margin-bottom:3em; }
  .comment h1 {font-size:2rem}
  .comment h2 {font-size:1.8rem}
  div.description {margin: 14px 0; padding-top: 14px; border-top:1px solid #eee; border-bottom:1px solid #eee; }
  .tags {}
    .tags .types {color:#666}
.ctx-type { float:right; margin-top:8px }</style><style>h2.subtitle {
  font-size: 20px;
  color: #777;
}
#folder-structure {}
#folder-structure .clear {
  clear: both;
}
#folder-structure ul {
  list-style-type: none;
  margin: 0px;
  padding: 0px;
}
#folder-structure > ul > li ul:not(.active) {
  display: none
}
#folder-structure > ul li a:hover {
  background: #eee;
}
#folder-structure > ul ul.active {
  border-left: 4px solid #eee;
  padding-left: 10px;
}
#folder-structure li.active {
  font-weight: bold;
  background: #FAFAFA;
}

#folder-structure > ul > li a {
  display: block;
}

#folder-structure h6 {
  background: #eee;
  padding: 10px;
  cursor: pointer;
  margin: 10px 0 0 0;
}
</style></head><body><div class="row"><div class="twelve columns"><h1 class="pagetitle">Documentation</h1></div></div><div class="row"><div id="nav" class="three columns"><ul class="side-nav"><li><a href="#JS_ERRORS">JS_ERRORS</a></li><li><a href="#find">find</a></li><li><a href="#create">create</a></li><li><a href="#stacks">stacks</a></li><li><a href="#title">title</a></li><li><a href="#errorHandler">errorHandler</a></li><li><a href="#mapper">mapper</a></li><li><a href="#mapError">mapError</a></li></ul></div><div class="nine columns"><div class="comment"><div class="label radius ctx-type">property</div><h1 id="JS_ERRORS">JS_ERRORS</h1><h5 class="subheader">exports.JS_ERRORS</h5><div class="description"><p>JavaScript Error constructors indexed by name<br />for convenience.</p>

<h2>Examples</h2>

<p>new errors.JS_ERRORS.URIError('Malformed URI');</p></div><div class="tags"><ul class="no-bullet"></ul></div><pre><code class="language-javascript">exports.JS_ERRORS = {
    Error: Error
    , EvalError: EvalError
    , RangeError: RangeError
    , ReferenceError: ReferenceError
    , SyntaxError: SyntaxError
    , TypeError: TypeError
    , URIError: URIError
};</code></pre></div><div class="comment"><div class="label radius ctx-type">method</div><h1 id="find">find</h1><h5 class="subheader">exports.find()</h5><div class="description"><p>Returns the error constructor by the given code or<br />name.</p>

<h2>Examples</h2>

<p>errors.find(404);<br /> // => Http404Error</p>

<p>errors.find(500);<br /> // => Http500Error</p>

<p>errors.find('Http401Error');<br /> // => http401Error</p></div><div class="tags"><ul class="no-bullet"><li><strong>@param: </strong><span class="types"> {String,Number} </span><span class="name">err </span></li><li><strong>@returns: </strong></li></ul></div><pre><code class="language-javascript">exports.find = function(err) {
    return (typeof err == 'number') ? codes[err] : names[err];
};</code></pre></div><div class="comment"><div class="label radius ctx-type">declaration</div><h1 id="create">create</h1><h5 class="subheader">create</h5><div class="description"><p>Create a new constructor instance based<br />on the given options.</p>

<p>This factory method allows consumers to build<br />parameterized error constructor function instances<br />which can then be used to instantiate new concrete<br />instances of the given error.</p>

<p>This method accepts jQuery style <code>options</code> argument<br />with the following properties (note that <code>name</code> is<br />the only required property, all others are optional).</p>

<p>The <code>scope</code> option can be used to change the default<br />namespace to create the constructor in. If unspecified<br />it defaults to the <code>exports</code> object of this module<br />(i.e. <code>errors.exports</code>).</p>

<p>The <code>parent</code> option specifies the parent to inherit<br />from. If unspecified it defaults to <code>Error</code>.</p>

<p>The <code>defaultMessage</code>, <code>defaultExplanation</code> and<br /><code>defaultResponse</code> define the default text to use<br />for the new errors <code>message</code>, <code>explanation</code> and<br /><code>response</code> respectively. These values can be<br />overridden at construction time.</p>

<p>The <code>code</code> specifies the error code for the new<br />error. If unspecified it defaults to a generated<br />error number which is greater than or equal to<br />600.</p>

<h2>Examples</h2>

<p>// use all defaults<br /> errors.create({name: 'FileNotFoundError'});<br /> throw new errors.FileNotFoundError("Could not find file x");</p>

<p>// inheritance<br /> errors.create({<br />     name: 'FatalError',<br />     code: 900<br /> });<br /> errors.create({<br />     name: 'DatabaseError',<br />     parent: errors.FatalError<br />     code: 901<br /> });<br /> var dbe = new errors.DatabaseError("Internal database error");<br /> dbe instanceof errors.FatalError;<br /> // => true</p>

<p>// scoping to current module exports<br /> var MalformedEncodingError = errors.create({<br />     name: 'MalformedEncodingError',<br />     scope: exports<br /> });<br /> throw new MalformedEncodingError("Encoding not supported");</p>

<p>// default message<br /> errors.create({<br />     name: 'SocketReadError',<br />     code: 4000,<br />     defaultMessage: 'Could not read from socket'<br /> });<br /> var sre = new errors.SocketReadError();<br /> sre.message;<br /> // => 'Could not read from socket'<br /> sre.code;<br /> // => 4000<br /> sre instanceof Error;<br /> // => true</p>

<p>// explanation and response<br /> errors.create({<br />     name: 'SocketReadError',<br />     code: 4000,<br />     defaultMessage: 'Could not read from socket',<br />     defaultExplanation: 'Unable to obtain a reference to the socket',<br />     defaultResponse: 'Specify a different port or socket and retry the operation'<br /> });<br /> var sre = new errors.SocketReadError();<br /> sre.explanation;<br /> // => 'Unable to obtain a reference to the socket'<br /> sre.response;<br /> // => 'Specify a different port or socket and retry the operation'</p></div><div class="tags"><ul class="no-bullet"><li><strong>@param: </strong><span class="types"> {String} </span><span class="name">name </span><span class="description">The constructor name.</span></li><li><strong>@param: </strong><span class="types"> {Object} </span><span class="name">scope </span><span class="description">The scope (i.e. namespace).</span></li><li><strong>@param: </strong><span class="types"> {Function} </span><span class="name">parent </span><span class="description">The parent to inherit from.</span></li><li><strong>@param: </strong><span class="types"> {String} </span><span class="name">defaultMessage </span><span class="description">The default message.</span></li><li><strong>@param: </strong><span class="types"> {Number} </span><span class="name">code </span><span class="description">The error code.</span></li><li><strong>@param: </strong><span class="types"> {String} </span><span class="name">defaultExplanation </span><span class="description">The default explanation.</span></li><li><strong>@param: </strong><span class="types"> {String} </span><span class="name">defaultResponse </span><span class="description">The default operator response.</span></li><li><strong>@return: </strong><span class="types"> {Function} </span><span class="description">the newly created constructor</span></li></ul></div><pre><code class="language-javascript">var create = exports.create = function(options) {
    var options = options || {}
        , scope = options.scope || exports
        , parent = options.parent || Error
        , defaultMessage = options.defaultMessage
            || 'An unexpected ' + options.name + ' occurred.'
        , className = options.name
        , errorCode = options.code || nextCode()
        , defaultExplanation = options.defaultExplanation
        , defaultResponse= options.defaultResponse
        , formattedStack
        , stack = {};</code></pre></div><div class="comment"><div class="description"><p>Create a new instance of the exception optionally<br />specifying a message, explanation and response<br />for the new instance. If any of the arguments are<br />null, their value will default to their respective<br />default value use on the <code>create</code> call, or will<br />be null if no default was specified.</p></div><div class="tags"><ul class="no-bullet"><li><strong>@param: </strong><span class="types"> {String} </span><span class="name">msg </span><span class="description">The message to use for the error.</span></li><li><strong>@param: </strong><span class="types"> {String} </span><span class="name">expl </span><span class="description">The explanation to use for the error.</span></li><li><strong>@param: </strong><span class="types"> {String} </span><span class="name">fix </span><span class="description">The response to use for the error.</span></li><li><strong>@return: </strong><span class="types"> {Object} </span><span class="description">The newly created error.</span></li></ul></div><pre><code class="language-javascript">scope[className] = function(msg, expl, fix) {
        msg = msg || defaultMessage;
        expl = expl || defaultExplanation;
        fix = fix || defaultResponse;

        parent.call(this, msg);

        // hack around the defineProperty for stack so
        // we can delay stack formatting until access
        // for performance reasons
        Error.captureStackTrace(stack, scope[className]);</code></pre></div><div class="comment"><div class="description"><p>Return the stack tracks for the error.</p></div><div class="tags"><ul class="no-bullet"><li><strong>@return: </strong><span class="types"> {String} </span></li></ul></div><pre><code class="language-javascript">Object.defineProperty(this, 'stack', {
            configurable: true,
            enumerable: false,
            get: function() {
                if (!formattedStack) {
                    formattedStack = stack.stack.replace('[object Object]', 'Error: ' + msg);
                }
                return formattedStack;
            }
        });</code></pre></div><div class="comment"><div class="description"><p>Return the explanation for this error.</p></div><div class="tags"><ul class="no-bullet"><li><strong>@return: </strong><span class="types"> {String} </span></li></ul></div><pre><code class="language-javascript">Object.defineProperty(this, 'explanation', {
            value: expl,
            configurable: true,
            enumerable: true
        });</code></pre></div><div class="comment"><div class="description"><p>Return the operator response for this error.</p></div><div class="tags"><ul class="no-bullet"><li><strong>@return: </strong><span class="types"> {String} </span></li></ul></div><pre><code class="language-javascript">Object.defineProperty(this, 'response', {
            value: fix,
            configurable: true,
            enumerable: true
        });</code></pre></div><div class="comment"><div class="description"><p>Return the error code.</p></div><div class="tags"><ul class="no-bullet"><li><strong>@return: </strong><span class="types"> {Number} </span></li></ul></div><pre><code class="language-javascript">Object.defineProperty(this, 'code', {
            value: errorCode,
            configurable: true,
            enumerable: true
        });</code></pre></div><div class="comment"><div class="description"><p>HTTP status code of this error.</p>

<p>If the instance's <code>code</code> is not a valid<br />HTTP status code it's normalized to 500.s</p></div><div class="tags"><ul class="no-bullet"><li><strong>@return: </strong><span class="types"> {Number} </span></li></ul></div><pre><code class="language-javascript">Object.defineProperty(this, 'status', {
            value: http.STATUS_CODES[errorCode] ? errorCode : 500,
            configurable: true,
            // normalize for http status code and connect compat
            enumerable: true
        });</code></pre></div><div class="comment"><div class="description"><p>Name of this error.</p></div><div class="tags"><ul class="no-bullet"><li><strong>@return: </strong><span class="types"> {String} </span></li></ul></div><pre><code class="language-javascript">Object.defineProperty(this, 'name', {
            value: className,
            configurable: true,
            enumerable: true
        });</code></pre></div><div class="comment"><div class="description"><p>Message for this error.</p></div><div class="tags"><ul class="no-bullet"><li><strong>@return: </strong><span class="types"> {String} </span></li></ul></div><pre><code class="language-javascript">Object.defineProperty(this, 'message', {
            value: msg,
            configurable: true,
            enumerable: true
        });
    };

    util.inherits(scope[className], parent);</code></pre></div><div class="comment"><div class="description"><p>Return the name of the prototype.</p></div><div class="tags"><ul class="no-bullet"><li><strong>@return: </strong><span class="types"> {String} </span></li></ul></div><pre><code class="language-javascript">Object.defineProperty(scope[className].prototype, 'name', {
        value: className,
        enumerable: true
    });</code></pre></div><div class="comment"><div class="description"><p>Return a formatted string for this error which<br />includes the error's <code>name</code>, <code>message</code> and <code>code</code>.<br />The string will also include the <code>explanation</code> and<br /><code>response</code> if they are set for this instance.</p>

<p>Can be redefined by consumers to change formatting.</p></div><div class="tags"><ul class="no-bullet"><li><strong>@return: </strong><span class="types"> {String} </span></li></ul></div><pre><code class="language-javascript">scope[className].prototype.toString = function() {</code></pre></div><div class="comment"><div class="description"><p>Return the JSON representation of this error<br />which includes it's <code>name</code>, <code>code</code>, <code>message</code><br />and <code>status</code>. The JSON object returned will<br />also include the <code>explanation</code> and <code>response</code><br />if defined for this instance.</p>

<p>This method can be redefined for customized<br />behavior of <code>JSON.stringify()</code>.</p></div><div class="tags"><ul class="no-bullet"><li><strong>@return: </strong><span class="types"> {Object} </span></li></ul></div><pre><code class="language-javascript">scope[className].prototype.toJSON = function() {
        // TODO externalization
        return useStack
                ? mixin(this, {stack: this.stack}, true)
                : mixin(this, {}, true);
    };

    cache(className, errorCode, scope[className]);

    return scope[className];
};</code></pre></div><div class="comment"><div class="label radius ctx-type">method</div><h1 id="stacks">stacks</h1><h5 class="subheader">exports.stacks()</h5><div class="description"><p>Get/set the module default behavior in terms of if<br />stack traces should be included in <code>toString()</code>,<br /><code>send()</code>ing errors, etc.</p>

<p>When called with no parameters this method will return<br />if the errors module is set to use stacks or not.</p>

<p>When called with a single boolean parameter this<br />method will interally set if stack traces should be used.</p></div><div class="tags"><ul class="no-bullet"><li><strong>@param: </strong><span class="types"> {Boolean} </span><span class="name">useStacks </span></li></ul></div><pre><code class="language-javascript">exports.stacks = function(useStacks) {
    if (useStacks == null || useStacks == undefined) {
        return useStack;
    }
    useStack = useStacks;
};</code></pre></div><div class="comment"><div class="label radius ctx-type">method</div><h1 id="title">title</h1><h5 class="subheader">exports.title()</h5><div class="description"><p>Gets/sets the module's default page title to use for<br />html based responses.</p>

<p>If called with no arguments, returns the current title<br />set. Otherwise when called with a single <code>String</code> argument<br />sets the title to use for html based responses.</p>

<p>The default title is 'Error'.</p></div><div class="tags"><ul class="no-bullet"><li><strong>@param: </strong><span class="types"> {String} </span><span class="name">title </span><span class="description">The title to use.</span></li></ul></div><pre><code class="language-javascript">exports.title = function(title) {
    if (title == null || title == undefined) {
        return pageTitle;
    }
    pageTitle = title;
};</code></pre></div><div class="comment"><div class="description"><p>Base <code>Error</code> for web app HTTP based<br />exceptions -- all 4xx and 5xx wrappered<br />errors are instances of <code>HttpError</code>.</p></div><div class="tags"><ul class="no-bullet"></ul></div><pre><code class="language-javascript">create({name: 'HttpError'});</code></pre></div><div class="comment"><div class="description"><p><code>HttpError</code>s for all 4xx-5xx HTTP based status codes<br />defined as <code>Http[code]Error</code> for convenience.</p>

<h2>Examples</h2>

<p>// Accept: text/html<br /> res.send(new errors.Http404Error('Resource not found'));<br /> // => text/html<br /> // => "Resource not found"</p>

<p>// Accept: application/json<br /> res.send(new errors.Http423Error('Resource is currently locked'));<br /> // => application/json<br /> // {<br /> //      "name": "Http423Error",<br /> //      "code": 423,<br /> //      "status": 423,<br /> //      "message": "Resource is currently locked"<br /> // }</p>

<p>// Accept: text/plain<br /> // res.send(new errors.Http401Error('You do not have access'));<br /> // => text/plain<br /> // "You do not have access"</p></div><div class="tags"><ul class="no-bullet"></ul></div><pre><code class="language-javascript">for (code in http.STATUS_CODES) {
    // TODO: provide default explanation & response
    if (http.STATUS_CODES.hasOwnProperty(code) && code >= 400) {
        create({
            name: 'Http' + code + 'Error',
            code: code,
            parent: exports.HttpError,
            defaultMessage: http.STATUS_CODES[code]
        });
    }
}</code></pre></div><div class="comment"><div class="label radius ctx-type">method</div><h1 id="errorHandler">errorHandler</h1><h5 class="subheader">exports.errorHandler()</h5><div class="description"><p>Custom error handler middleware based on connect's<br /><code>errorHandler()</code> middleware. Althought out of the box<br />connect or express errorHandler() works just fine,<br />its not as pretty as you might like due to the additional<br />details in custom error's <code>toString()</code>.</p>

<p>Therefore <code>errors</code> exports its own <code>errorHandler()</code><br />middleware which supports an <code>options</code> object to configure<br />it.</p>

<p>The <code>options</code> JSON object accepts the following properties:</p></div><div class="tags"><ul class="no-bullet"><li><strong>@param: </strong><span class="types"> {String} </span><span class="name">title </span><span class="description">The title to use for html based responses which overrides module `title()`.</span></li><li><strong>@param: </strong><span class="types"> {Boolean} </span><span class="name">connectCompat </span><span class="description">True to create connect compat html responses.</span></li><li><strong>@param: </strong><span class="types"> {Boolean} </span><span class="name">includeStack </span><span class="description">True if the custom error handler should include the stack.</span></li></ul></div><pre><code class="language-javascript">exports.errorHandler = function(options) {
        var opts = mixin({connectCompat: false, title: pageTitle, includeStack: useStack}
                , options, true);
        if (opts.connectCompat) {
            return function(err, req, res, next) {
                if (isError(err)) {
                    // connect errorHandler() compat
                    err.toString = function() {
                        return err.message;
                    };
                }
                errHandler.title = opts.title;
                // connect middleware error handler
                return errHandler()(err, req, res, next);
            };
        } else {
            return defaultFormatter(opts.title, opts.includeStack);
        }
    };
}</code></pre></div><div class="comment"><div class="description"><p>If Express is installed, patch <code>response</code> to<br />permit <code>send</code>ing <code>Error</code> based objects. If<br />vanilla <code>Error</code> objects are used with <code>send</code>,<br />they are mapped by default to the <code>Http500Error</code>.</p>

<p>Prior to <code>send</code>ing an error based response, any<br />mapper setup for the <code>Error</code> is invoked allowing<br />customization or transformation of the error.</p>

<p>The current implementation provides direct support<br />for <code>text/html</code>, <code>text/plain</code> and <code>application/json</code><br />based accept types, otherwise it defaults to <code>plain/text</code>.</p>

<h2>Examples</h2>

<p>// Accept: text/html<br /> res.send(new errors.Http404Error('Resource not found'));<br /> // => html<br /> // => html structured response</p>

<p>// Accept: application/json<br /> res.send(new errors.Http423Error('Resource is currently locked'));<br /> // => application/json<br /> // => {<br /> // =>   'name': 'Http423Error',<br /> // =>   'code': 423,<br /> // =>   'status': 423,<br /> // =>   'message': 'Resource is currently locked'<br /> // => }</p>

<p>// Accept: text/plain<br /> // res.send(new errors.Http401Error('You do not have access'));<br /> // => text/plain<br /> // => "You do not have access"</p>

<p>// Accept: text/xml<br /> // res.send(new errors.Http500Error('Something bad happened'));<br /> // => 500<br /> // => text/plain</p></div><div class="tags"><ul class="no-bullet"></ul></div><pre><code class="language-javascript">if (response) {
    var _send = response.send;
    response.send = function(err) {
        if (arguments.length == 1 && err instanceof Error) {
            err = mapError(err);
            if (!isError(err)) {
                // map vanilla errors into 500s
                err = new exports.Http500Error(err.message ||
                        http.STATUS_CODES[500] + ' - ' + err.name);
            }
            defaultFormatter(pageTitle, useStack)(err, this.req, this.req.res, null);
            return this;
        }
        return _send.apply(this, arguments);
    };
}</code></pre></div><div class="comment"><div class="label radius ctx-type">declaration</div><h1 id="mapper">mapper</h1><h5 class="subheader">mapper</h5><div class="description"><p>Adds or retrieves an error mappers.</p>

<p>When called with 2 arguments, this method is used to<br />add error mappers for the given error names.</p>

<p>When called with a single argument it's used to<br />retrieve the registered mapper for the given<br />error name.</p>

<p>Any bound mappers will be invoked<br />for <code>express.send()</code> integration and hence you<br />can define mappers used when sending error responses<br />with Express.</p>

<h2>Examples</h2>

<p>// adding mappers<br /> errors.mapper('RangeError', function(rangeError) {<br />     return new errors.Http412Error('Invalid range requested');<br /> })<br /> .addmapper('ReferenceError', function(refError) {<br />     return new errors.Http424Error('Bad reference given');<br /> });</p>

<p>errors.mapper(['RangeError', 'ReferenceError'], function(err) {<br />     return new errors.Http500Error(err.message);<br /> });</p>

<p>// retrieve error mapper<br /> var rangeError = errors.mapper('RangeError');</p></div><div class="tags"><ul class="no-bullet"><li><strong>@param: </strong><span class="types"> {String,Array} </span><span class="name">errName </span><span class="description">The error name(s) to attach the mapper to.</span></li><li><strong>@param: </strong><span class="types"> {Function} </span><span class="name">fn </span><span class="description">The function to call for the mapping.</span></li><li><strong>@returns: </strong></li><li><strong>@retrieved: </strong></li></ul></div><pre><code class="language-javascript">var mapper = exports.mapper = function(errName, fn) {
    if (arguments.length == 2) {
        asArray(errName).forEach(function(name) {
            mappers[name] = fn;
        });
        return exports;
    }
    return mappers[errName];
};</code></pre></div><div class="comment"><div class="label radius ctx-type">declaration</div><h1 id="mapError">mapError</h1><h5 class="subheader">mapError</h5><div class="description"><p>Maps the given error using the bound error mapper<br />and returns the mapped error as per the mappers<br />return value. If no mapper is bound to the given<br />errors name, the argument error is returned unchanged.</p>

<h2>Examples</h2>

<p>errors.mapError(new RangeError());</p></div><div class="tags"><ul class="no-bullet"><li><strong>@param: </strong><span class="types"> {Object} </span><span class="name">err </span><span class="description">The error instance to map.</span></li><li><strong>@returns: </strong></li></ul></div><pre><code class="language-javascript">var mapError = exports.mapError = function(err) {
    return mapper(err.name) ? mapper(err.name)(err) : err;
};</code></pre></div></div></div><!-- Prism CSS--><style>code[class*="language-"],pre[class*="language-"]{color:black;text-shadow:0 1px white;font-family:Consolas,Monaco,'Andale Mono',monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*="language-"]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#f5f2f0}:not(pre)>code[class*="language-"]{padding:.1em;border-radius:.3em}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:slategray}.token.punctuation{color:#999}.namespace{opacity:.7}.token.property,.token.tag,.token.boolean,.token.number{color:#905}.token.selector,.token.attr-name,.token.string{color:#690}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:#a67f59;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.regex,.token.important{color:#e90}.token.important{font-weight:bold}.token.entity{cursor:help}</style><!-- Prism JS--><script>(function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={languages:{insertBefore:function(e,n,r,i){i=i||t.languages;var s=i[e],o={};for(var u in s)if(s.hasOwnProperty(u)){if(u==n)for(var a in r)r.hasOwnProperty(a)&&(o[a]=r[a]);o[u]=s[u]}return i[e]=o},DFS:function(e,n){for(var r in e){n.call(e,r,e[r]);Object.prototype.toString.call(e)==="[object Object]"&&t.languages.DFS(e[r],n)}}},highlightAll:function(e,n){var r=document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');for(var i=0,s;s=r[i++];)t.highlightElement(s,e===!0,n)},highlightElement:function(r,i,s){var o,u,a=r;while(a&&!e.test(a.className))a=a.parentNode;if(a){o=(a.className.match(e)||[,""])[1];u=t.languages[o]}if(!u)return;r.className=r.className.replace(e,"").replace(/\s+/g," ")+" language-"+o;a=r.parentNode;/pre/i.test(a.nodeName)&&(a.className=a.className.replace(e,"").replace(/\s+/g," ")+" language-"+o);var f=r.textContent.trim();if(!f)return;f=f.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\u00a0/g," ");var l={element:r,language:o,grammar:u,code:f};t.hooks.run("before-highlight",l);if(i&&self.Worker){var c=new Worker(t.filename);c.onmessage=function(e){l.highlightedCode=n.stringify(JSON.parse(e.data));l.element.innerHTML=l.highlightedCode;s&&s.call(l.element);t.hooks.run("after-highlight",l)};c.postMessage(JSON.stringify({language:l.language,code:l.code}))}else{l.highlightedCode=t.highlight(l.code,l.grammar);l.element.innerHTML=l.highlightedCode;s&&s.call(r);t.hooks.run("after-highlight",l)}},highlight:function(e,r){return n.stringify(t.tokenize(e,r))},tokenize:function(e,n){var r=t.Token,i=[e],s=n.rest;if(s){for(var o in s)n[o]=s[o];delete n.rest}e:for(var o in n){if(!n.hasOwnProperty(o)||!n[o])continue;var u=n[o],a=u.inside,f=!!u.lookbehind||0;u=u.pattern||u;for(var l=0;l<i.length;l++){var c=i[l];if(i.length>e.length)break e;if(c instanceof r)continue;u.lastIndex=0;var h=u.exec(c);if(h){f&&(f=h[1].length);var p=h.index-1+f,h=h[0].slice(f),d=h.length,v=p+d,m=c.slice(0,p+1),g=c.slice(v+1),y=[l,1];m&&y.push(m);var b=new r(o,a?t.tokenize(h,a):h);y.push(b);g&&y.push(g);Array.prototype.splice.apply(i,y)}}}return i},hooks:{all:{},add:function(e,n){var r=t.hooks.all;r[e]=r[e]||[];r[e].push(n)},run:function(e,n){var r=t.hooks.all[e];if(!r||!r.length)return;for(var i=0,s;s=r[i++];)s(n)}}},n=t.Token=function(e,t){this.type=e;this.content=t};n.stringify=function(e){if(typeof e=="string")return e;if(Object.prototype.toString.call(e)=="[object Array]"){for(var r=0;r<e.length;r++)e[r]=n.stringify(e[r]);return e.join("")}var i={type:e.type,content:n.stringify(e.content),tag:"span",classes:["token",e.type],attributes:{}};i.type=="comment"&&(i.attributes.spellcheck="true");t.hooks.run("wrap",i);var s="";for(var o in i.attributes)s+=o+'="'+(i.attributes[o]||"")+'"';return"<"+i.tag+' class="'+i.classes.join(" ")+'" '+s+">"+i.content+"</"+i.tag+">"};if(!self.document){self.addEventListener("message",function(e){var n=JSON.parse(e.data),r=n.language,i=n.code;self.postMessage(JSON.stringify(t.tokenize(i,t.languages[r])));self.close()},!1);return}var r=document.getElementsByTagName("script");r=r[r.length-1];if(r){t.filename=r.src;document.addEventListener&&!r.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)}})();Prism.languages.markup={comment:/&lt;!--[\w\W]*?--(&gt;|&gt;)/g,prolog:/&lt;\?.+?\?&gt;/,doctype:/&lt;!DOCTYPE.+?&gt;/,cdata:/&lt;!\[CDATA\[[\w\W]+?]]&gt;/i,tag:{pattern:/&lt;\/?[\w:-]+\s*[\w\W]*?&gt;/gi,inside:{tag:{pattern:/^&lt;\/?[\w:-]+/i,inside:{punctuation:/^&lt;\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(('|")[\w\W]*?(\2)|[^\s>]+)/gi,inside:{punctuation:/=/g}},punctuation:/\/?&gt;/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/&amp;#?[\da-z]{1,8};/gi};Prism.hooks.add("wrap",function(e){e.type==="entity"&&(e.attributes.title=e.content.replace(/&amp;/,"&"))});Prism.languages.css={comment:/\/\*[\w\W]*?\*\//g,atrule:/@[\w-]+?(\s+.+)?(?=\s*{|\s*;)/gi,url:/url\((["']?).*?\1\)/gi,selector:/[^\{\}\s][^\{\}]*(?=\s*\{)/g,property:/(\b|\B)[a-z-]+(?=\s*:)/ig,string:/("|')(\\?.)*?\1/g,important:/\B!important\b/gi,ignore:/&(lt|gt|amp);/gi,punctuation:/[\{\};:]/g};Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{style:{pattern:/(&lt;|<)style[\w\W]*?(>|&gt;)[\w\W]*?(&lt;|<)\/style(>|&gt;)/ig,inside:{tag:{pattern:/(&lt;|<)style[\w\W]*?(>|&gt;)|(&lt;|<)\/style(>|&gt;)/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css}}});Prism.languages.javascript={comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|\/\/.*?(\r?\n|$))/g,lookbehind:!0},string:/("|')(\\?.)*?\1/g,regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0},keyword:/\b(var|let|if|else|while|do|for|return|in|instanceof|function|new|with|typeof|try|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,number:/\b-?(0x)?\d*\.?\d+\b/g,operator:/[-+]{1,2}|!|=?&lt;|=?&gt;|={1,2}|(&amp;){1,2}|\|?\||\?|\*|\//g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g};Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(&lt;|<)script[\w\W]*?(>|&gt;)[\w\W]*?(&lt;|<)\/script(>|&gt;)/ig,inside:{tag:{pattern:/(&lt;|<)script[\w\W]*?(>|&gt;)|(&lt;|<)\/script(>|&gt;)/ig,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript}}});</script><!-- App js--><script>$(function(){var $structure=$('#folder-structure'),$superUl=$structure.find('> ul')
$structure.find('h6').click(function(){var $ul=$(this).siblings('ul')
console.log($ul.parents('ul.active'))
if($ul.parents('ul.active').length===0){console.log('no parents')
$structure.find('ul.active').removeClass('active')}else{console.log('parents')
$ul.parents('.active').find('ul.active').removeClass('active')}
$ul.addClass('active')})
$structure.find('a').each(function(){var $anchor=$(this),regexp=new RegExp($anchor.attr('href')+"$"),url=document.location.href,isIndexHtml=url.match(/index\.html$/)
if(isIndexHtml||url.match(regexp)){if(!isIndexHtml){$anchor.parent().addClass('active')}
$anchor.parents('ul').addClass('active')}})
$superUl.removeClass('active')})</script></body></html>