4389 lines
745 KiB
HTML
4389 lines
745 KiB
HTML
<!DOCTYPE html><html><head><meta charset='UTF-8' /><meta http-equiv='X-UA-Compatible' content='IE=edge'><meta name='viewport' content='width=device-width, initial-scale=1'><meta name='robots' content='noindex, nofollow' /><title>Server Statistics</title><style>/*!* Font Awesome Free 5.0.10 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license(Icons:CC BY 4.0,Fonts:SIL OFL 1.1,Code:MIT License) */ .fa,.fas,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fas.fa-pull-left,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fas.fa-pull-right,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1)";-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1)";-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-horizontal.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1)";-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before,.fa-wheelchair-alt:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-address-book:before,.fa-address-book-o:before{content:"\f2b9"}.fa-address-card:before,.fa-vcard:before,.fa-address-card-o:before,.fa-vcard-o:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-arrow-alt-circle-down:before,.fa-arrow-circle-o-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before,.fa-arrow-circle-o-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before,.fa-arrow-circle-o-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before,.fa-arrow-circle-o-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before,.fa-arrows:before{content:"\f0b2"}.fa-arrows-alt-h:before,.fa-arrows-h:before{content:"\f337"}.fa-arrows-alt-v:before,.fa-arrows-v:before{content:"\f338"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-aws:before{content:"\f375"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:"\f2cd"}.fa-battery-empty:before,.fa-battery-0:before{content:"\f244"}.fa-battery-full:before,.fa-battery-4:before,.fa-battery:before{content:"\f240"}.fa-battery-half:before,.fa-battery-2:before{content:"\f242"}.fa-battery-quarter:before,.fa-battery-1:before{content:"\f243"}.fa-battery-three-quarters:before,.fa-battery-3:before{content:"\f241"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before,.fa-bell-o:before{content:"\f0f3"}.fa-bell-slash:before,.fa-bell-slash-o:before{content:"\f1f6"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before,.fa-bitbucket-square:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blind:before{content:"\f29d"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-book:before{content:"\f02d"}.fa-bookmark:before,.fa-bookmark-o:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-btc:before,.fa-bitcoin:before{content:"\f15a"}.fa-bug:before{content:"\f188"}.fa-building:before,.fa-building-o:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before,.fa-calendar-o:before{content:"\f133"}.fa-calendar-alt:before,.fa-calendar:before{content:"\f073"}.fa-calendar-check:before,.fa-calendar-check-o:before{content:"\f274"}.fa-calendar-minus:before,.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-plus:before,.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-times:before,.fa-calendar-times-o:before{content:"\f273"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-capsules:before{content:"\f46b"}.fa-car:before,.fa-automobile:before{content:"\f1b9"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before,.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-left:before,.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-caret-square-right:before,.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-caret-square-up:before,.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-certificate:before{content:"\f0a3"}.fa-chart-area:before,.fa-area-chart:before{content:"\f1fe"}.fa-chart-bar:before,.fa-bar-chart:before,.fa-bar-chart-o:before{content:"\f080"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before,.fa-check-circle-o:before{content:"\f058"}.fa-check-square:before,.fa-check-square-o:before{content:"\f14a"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-circle:before,.fa-circle-o:before,.fa-circle-thin:before{content:"\f111"}.fa-circle-notch:before,.fa-circle-o-notch:before{content:"\f1ce"}.fa-clipboard:before,.fa-paste:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before,.fa-clock-o:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before,.fa-cc:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f381"}.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-code:before{content:"\f121"}.fa-code-branch:before,.fa-code-fork:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-columns:before{content:"\f0db"}.fa-comment:before,.fa-comment-o:before{content:"\f075"}.fa-comment-alt:before,.fa-commenting:before,.fa-commenting-o:before{content:"\f27a"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before,.fa-comments-o:before{content:"\f086"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-credit-card:before,.fa-credit-card-alt:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crosshairs:before{content:"\f05b"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-deviantart:before{content:"\f1bd"}.fa-diagnoses:before{content:"\f470"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dollar-sign:before,.fa-usd:before,.fa-dollar:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-dot-circle:before,.fa-dot-circle-o:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-edge:before{content:"\f282"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ember:before{content:"\f423"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-envelope:before,.fa-envelope-o:before{content:"\f0e0"}.fa-envelope-open:before,.fa-envelope-open-o:before{content:"\f2b6"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before,.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-exchange-alt:before,.fa-exchange:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before,.fa-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before,.fa-external-link:before{content:"\f35d"}.fa-external-link-square-alt:before,.fa-external-link-square:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before,.fa-facebook-official:before{content:"\f09a"}.fa-facebook-f:before,.fa-facebook:before,.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-file:before,.fa-file-o:before{content:"\f15b"}.fa-file-alt:before,.fa-file-text-o:before,.fa-file-text:before{content:"\f15c"}.fa-file-archive:before,.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio:before,.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-code:before,.fa-file-code-o:before{content:"\f1c9"}.fa-file-excel:before,.fa-file-excel-o:before{content:"\f1c3"}.fa-file-image:before,.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before,.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-powerpoint:before,.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-video:before,.fa-file-video-o:before,.fa-file-movie-o:before{content:"\f1c8"}.fa-file-word:before,.fa-file-word-o:before{content:"\f1c2"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-firstdraft:before{content:"\f3a1"}.fa-flag:before,.fa-flag-o:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-folder:before,.fa-folder-o:before{content:"\f07b"}.fa-folder-open:before,.fa-folder-open-o:before{content:"\f07c"}.fa-font:before{content:"\f031"}.fa-font-awesome:before,.fa-meanpath:before,.fa-fa:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frown:before,.fa-frown-o:before{content:"\f119"}.fa-futbol:before,.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-gamepad:before{content:"\f11b"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-gem:before,.fa-diamond:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-gift:before{content:"\f06b"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-martini:before,.fa-glass:before{content:"\f000"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before,.fa-google-plus-official:before,.fa-google-plus-circle:before{content:"\f2b3"}.fa-google-plus-g:before,.fa-google-plus:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-gratipay:before,.fa-gittip:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before,.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-paper:before,.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:"\f256"}.fa-hand-peace:before,.fa-hand-peace-o:before{content:"\f25b"}.fa-hand-point-down:before,.fa-hand-o-down:before{content:"\f0a7"}.fa-hand-point-left:before,.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-point-right:before,.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-point-up:before,.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-pointer:before,.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-rock:before,.fa-hand-rock-o:before,.fa-hand-grab-o:before{content:"\f255"}.fa-hand-scissors:before,.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-spock:before,.fa-hand-spock-o:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before,.fa-handshake-o:before{content:"\f2b5"}.fa-hashtag:before{content:"\f292"}.fa-hdd:before,.fa-hdd-o:before{content:"\f0a0"}.fa-heading:before,.fa-header:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-heart:before,.fa-heart-o:before{content:"\f004"}.fa-heartbeat:before{content:"\f21e"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hospital:before,.fa-hospital-o:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before,.fa-hourglass-o:before{content:"\f254"}.fa-hourglass-end:before,.fa-hourglass-3:before{content:"\f253"}.fa-hourglass-half:before,.fa-hourglass-2:before{content:"\f252"}.fa-hourglass-start:before,.fa-hourglass-1:before{content:"\f251"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before,.fa-drivers-license:before,.fa-id-card-o:before,.fa-drivers-license-o:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-image:before,.fa-picture-o:before,.fa-photo:before,.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-internet-explorer:before{content:"\f26b"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jenkins:before{content:"\f3b6"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-key:before{content:"\f084"}.fa-keyboard:before,.fa-keyboard-o:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-korvue:before{content:"\f42f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before,.fa-lemon-o:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-level-down-alt:before,.fa-level-down:before{content:"\f3be"}.fa-level-up-alt:before,.fa-level-up:before{content:"\f3bf"}.fa-life-ring:before,.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-lightbulb:before,.fa-lightbulb-o:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before,.fa-chain:before{content:"\f0c1"}.fa-linkedin:before,.fa-linkedin-square:before{content:"\f08c"}.fa-linkedin-in:before,.fa-linkedin:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before,.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before,.fa-long-arrow-down:before{content:"\f309"}.fa-long-arrow-alt-left:before,.fa-long-arrow-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before,.fa-long-arrow-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before,.fa-long-arrow-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-male:before{content:"\f183"}.fa-map:before,.fa-map-o:before{content:"\f279"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before,.fa-map-marker:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-maxcdn:before{content:"\f136"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-meh:before,.fa-meh-o:before{content:"\f11a"}.fa-mercury:before{content:"\f223"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before,.fa-minus-square-o:before{content:"\f146"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before,.fa-mobile:before,.fa-mobile-phone:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill-alt:before,.fa-money:before{content:"\f3d1"}.fa-moon:before,.fa-moon-o:before{content:"\f186"}.fa-motorcycle:before{content:"\f21c"}.fa-mouse-pointer:before{content:"\f245"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before,.fa-newspaper-o:before{content:"\f1ea"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-outdent:before,.fa-dedent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before,.fa-send:before,.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before,.fa-pause-circle-o:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-pen-square:before,.fa-pencil-square:before{content:"\f14b"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-people-carry:before{content:"\f4ce"}.fa-percent:before{content:"\f295"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-plane:before{content:"\f072"}.fa-play:before{content:"\f04b"}.fa-play-circle:before,.fa-play-circle-o:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before,.fa-plus-square-o:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-pound-sign:before,.fa-gbp:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before,.fa-question-circle-o:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-random:before{content:"\f074"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before,.fa-ra:before,.fa-resistance:before{content:"\f1d0"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redo:before,.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-rendact:before{content:"\f3e4"}.fa-renren:before{content:"\f18b"}.fa-reply:before,.fa-mail-reply:before{content:"\f3e5"}.fa-reply-all:before,.fa-mail-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-resolving:before{content:"\f3e7"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-road:before{content:"\f018"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rss:before,.fa-feed:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before,.fa-rub:before,.fa-ruble:before,.fa-rouble:before{content:"\f158"}.fa-rupee-sign:before,.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-scribd:before{content:"\f28a"}.fa-search:before{content:"\f002"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before,.fa-eercast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-share:before,.fa-mail-forward:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before,.fa-share-square-o:before{content:"\f14d"}.fa-shekel-sign:before,.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-shield-alt:before,.fa-shield:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shower:before{content:"\f2cc"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before,.fa-sign-in:before{content:"\f2f6"}.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-sign-out-alt:before,.fa-sign-out:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before,.fa-smile-o:before{content:"\f118"}.fa-smoking:before{content:"\f48d"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowflake:before,.fa-snowflake-o:before{content:"\f2dc"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-alpha-down:before,.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-up:before,.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-down:before,.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-up:before,.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-numeric-down:before,.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-up:before,.fa-sort-numeric-desc:before{content:"\f163"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spinner:before{content:"\f110"}.fa-spotify:before{content:"\f1bc"}.fa-square:before,.fa-square-o:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-star:before,.fa-star-o:before{content:"\f005"}.fa-star-half:before,.fa-star-half-o:before,.fa-star-half-empty:before,.fa-star-half-full:before{content:"\f089"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before,.fa-sticky-note-o:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before,.fa-stop-circle-o:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-strava:before{content:"\f428"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-sun:before,.fa-sun-o:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-sync:before,.fa-refresh:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before,.fa-tablet:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before,.fa-tachometer:before,.fa-dashboard:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before,.fa-cab:before{content:"\f1ba"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before,.fa-thermometer-0:before{content:"\f2cb"}.fa-thermometer-full:before,.fa-thermometer-4:before,.fa-thermometer:before{content:"\f2c7"}.fa-thermometer-half:before,.fa-thermometer-2:before{content:"\f2c9"}.fa-thermometer-quarter:before,.fa-thermometer-1:before{content:"\f2ca"}.fa-thermometer-three-quarters:before,.fa-thermometer-3:before{content:"\f2c8"}.fa-thumbs-down:before,.fa-thumbs-o-down:before{content:"\f165"}.fa-thumbs-up:before,.fa-thumbs-o-up:before{content:"\f164"}.fa-thumbtack:before,.fa-thumb-tack:before{content:"\f08d"}.fa-ticket-alt:before,.fa-ticket:before{content:"\f3ff"}.fa-times:before,.fa-remove:before,.fa-close:before{content:"\f00d"}.fa-times-circle:before,.fa-times-circle-o:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-trademark:before{content:"\f25c"}.fa-train:before{content:"\f238"}.fa-transgender:before,.fa-intersex:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before,.fa-trash-o:before,.fa-trash:before{content:"\f2ed"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-moving:before{content:"\f4df"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-underline:before{content:"\f0cd"}.fa-undo:before,.fa-rotate-left:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before,.fa-institution:before,.fa-bank:before{content:"\f19c"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-usb:before{content:"\f287"}.fa-user:before,.fa-user-o:before{content:"\f007"}.fa-user-circle:before,.fa-user-circle-o:before{content:"\f2bd"}.fa-user-md:before{content:"\f0f0"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-times:before{content:"\f235"}.fa-users:before,.fa-group:before{content:"\f0c0"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before,.fa-spoon:before{content:"\f2e5"}.fa-utensils:before,.fa-cutlery:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before,.fa-video-camera:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before,.fa-vimeo:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vuejs:before{content:"\f41f"}.fa-warehouse:before{content:"\f494"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weixin:before,.fa-wechat:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-window-close:before,.fa-times-rectangle:before,.fa-window-close-o:before,.fa-times-rectangle-o:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-glass:before{content:"\f4e3"}.fa-won-sign:before,.fa-krw:before,.fa-won:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before,.fa-yc:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before,.fa-jpy:before,.fa-cny:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before,.fa-youtube-play:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:'Font Awesome 5 Brands';font-style:normal;font-weight:normal;src:url(data:application/font-woff;charset=utf-8;base64,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) format("woff")}.fab,.fa.fa-meetup,.fa.fa-twitter-square,.fa.fa-facebook-square,.fa.fa-linkedin-square,.fa.fa-github-square,.fa.fa-twitter,.fa.fa-facebook,.fa.fa-facebook-f,.fa.fa-github,.fa.fa-pinterest,.fa.fa-pinterest-square,.fa.fa-google-plus-square,.fa.fa-google-plus,.fa.fa-linkedin,.fa.fa-github-alt,.fa.fa-maxcdn,.fa.fa-html5,.fa.fa-css3,.fa.fa-btc,.fa.fa-bitcoin,.fa.fa-youtube-square,.fa.fa-youtube,.fa.fa-xing,.fa.fa-xing-square,.fa.fa-youtube-play,.fa.fa-dropbox,.fa.fa-stack-overflow,.fa.fa-instagram,.fa.fa-flickr,.fa.fa-adn,.fa.fa-bitbucket,.fa.fa-bitbucket-square,.fa.fa-tumblr,.fa.fa-tumblr-square,.fa.fa-apple,.fa.fa-windows,.fa.fa-android,.fa.fa-linux,.fa.fa-dribbble,.fa.fa-skype,.fa.fa-foursquare,.fa.fa-trello,.fa.fa-gratipay,.fa.fa-gittip,.fa.fa-vk,.fa.fa-weibo,.fa.fa-renren,.fa.fa-pagelines,.fa.fa-stack-exchange,.fa.fa-vimeo-square,.fa.fa-slack,.fa.fa-wordpress,.fa.fa-openid,.fa.fa-yahoo,.fa.fa-google,.fa.fa-reddit,.fa.fa-reddit-square,.fa.fa-stumbleupon-circle,.fa.fa-stumbleupon,.fa.fa-delicious,.fa.fa-digg,.fa.fa-pied-piper-pp,.fa.fa-pied-piper-alt,.fa.fa-drupal,.fa.fa-joomla,.fa.fa-behance,.fa.fa-behance-square,.fa.fa-steam,.fa.fa-steam-square,.fa.fa-spotify,.fa.fa-soundcloud,.fa.fa-vine,.fa.fa-codepen,.fa.fa-jsfiddle,.fa.fa-rebel,.fa.fa-ra,.fa.fa-resistance,.fa.fa-empire,.fa.fa-ge,.fa.fa-git-square,.fa.fa-git,.fa.fa-hacker-news,.fa.fa-y-combinator-square,.fa.fa-yc-square,.fa.fa-tencent-weibo,.fa.fa-qq,.fa.fa-weixin,.fa.fa-wechat,.fa.fa-slideshare,.fa.fa-twitch,.fa.fa-yelp,.fa.fa-paypal,.fa.fa-google-wallet,.fa.fa-cc-visa,.fa.fa-cc-mastercard,.fa.fa-cc-discover,.fa.fa-cc-amex,.fa.fa-cc-paypal,.fa.fa-cc-stripe,.fa.fa-lastfm,.fa.fa-lastfm-square,.fa.fa-ioxhost,.fa.fa-angellist,.fa.fa-meanpath,.fa.fa-buysellads,.fa.fa-connectdevelop,.fa.fa-dashcube,.fa.fa-forumbee,.fa.fa-leanpub,.fa.fa-sellsy,.fa.fa-shirtsinbulk,.fa.fa-simplybuilt,.fa.fa-skyatlas,.fa.fa-facebook-official,.fa.fa-pinterest-p,.fa.fa-whatsapp,.fa.fa-viacoin,.fa.fa-medium,.fa.fa-y-combinator,.fa.fa-yc,.fa.fa-optin-monster,.fa.fa-opencart,.fa.fa-expeditedssl,.fa.fa-cc-jcb,.fa.fa-cc-diners-club,.fa.fa-creative-commons,.fa.fa-gg,.fa.fa-gg-circle,.fa.fa-tripadvisor,.fa.fa-odnoklassniki,.fa.fa-odnoklassniki-square,.fa.fa-get-pocket,.fa.fa-wikipedia-w,.fa.fa-safari,.fa.fa-chrome,.fa.fa-firefox,.fa.fa-opera,.fa.fa-internet-explorer,.fa.fa-contao,.fa.fa-500px,.fa.fa-amazon,.fa.fa-houzz,.fa.fa-vimeo,.fa.fa-black-tie,.fa.fa-fonticons,.fa.fa-reddit-alien,.fa.fa-edge,.fa.fa-codiepie,.fa.fa-modx,.fa.fa-fort-awesome,.fa.fa-usb,.fa.fa-product-hunt,.fa.fa-mixcloud,.fa.fa-scribd,.fa.fa-bluetooth,.fa.fa-bluetooth-b,.fa.fa-gitlab,.fa.fa-wpbeginner,.fa.fa-wpforms,.fa.fa-envira,.fa.fa-wheelchair-alt,.fa.fa-glide,.fa.fa-glide-g,.fa.fa-viadeo,.fa.fa-viadeo-square,.fa.fa-snapchat,.fa.fa-snapchat-ghost,.fa.fa-snapchat-square,.fa.fa-pied-piper,.fa.fa-first-order,.fa.fa-yoast,.fa.fa-themeisle,.fa.fa-google-plus-official,.fa.fa-google-plus-circle,.fa.fa-font-awesome,.fa.fa-fa,.fa.fa-linode,.fa.fa-quora,.fa.fa-free-code-camp,.fa.fa-telegram,.fa.fa-bandcamp,.fa.fa-grav,.fa.fa-etsy,.fa.fa-imdb,.fa.fa-ravelry,.fa.fa-eercast,.fa.fa-superpowers,.fa.fa-wpexplorer,.fa.fa-deviantart{font-family:'Font Awesome 5 Brands'}@font-face{font-family:'Font Awesome 5 Free';font-style:normal;font-weight:400;src:url(data:application/font-woff;charset=utf-8;base64,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) format("woff")}.far,.fa.fa-star-o,.fa.fa-trash-o,.fa.fa-file-o,.fa.fa-clock-o,.fa.fa-arrow-circle-o-down,.fa.fa-arrow-circle-o-up,.fa.fa-play-circle-o,.fa.fa-list-alt,.fa.fa-picture-o,.fa.fa-photo,.fa.fa-image,.fa.fa-pencil-square-o,.fa.fa-share-square-o,.fa.fa-check-square-o,.fa.fa-times-circle-o,.fa.fa-check-circle-o,.fa.fa-eye-slash,.fa.fa-bar-chart,.fa.fa-bar-chart-o,.fa.fa-thumbs-o-up,.fa.fa-thumbs-o-down,.fa.fa-heart-o,.fa.fa-lemon-o,.fa.fa-square-o,.fa.fa-bookmark-o,.fa.fa-credit-card,.fa.fa-hdd-o,.fa.fa-hand-o-right,.fa.fa-hand-o-left,.fa.fa-hand-o-up,.fa.fa-hand-o-down,.fa.fa-files-o,.fa.fa-floppy-o,.fa.fa-money,.fa.fa-comment-o,.fa.fa-comments-o,.fa.fa-clipboard,.fa.fa-paste,.fa.fa-lightbulb-o,.fa.fa-bell-o,.fa.fa-file-text-o,.fa.fa-building-o,.fa.fa-hospital-o,.fa.fa-circle-o,.fa.fa-folder-o,.fa.fa-folder-open-o,.fa.fa-smile-o,.fa.fa-frown-o,.fa.fa-meh-o,.fa.fa-keyboard-o,.fa.fa-flag-o,.fa.fa-star-half-o,.fa.fa-star-half-empty,.fa.fa-star-half-full,.fa.fa-calendar-o,.fa.fa-minus-square-o,.fa.fa-compass,.fa.fa-caret-square-o-down,.fa.fa-toggle-down,.fa.fa-caret-square-o-up,.fa.fa-toggle-up,.fa.fa-caret-square-o-right,.fa.fa-toggle-right,.fa.fa-sun-o,.fa.fa-moon-o,.fa.fa-arrow-circle-o-right,.fa.fa-arrow-circle-o-left,.fa.fa-caret-square-o-left,.fa.fa-toggle-left,.fa.fa-dot-circle-o,.fa.fa-plus-square-o,.fa.fa-envelope-o,.fa.fa-file-pdf-o,.fa.fa-file-word-o,.fa.fa-file-excel-o,.fa.fa-file-powerpoint-o,.fa.fa-file-image-o,.fa.fa-file-photo-o,.fa.fa-file-picture-o,.fa.fa-file-archive-o,.fa.fa-file-zip-o,.fa.fa-file-audio-o,.fa.fa-file-sound-o,.fa.fa-file-video-o,.fa.fa-file-movie-o,.fa.fa-file-code-o,.fa.fa-life-ring,.fa.fa-life-bouy,.fa.fa-life-buoy,.fa.fa-life-saver,.fa.fa-support,.fa.fa-paper-plane-o,.fa.fa-send-o,.fa.fa-circle-thin,.fa.fa-futbol-o,.fa.fa-soccer-ball-o,.fa.fa-newspaper-o,.fa.fa-bell-slash-o,.fa.fa-copyright,.fa.fa-cc,.fa.fa-diamond,.fa.fa-object-group,.fa.fa-object-ungroup,.fa.fa-sticky-note-o,.fa.fa-clone,.fa.fa-hourglass-o,.fa.fa-hand-rock-o,.fa.fa-hand-grab-o,.fa.fa-hand-paper-o,.fa.fa-hand-stop-o,.fa.fa-hand-scissors-o,.fa.fa-hand-lizard-o,.fa.fa-hand-spock-o,.fa.fa-hand-pointer-o,.fa.fa-hand-peace-o,.fa.fa-registered,.fa.fa-calendar-plus-o,.fa.fa-calendar-minus-o,.fa.fa-calendar-times-o,.fa.fa-calendar-check-o,.fa.fa-map-o,.fa.fa-commenting-o,.fa.fa-pause-circle-o,.fa.fa-stop-circle-o,.fa.fa-question-circle-o,.fa.fa-handshake-o,.fa.fa-envelope-open-o,.fa.fa-address-book-o,.fa.fa-address-card-o,.fa.fa-vcard-o,.fa.fa-user-circle-o,.fa.fa-user-o,.fa.fa-id-badge,.fa.fa-id-card-o,.fa.fa-drivers-license-o,.fa.fa-window-maximize,.fa.fa-window-restore,.fa.fa-window-close-o,.fa.fa-times-rectangle-o,.fa.fa-snowflake-o{font-family:'Font Awesome 5 Free';font-weight:400}@font-face{font-family:'Font Awesome 5 Free';font-style:normal;font-weight:900;src:url(data:application/font-woff;charset=utf-8;base64,d09GMgABAAAAAKwIAAsAAAABwPAAAKu1AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGVgDIfgqF4CyEzmkBNgIkA5B4C4g+AAQgBYV6B7UpWyVzcUXc9hkqEZDuhKKSldn/oxVMNxc8nbcx7yUV6FawY0aA80AROT652f///+9IFmPM/wPvAV5F1aiqra2tTVGozCxp5oKqUBVlYohClGs2p41VCpiUzaCJL9O6zFk5cEVARUBFQJnF3d3Dtwo5BNbN3X1HxzSd5Oi299Lz5kloJct5b6OUywklM3C9VVAS712dpTzkQzPkcw4aAQMYe16emulklC5fW45aQL7hG3xmooRteC7ffGniO6ZQqKnTT9QFPggPRu8MWldTTTpaQ4go1L9RGFzwWDi97g91Gd75QDa+dVklxf/DHqG11kZVh+hgU/+hlPdAlhi7NgTGlC498gSD4sAyW4A46Wf7BSKVFYBT03UieJKQskStk42hCQn9dN8Nz8+tB9tf/EXD2AYrxkaPbUQuiR4xQpRN4g8wSBlibBbMBBvrwAT1TjES74Zxxoln9CmH3lkXKnfciXfeuYF5hpwn+yT9Iwe794kSaW3lWQJJW2CBYIJhIK2A9x9bq2aJmBf58A1JQAREiYhUFYW1Lr3tpz71eW6XGbbt7A1mhf/ffu0O+OlEMW1vVkLEGtswSfgbrItJ2orO/F3wEhaS2KftQgkMFHy8OV3RgBQUJ3Fa5l7Spn86MOdynprcGzS9/Px/35b1NhUvey9JZj/OmesBw2vMGAtKkru/0/8BAgAhirG2ey+axNI3x1v4zJDaR0oULc00M51Ew/MFwM/n1P6lmZ003QkMSTNgxxSY9qVBp2k7VAJJt/A+tJ5pPsFiY2/t7b33CBJ3QBY6SWcacBJDGQwZAPCfAQACkGUMVOswflMiphej5CtPI8CitXFfatRZVJLoLJahvTOg4gnrFTZ5l8aqOTtVaoW6pICuPJ58YD/heyoRAOPsSpjqXiGD+Z3pkIVQKIbG/UrXJ7n/JqnaXAxD+CknoKtq+L4Anl2f9nG4lq7StYMJM7OBMPBTSA7/m7NKmr5JlcEPBUO7W0ALSDfJP4kutpVuLWffy+FiX+1roGg4KRyk9JwWEeK/S2e/7jtLaWARDthdp3QM6AikVMX8ufaZN3WJPuQPdID8knw44JUlYXbtxqhOx6M9prYBVRW9+rTYdfY9uISDCcimoFhD8tjY2FRrCOiYgsd1A6q4SUsJ6PZ/ppotqHApdw6RfqfqQtE5xKpx0WLm/5nR7OzsCokUsCRhAqJoEKJkMAqKswOStzukZBLSvSfKKd1lnpwiw4UQazdljK93WfjZr7+U39+ruL+MX2mp4HenFItYBLqHZTGlgQUDGAAISywEHiracZ5otgCW/dz0pbPvKmHjXDY/27Mp+Yd4OM2fyZ7ZzXVP4XDq91rd4rXU3XS3uoUkGiwJAZKMTSMEiGALSbalBmzRmBmsCcXYPzCeHxx+CmrJAgmMLeGIZ2bX9vycjp7ZFNPhMnu4/eve9nA77uG+68705qFd00DawkC665c8agXFhyBoLSHJNgn1EspgA/Au6udTW9pB2Gpm4SoONU9V5m/2jO98+09kz9r9Eh7uFkIajFGNEEIchDBu9//5kW3/7wFMLO7AMRwxcihItfH+n8Zm277L3Q8LbcACif5f5vw/ONr9/ujCtj61CmgVGTNkkJtsHWTOMiCtd9sPNERZYQnOOjYBMoHz/v+NEEB19KWPxPRq6wr62HtqPLiRIqwO6M1M7DMiCJSZAipOkRkZCiorT0r4rW6VQNpDgCmt3/sWNFOKgkpEwoua+zALheGXzY8z/NfRuxGT1zcMkJ5CBUDP/SnWIFfr1UGFTqUnYo5o6f5AFak+QYIDVMH6b7GStW1gF0X19G72itVHnnhqeVVdU1tn/9D88jklfUMTG1fJjhsPvovVzeHh5btP30VT2UZ38hcvVWqNznZ/evzPN9v9+fYON0GOps3K8iu0qGJLj82pbuvsPyYxJTO3uLy1fcfOPeKTc8sqquvy72TSxJUXrppsMSubM3/hvkt23X3YuEnzlq3brUu3B5UocRKoaUEQGBZPonN4QqnGaHZ4+cJQWDKNqzE5uLiBUDyFzuIIJBeR0pCx4zm/lDbXXuF49vU+BEm2+SK9G5Ehi1gBuxV048yQ6/74/PXHL3KJzORb/d9IQdheDY93b7nEHa4frZKFylRpnIQpi0kTkyBm6CB+3Mkva5m+RyTmmEmyOQcXvRJ8+lyg7I6FjYBzfXPz8AEXDJ7qds7EwdQ+tviTgaTYEy5SutxIhc1Tuqde+PT8+f0Ctey1HrywuWo51Fo9/fGFYrXIvRccTSSz5ZLLN2KmhQM/wi9/w25xOCYXX8KP8sV6sz1+/4ar9b2Y0ws9xtFsvjgtD6dzU65Ne3bJHbOHx0ndZcb8gsfIwjQzUYhK+KIVgxjdhbiiG9w95aFYBX4tszX2aZknH3avB913eD+1ulU1tFO+GYozWub+aNm7lLhA1+0lqVNql7q1km2kG8Yxrpmn20bn1Z3uqoyKqIJKhM7lRR8xdTIAkfCzBzrpFV2raUrHfOvVTnnQ8XKqS9dz9hJbTD264ydAEF8bPOeqZmYgZs0vcV3xspc8HcKp+ZqTs79OXFZL2uYrXzqIR97qXNHxxnrbf2lZZdP7xHU57cZMYT5hAzZBNMeDF5dn43bTR6YRGSrtVPrCza7O1MqO6ZUk/77ur7xTeOOsEMyXn/oOd7BDHusDPxrTriayNEGf82zDhqkJQzXCSIcN8bIZ6FAbdVAT9TBjwWgoTtdKqb15HXFKe3xXogexXeu281uUVLfz+ifHxrLRhb7xeHPSpuHuch2OliFTGhrCzt3gZt1GFUWk19TU1utTqkK53RLMVT2+lo/bl7smmmyq6Wab61533aTU+SwFZCmzNJZEDdrqxycu17I1V2bMeHkKu9Ubk958evLu2b0HHx4T0FJhHn6E2O6aa5Lpu4+XasseU4HEfjMowVnOUtVqUN+LnkqWr7s21araPJTeuTBcl5L6pRcj7zRs52KLKct/jf0vgWBwr3PpT40KVUplRMicjJ1xpm7hUzVVUp0t+M9W/GsbNuP/XuXoTxZy4cY5Rqoii9JQaWfb0la7CGuaZBSJKlgQRY1b+6Iwv/CIoBD2pGZq54ue9Lgfeth2fZs1r3mPnbp9Q5dK2ZK/uthQve1oYbOjNq2gggspvlBHOkTFCAoJizhxak+PXu16J14/ZSpMZiFQsXl3PRZ4XOk7eQpMpIoTL0GiJMlS3PF7njmuo10eiarowYw5S/a8FDrN7e5wt7t84H2fhk6l1MrsCqquqcZa6mlv3/ZdT4cv1Uu90cdjqtFlrnWP+/zjL3/bge2ExZVX1dK66uv73vV+hNIMQg4AyzUBNHv1LRV+ELUuE/wKCcQGJCH1kBT2RUhG1iAFhQSkhA8hFbkCqck1SEOuQlo4HKQjjyA9qYOMpBYykUSQmQxBlsGx59iIEEEOOANykjLIBfdDXsIE8pMCUIgcgcIvIiCRAkXhcygGe4HiFAZQgkIPSlIYQSmSDkpDT1CGnIGy5CyUg3GgPIwHFUgKqAhLQSX4GirDaFCFsIOq5BJUI5ehOlQGakBFoCZUAWpBJaA2EQd1iBOoS5hBPQotqE8YQCOiAhpDBaAJeQxN4QFoSdahFbwCraEraEMiQVviDdqRFWgP30JHeBU6kQ3oDA9CFzgedIUTQDcSDboTY9CDPISeg/IikgF6E1bQB26A/tAdDITWYBC0AYOhLRgCrcBQ0grD4DkYDlfBCBILRhJTMAo6gdHwFIyBX2As4QHj4BMYDy/DRHgJJsHTMJmEgykwD0wluWAaXA7TiSKYMahMehwHkhKYTXpgDnwFc+FLWAgHgSWwBCwlHGAZXATL4QpYRVZhHbkPm8hb2EL+gK2EF2wjIWAnCQJ7yW+wD66D/aQSDg6+hghmgiNwADgKG4FjsAE4DpuAEyBwEpqDU9ACnIaW4Aw0A2fhNzi30ts8kfNwET6CSzANXIYO4AEKETxIhMBDcC48DF/AI3AzPApXw2PEDTxOauCJH+9OEvQCTxEx8DQRBc+QPXiWfAHPkePwAlEAL5IP4HVYAd6A9eBNWAneglXgbbgY3iEL8C6ZgffIPHwAj8FH5Bv4GH6Ez2EM+IIMw5fkM/iKeIKviSD4gfwDP5JN+IkcgJ9hGPgFLoA/CDn4E6oBfxFd8De8Af/AEPAv/An/kT0tz8BAowAT0GjAJGgMYCIaCZgUjcNkaDwmRxMwBRqLKdG1mAo4mBquYRpIwXTQjulhHmaEI5gJHY05YQ/mQp9ibkjEPOhzzDtG4if0ERaE21gInYaFYREWBSkWQ5dhcXQqloB/WBLasBSwsDR6GMvABSwL32A5dB+WhzlYEbRYCTRYBW2EVdH7WA06sAY6CGuig7EWOgRrowOxHhoBWB/+ZUO0JjZCd2JjdBc2gU5sClZsPp6yJrQ7toGp2A7WY3t0AXZEW2EntC12RttgF3Q/doV67IZuwO6wAnvQfLEnLMdeNA72Qe9gX/QC9oN+7A8DOBD24yA4gIPhSxwCX+FQ+BGHwSguRs/hEojAZXAel0MarkATcSVaDTehrXEzugW30Bi4DUS4AwZx1/RLvQQfuQ99j2fAB8+iZ/EcWh3PoyPxIpThZXQFXkFX4s3R2xahzfA23MI78Ds+gK7GB9Eb+BB6Gx9Gr+Aj6E18FL2Kj03XjtNEnSD0Fj45PXWWgI/PoaPwDSjEt8AD30H/g+9CMb4Hu/EDWIcfwlr8CC2DH6PP8BP4g5+ixfEzqMWvIBu/pjHxG7QO/oYWwT9GXz8JXYx/oZnwb/QE/gP5+C9aAv9DOxGgXQkB7UJI4QUhg5eEHC1GKNDahBqdSGhgI+FAOxBOtD3hhs2EhwYovJBO+OAc4QdAEaLhiDDEExFIIqLwCxGDN0SchiESEE0kaVgiBXFEGmKJDMQQWcgicugrogLdRBXcRNRoHkT96EYTXhMtcBFDNB8xmsYzJjQ/MUELEFM0LzGDDGIOBGIBucQSjMQKzhA7dAKxR7MSJ8ATZ8ARF8ASV4CJG/oD4o5+JR7oT4gn+oV4ob8g3qggPug34guviB84SCz8KUloA5KM1icpaEOSitYjacAg6aAiGRBJsiCKZKOzSQ2Ukjo4SxphC2mCraQZ/QdpAzPpHrrrI7Qk6Uczk0GoIENoZTKMZiAjaDiQ0WmkCRpcTRKEkTX0L2Qd3U22EEB2UAOyB//LQSCSQ0Amx+EROQFPyEl4TE7BD+Q0PCRnYDs5i+Yh52AWuUDzIhdp3uQSjU1ug5rcgX3kKQ1NntMg8gr+lrfj2keCi+QTDJGv0Eu+wQ7yExaSfzCbTgJUOhGm0akgiE4NwXQaCKHTQiidHz1Cl0TH0TXQNLommo7uiSbRvdBkujeaQvdBU+l+6DF6IHqcHoweoBehk+jF6GT6GPqSvg986fuH7A7SoI4SKOhnIZl+EVLpd4eMntKY11uCTfRfcJX+F67T/8MzipHGolTQXJQqmptSR8tTWugAShvtSemivSgDtDdlhPahTNC+lBnaj7JA+1P26GPKEX1HuYAn5QlzKV84SvnBZSqARqKC0FCggtHsVPhUiyS0EhWFVqGi0VpUDNqUikXHUHHoWCoRXUcloeupZHQTlYpupDLQ61Qmeo3KQh9SeYCm8gGiCoBEFUEOVQwFVClUU2WDKidopCqghaqBHqpuSKye4FuqcVBNBE+pZhqeaqHBVCuNRrXT6FQHjUf1oxWouWlGKzRRmzTJaovQzdQ2upXaQz9T+9CP1AH0E3UI/QN1BP0NdRaKqHNQTl2GKuoaLKVuQBd1E/qo22O8ewTvqPvwnnpEI1CPz+u+5sO/tDyZNDCBwaUc9Q7n/K+ogVFP/TBdm4N83XRWslNJXy23WCYPUcdm7hM9b0IXlRxR9YSjrU79Qqu63yKmGHrIhg8OMhhwniGCv6maxE87/2l1D8n4kzJ3kpFkzqEnrFx2iEz6jfITyscZRhc/hQzTGspY1E4/9qDrhWycmX6jl0ydPyGTzmGVttMPd6dVnrltF3ptsU9NDSiVVpXzUYgu73uktjwt0uNONvRlWIo/heMbwz98IWDhuiC76oZjYYNiCA117bEurSoHdM41POSOcJuTyw3tGVyT0WMIpaTXEzdJJ2d4WNAYlcp1CjImox7jtRPkDgsovOoSEDawBihqSOevUG8hCg0xXP4dK7ejyQIwFsbkgBNHERDUEEOYh2LhlaWRO4Fluv6OxEySr+veomMHj8nlnJO/wUK7YiYHyysIZdb1u2QEjLj6FE0kp3Ecjem/UBKglADclDBw217NJlMgqdb/lDlY8VdGApWDSIf7o/BOxIFRvrlWQr8McVYl0Wxns2wZUmgvwxmzmhE2J8qlVPbGyJILb4x4hWFDChW8V0SgOLoBGFiPkd3XeoA/oJycDWGeExo5u1OPIaBveHAH/2DJRvDbTTjTxutj7Z7F9dy42zKOmTF2kosua2VGVoTQEU1PDlYADKzrwGRYc1WVTgSpRXhCLyOjT/gkP2WdZLS5JYAILtMFcRUptQb1upfyqYt//x1HpIHw/3vKFvQ8+yYjcy2ALf14HidB8NEOSQN6agmzLZwDIi45KrpF1WxcUWaTr1lG4BgMfveQubIVZ2GelAthyHZdSsHVg+pB3yKdaACto1jyW7a6xQ7QGUT6YCr1Dko6YnIU+hbEG75GJLc4UcIrX1SgXFJwVilmPUyB8FscE2BpPXEeuBHDEPQBTZswnObBkESOICMhdxezT9qXtt0dhuPCFnDyVzeIkeVuuNgtt206BZ2rbyKLBb/dplE9aIo3m7w2uMhXTeVsfI8+CHrZ/2CGraDYCjUMcoFc23kyYU5YreA9+DqfSqV6EVycHkxRUJCyLtV837/nUnCUuyMtHYjg3ucyu37d2YLFoiNzhyoFSxAXyjFzhf0ZDquFSkRCKU8I8Q5soEson8MLShv8q5lMMLjMv8fOVQ6p7u/g+Zb1zf06l3HWC5HdvmmyyoHQKy60jjliWajIOZCy+ChpeL1OrFm/x2wuI95TGMtCUleZm/odzhHiuWNWvuO2bnkr/CeuuqEQNOICtTLV6oq5qK5X9XglabUyddMoPzCfguFSuPwgHzQ0l+SFsV0rBqC8zXZV12WZTZ+mv4GJkUAfzu9ibJGjzsawy2oveLXqt5+PAMMli4r///39u0Z4IUA1EK0XoRNqI3/23QyhgudVUbwtjDKPGNWeV6vTq4IZUEKpX0Qv/Ztmv+88WbR5PLfr4oh4x+UwfwEsLGgR2ZCmFwqwPBQchq/1MBk4rRH+t+nAuKp8ECWT97lhojnlNwXjD+6Qc3Y35nx5t9E4HNcE6CZP1nzNUos2wTmPV2Slcb5kV1XchZ3LAWJrxDey/l6I/gb7nbIA5uVx0uN8d4QeS5EJ1hffWnKopJrNYBJjXJYws88p7h1czp4Va1aV+C3URAmrALC5L9+v/rRcAY1CDaEExqmnIvk2t1AjM6NIyWCt6v3mbv2BT9iQUl78+qRCnvGTtdwR4qtz28NmEuQ1V6dqxiTbvL15wLIRlcDfLE3qGeVcYG2oNc+sZ3ytPXgT8xzPd8gpViTiT7ZIf7SdDnWrjSEHWYThE6G+rZqAdGpD6z6ovN9ouGpvbOKKPKmF023qwGJHkT+qAIi8lm5fnqFKaidPyMgqqu8qZXs7qcZZou4zK3644pMr5LiGhCJp1BPG6YP6Dz+m1xy5BvVNe1Vdyr0ZJ/O2kWtM8c12FSsmZN+n21DZXSO6MQP0hgkFpsPNC3wB3Rn0Q+34CLzI/kyymZ1wt7bIEzJ3tWPUO76y5jKAVRorDGeVlW4Pdk5OOYw3pg6buSl7e5su+QLJFpf31qll1WRr3/oIBJWyDRgbI7hckRaeXAv/d7HFgorhzje8AQbXWwYFE8s7s42pXTLrwSOQj/ad+KCJobfp8M783sEWVJocnGSkBFriHFRwPH8FM6QIQeV/HiolytaiVU9K4yKqpCKlUv0up3G5H1n6l5Wmu0uI6mVclObktKzEHVdJUbqRyrfMNCG1Q7kST1WoZKWi4zPTMo6d0ek88qJhkMDKij7nN589F3qOejmfPFYQU1eH1gbOKWP25pQuBmkPlEe+q4o9jNTzCgV0HkiVEGSZH0qw0liWIZHpE3z7sNqkUJqTGit3cYuZ3IjjUcJi6Lyiji+sE3S5WqJlfPpFYA9WxpC7c4VlKOHVzz3V0HIt9sZ6j+PXL6M4Y70wZKGJjqvk0zpkavrzRZ4WsXHj5YW4hhldiKIRXxlh3XzYrIwlBN1IqE3ZPh9XNePoz7ZtQlaUdoLZF8TRl2WQJlAYi1YRaFYmlmdfLFtpGvGdPbOMBAnF4dpEkRlSejJueWzoGAqaw85U4/ExjBxLws1US6ddqrNXD1nRrsbhucy03PuLevhFjOAm6ExK3tDtE2uv/oDIIB6eJmSlb1G96qq9qa+Tx4vC/q9v52r76BhfGN7R4+UhrxY0BBZNUAcUiqTUOVGjNoxhY7e9W8dxUgMaovTUphKXJ8EMuLT4xjC70FAkoyQ1OGbhkmuI9fcSVKIyApO5rko64vS1Jn5gtr9hJAmPttRh5cQb/awGWnIhbz4xOTyZ4xZkxAEjq5BW8oyDrcokkJufB8xoAQsvx/m5ZIrIR6obuU8SOVyHg6k8FBfxwGVahxWWSXhvz/aDde5iR7PfvoM7ufTA27xZYsX8lGZuv76q3NXzfpq1/qSeziB4rnggFsWk8Cvhhz2duL0/MNmjvkv/0ujaD9V0LWekzSG12Dpv/dqDPHPeyDazs0Q9y7yxdMYt/hpNV0fHBP3xsrXMBgmlU97Q6Eau3Q/1gD+eqGbrxIUkw8lkPa1Q/j3em9BG7xysxlKrw6voEn1oZThRHbkzcqO74B/x+FHsdBPafZws+/1Bd3+tyCt+r/POIK0+ksOF0OjS0WpUB8vh/r5DCa2J+uqa2DBKQI0ele4ZbSqV1JTWUHaw+dnebMjLPCNgIHDYa0vjDL6dMg4nKAH01XQO8hr/K3ICPsDRZtgwoiB0QPJuJqI2q2X7QX23oPXGvE/rxISq4eIB6Z2l7ZJwkm1iLZmaYOYhF4KUxg7oDiPn+k5Ej2A1EWukyuICvdbBNv0fNVkGF9XwVQtlrZrHqBS23hjisBEloh+5RIxYS2asykr/tQssNafiJpejod6SvO5bLKxdx2+DExlqQqMcy8xpQXhR2dUOp6/P/YsXZoMa3mQU9e6qu1zq7cpdvu5UUa6wzCu2JirYsDxoCJ2an+T9fvvZA5UQdPsCacBbq/qrHjUtHZPVnMQnmISjLoictKseWZHBTRZXirkXAOjHctCcMGMmYn3AiNqrRD+eWQac8GlXDiW0jAxffc1XODQZTs+sIEn4FMH/SwMtMmTe5KytVZf2nioMyzlAVgnOCpXULk7puvyEgj/gA+VQaJp0hwMXmFmLXFwwYq+lgBWzzE7jwT0tD5udGLUibOvsttTOoCy/YBOJofQM+dK5qm0h1xMJeJNQhtvR2eQbYKbnlXdTeo0xC5zM5nSynLmCNnmbQT3NBjBRP/fJXAY38xyT9nsvuEkI9Sr+Y8lkqH9e9xCop0bftxFitgOM75d/OD6RaInhlk2mBqDHOw10ilwWlW45WEWQ2yya8qbfxubaZzyhwMQ2g0ZiAP86UGpCQnPMA06dU71ttMkxSXvCggu1NBblcqCBIeB1Ug8UgS/AX63dINOVada/Y0uBEF0yrK9lFVfV3i7VPNMXFOreAtgr+UQC5c07EBhST0Eu8+tbMpB3kOQ9g0qXkAloiNDeK/Dbab569mcE3KvlIEhCpmfxsqHLDc5azaHzF3H5uuYr5hiWoOFc99LSTYuX+OWmclVBvoMZ+/r8J8ny1593KZOTJsEJbkd1hzmG+PAgJ82TQ78HAwCnuEhArLRNp5luTD2fuz7Jt7wzbAzvc8+TFrDkxh9sHCRzY+dJ79acvyhWOhqb0P3S91LgZP7DCyZ26jqVktEK66eFJpCShmBbYYhDAkcug2hGVubjsfF7V35vNRjfRx8csFWWTTPX7n3vnDIvQU4FQSdJfsRWoLxncBKusSvBDI8DV97lwQ+VfSj5UMpPZlwqpDHj3Ga+IuE8fzAsyS7gm3fTCN6msAXHRxXeb+Kow0wNn4XvxIbMwrdPiGcat7fYVG8bAvV9bn6QJ7K0mPfWr1xadKH6KkobAxETJeFkO4IcWmFWeVjimIE7hdft5X1dffnbj5rgv/xHoe9DPlHwD50uZgTdyVPi5IFEfB5Ip0txWDqZwgmQLQ7/lT/5XRWliu/Df8F/9fdjMF9SfV1Z/UhLbIS7UwFWomq8YJYL7z1bkiUVUQXzzg7w5tfOtczNV/uUtFsZ4RSjV8NjSdpwUfsWD34hevPLcaB5wAdxjMk2/IWuyrdUCpjLlVPJfQTPPsnNcKO3W6GVbG+0RWfi+p2qydEyBygmKy6K4Kaw/cjEZKFhn0M42wtJZEpEiwE2xiK2G0SnTrBHj24Ou1IR4iubzfWTB9xe8f1tp2wqtfi6DLXhMBFjccaWZCxlb3YRj75B2RzxPjDpx79BACe/pg7L5rLhy9PUw0PfY51xIw384Vvs85mvPGTAvtfv8jenSEiHfwKLCo6mOXDRt1doFIPC5BZDfOhoovQbTfYcv0PUfwKcJiqXwxp4gIy69EovGl5cgiMMD+ScUnzbiPp2Ixj7+hwG/8ykcqjpbodGkIbdifXFpJZhswp4fI1ZCskZFw0/N4baNAB2qMPuofgRDHY8dXqCMbgfM0sfvzPIqZScAoSRgIGRJGBjC+w5WAV/RsBrMuPNPmAsEPJgXMKcJwBwo9iOuthYIAR0HNFhFt8eCDh4cwHXQESLqtra9/SU/j8f4jSwrKT1NfVA3F6P4Czbxs4ZsDRejIUhYclLp7ez9+GV5RituEw9k4Pef353FFeTdlZPO3QM4lb8zkDt3F/XCKiVWN9Ef2CsZsioJfeQXKQURgn2tV69QPr1rzHUOZVoLM1uQfea7oOn3lD0FPDa/yilMIsxXjvQbSihLuZjcR/GWYwWURLVHu98kM+nQNL4oyBFV4e50yMW4TEQPA+SziMn+3FvXeriIflECWWKX/L/Y686MTGLz3x1RFwlP7Oa6uzDApnGa/KOhIVXGge1d8QsAGkczN6ZjHNGa+0LYiu3raaMQPeiMtssZQcOwAujBko6epJGyR1BXp4SiEKAL6Fh4WWkyDRIBJ8Ydu43AxlMN6BRHHisyUzSe6ysbSbqAj2SdvM+s2DwtgyAd4DgYkaWUIzuHsh3RBjIvk5njzC3DO7AcSWPQda+rLRpPFPLsuEQPwnPVATGME6D4QPYlrY1ZsGN0kY43+nrCd7jx1jAykLY+wbR7pve2b6srt6SLe5huv/8O3hF2LpZ6JV3+dZ/cGSrN7jROo4chbm7CT+nGlgwhzXcZuUj1cS6BNNFeKuiOZYzGeDZ4lWSw7UtbulWPGULRCwPilzjZeZ1Bf9chKxvg7sDKf7d1E4uHHE3ysoiq29FWFTxJKV8AwBPEQJXMc7uA9qRJgEd5cszUajgzGPSimowLgrCgjt89EPgBv6DV7trDT7MK22VqHlqp8w4Aly4gxC4m8eY5r0ppsLweKqmGt/JzmJK7cMUeKE6Mk8p31sCwLkwn84O+NlkRRRvZxaAYOsQwTC7Wkth5vjUqRAkRS4pU4lTqrfiAJYbWToMB6nALYIoB6E1kRAQCMjMvyJzRymIEw4njlpawodrO0+tO5tn7g5igJ7vqs6slzi5NZvT/H5WXkGtUzTOBTM+eQVrElxMhqk1O0deYS+TghquRf/PZCgvxsz2tpP2okZrq3YzhTFrsn9AGfsXsMnYtLWsoMrBW2cL1e44CmIvqo8V/jtErC24uReM16JuQ1oiJzHzkJlb+n+GsK9RUu32aBS3iHctwf8lwDmgv2HdF8OHEBf1CN6M39TxT8HPVUjtF0p1dK3H7Mz7vMGUTLTvFAVuGe4FI/gfuMw8F6zEYQKGdRcp8dRqg3tQCXs4kyALme4QcDQfz+0iAb1TM1IqgUqQ4n1SNVcmRDGytwq9Ikp6vUQlh9NmtefzlgIZCI6TokCO0rEsH+GzcrZWJvZ5Csfj+cZNpQ+wHwy1tDUqc7bln66w7Pehnem5+ZFwGc5f7OIwDudlJb9/g6xgfWR6NLZUb3WoMYYaCbLwaXDi5L0BMVTf+VhdsNXTn7qjVd/+UDUZ2HkvBNq43vYqFEwXbfSVJkZLR3OYCorArmAqwF0vkzQqKFgH/kpw+UhOHydmep0xoN3RtQXCRE3Rq0HfAimCV97X0nwYyDJ2ZSYuHcXc6DGUGMmgsDK0q2t8OEYGpV0TpNc6tK8AzZDLP773f/haTX/L97ZAcYy8cuSQAUqD73b6fy0K69lJqfwkmw2dy6OFQNdlee9v+AOVsdqQ5dbHqsav5oHx+9nK7bi/yU1yRvXNFzf6VJXkvU62gHW8KRFj3F7EX7cr0DpVwbQSDmJ0HajI86mpOtFfO5Mmosh9uDCQXzaMaUPVVfiilkpfjw1/O9TjQ3wNfZDlz6BS4Grps0bmKxFplLIjHpEA46CUvVrb//XPstUHnSohkLhXJYqHoqTdoTP03Xc11u93pbPCJI1w52wbPqhwWXsHKx7LJVPFk7VIC4IN5fcy2C+3RimcVE9qJzHGm1S4iWsq5t72dQral1d26/388O+eflRENbRXhArSqG9MAU3l95J9/NNiClyNqwmeqq0pm5uwyfT9UVpiGYD6PJ0eW9x1p6CXZqWofR9MQJrQI3SRQAjKOdSPmvALUTtQ/9bvSW0qOvRGdRnuMh5aW6wlMXiLn9n9weT7WQMHeJNCGLB+VfAxgOuUvn18ysweuMIbcY1iqJ19P1QJ4thEwZQRgooskQwIsWWWxrrgMl44qCZZTmiEsMCtRvQly/X6Kdn/0OpVPCshnQtWwiBAsn62PNS8f88kLIjDz6b20TGXG1S2SFLs9daYsjIJAVUrb9NRjNYjHKH6Yq2yA7myt+LaUTeOSSO4SsdTepUQ5Uj9UJ0mydaS5YHXEHUe44C76vQhy/IA3zOp/cMysNpQh5FEsaVO15gsaGUkVCWxx6PgFS70KAWb0361PH4WUENb8c9LTr+blCTAIzDw9HczzbN/EJ0MjxZ/Zr9dBK3SZmpD9JTvyiktnDYGO7qFJeO9Y1/mJQrYraJhtZLdn9GTfAN23sCrUYQIJeiLAP3uWh1bwlo1L2nKImEd1mpxEWl5jPXXqiCvoqMU8/02DR1V1CWoTG7hcMj25ohgEx7J2SMW6FpHzvZioEd75xpJ/Fcb3Q5mQLKgTmOvzXaQr+BIsCZQuFMBr/jxIqXADNdnzvCrYA6yRbBoICsWHJw6rA2tpAvjcKo23uR5tOx1IW2p/Ze6PceJDgJ26Da1UpCzhuoOb+qIV8WMJndoIqPrZmUrYREaN3/dzXSUsPLg41iMQxyeRiU9PlJyIptSrm8vg6s39XLBslByqMRgi7Plxxt8TAIBudzUrt7AGfrmpDEBntdSapWbryid6wnIAd8FqmyAH4IKuVNNBk4tmENQ4uGEofJLFpHszxVBgRlBOHqBbgSt3iRIjcl+bQvTXGBcqgQGCtR5VzI8DI8A/eee5iMHxNZfgsi3oZ2UK0OJ6KhDM47KM8gqMA8IEHKbBPsBnzH3VThjoBVd30AsI73gKSEDynjfT6L+kaLdnNcX7WJfsfazo5swHT1q4D4gqjqD3NYF+sVd7JzIYU9/uDks7W8wH4RZDq2K4Cr6gKmremKgFqPF1zOqo5TqKIBJQlSZsN7fHZeOxsk1Z6GS24Ck4chYOBdlpFGwbKIhkiiaT5xAikgdSq93eB8aga9ay2zX58XxTVZVGiHQtXhvXA7If2Y5HEZJ8ShBKltc6pK14uMrEdlNOUoC5sMED3GLAekFifijg7KF3y+JOnPAUSN6N83uCp5IiLXw4/JOimy1sxNKkUJpKNHE5KepjCpGdWQIYxqPkGbtaa7ZJbWKL36WMjV0uaaekGK5qUyqDZaLoOBoPelgVZK49N1Uff2I+pcBOg9uf5pir4iVuIUE6mpUJUedcrLLZVPEqCA5z2+cGNyXA17VaLbb9mV1KOHstCsQ8yIQF+A7i2kqMANtV6+by7O1zbQ3pCpCWcDAdJ5h934/1u1hM8tQCoLYnE6bQ+gc7leuZIyMLxoMaoPbdpyDF6lzCesPmll692LB56MFQyZ7vVyXNuYoOlazlXvUGk30TY2vSMJrSipRDn3BnIw0R1abWjpbNX+NCDs8bZWjJtZ4+2f4MMUCGAHVmR5l1uTSmHePsO+oe0eSbPIcys4M+9ZUoTHFAFU6MqPPTDFvafD2Bnb5CG1TIJnBoZqjPuazgkj6cUpdeH6EALr7YVR/UigGvy1tbp3nyqhaGhDV/1YwfoHiMAzB3IwyZ74tS5ChL27vp88oyvrIQpE9ThFeqH9FC65uvIZhO25EVa5fB/R0yv/+9c/ExyeT4bevNHXgxr+UoatHPttvKijyh2EPSQl9YfwFeKWk/hH2lJTcn8ZdeAsatdNqWYwKVbjvMdgCshdkTIj8/vWCvebtXYynUw7Z0gxRgim9q4OXX0ZHHs7NKVr8+cht6sUsm46fp6rpWmUni9DwIwxIVZo1oaHa8irOH4I/o93RUDFr+TASUnHcO0nQZD11nFTyyYuK9J1ZVFachBYFhvgnmTwXyLtIXBCwrzBpB46XZUKIL0o68Kd8uzAo1hqakXrEcw1J22Pro4Gyk0aU0yw3KTDNYSIRjXGeXo2DDHxKLV3OfSfqN6ZxoC8+mBBxcDKS6o8Cl4JFMcpvl9a5QeGN/tTnPDzWGX6ySyeLD6/LkcsIt1N8hD+lpmk+WTxz7dxw7/Xe5Bci8uTRUCsN8AEV3Z/Tw31wBrRQi0lEnxMhP108xFoo9+7hqj06kG4npBpDz7W0WNN6xlZ8mpqnXHCTN4lxlBO+Na0pxRcncp9PEEjYoQIdkmyK7gBULI+5wn4seBwRpOBpxOtGb5YcZf8iXvZOl+EspHQ++cDcUgis9AjJpCBRkY2dJA/oONhYRwK2H2nd4UXCe2wiOpoGOA63+Ee4VXj0w3QECkaJjfWXOUPLawS+HcKYJr3gUgljX0OT9UzMj7jWNCiujR0VKjcf5WxNTWP9qQo8HkuBdu4nKXcyjIM7WML/DIaSITU/hzc5ODwxrVkjIBTICEM+V+BaotaNtagx5ydJLFxxEglj33wcafsxWt1wqqzcpVaoczCe94MriPWvVjaNFVhtmkEAV8KEEfQsdnP7cYs3//iA4F0tJxNYdxq65iuarTV3C3dad64IjgQwYqhDZnZ91GEQOCK+q/bSQcJxhkgJSBzShl3pnZs3cPxzgacW4wectTsCji+Wfm4nVFX0zAef1so1qjGjeLm1Rgmt/hv5ERr2q0+9taXKCfEitXpN73SBNDt4iQ11eHGFKj99ydiEiytQxmAmC3I1EvYGf+PcTtgMTPz8ZFZdpgTSCSicCrNJrf7GzVuK2FgSMj/C4wQPH4yWETCTRDKjJmqfQIFZ/JS/A5O4lJT6mYoMtU5IhGi5qzduUGVvKJ08yC7VKhAQZqDI+qvej/XSpIiQ9p6efj9AcftcZNgfPosnrRiQ+Boig5nOA8MWU4tlygUG+D2wwsTyZDnAoMVAxwDmgw10YjABCbV4Ay7yfstErb2C7DQCvwY/MCZUSdTBMEQxqLfwfGZkWKUz6SR8noLiam9jszaARcnTCPWeSeQZ1MiwvW/fekd9HUln37xe10Sh74ZwYK1ZBIVbnsTFmQiUMJf4qL/BH+Ij4uITsd+nOE6/GXC7Uu1GLhF91llcvNQZMPwAit1O82f5EF+5tyTgDCEUj4Y/4VCM97sbWSjkMqFHNBYFgyZZwRgHwx+gDF2TjrRXTZAxCPbngKpmO3/zwPkkt4hwOmhl2rXsoi24T3f2OzIWrn7tcLk6pfyN5IlTItlwqDtoRXVQw3Aky5ELsak3+50mGif/lEb6cz861Pb/gVP32IvmwzfZ5ST+gqkXSVsspwQ/QDI4U8v/nZZXWBynic10MO1wz6sPkjX1MP4pTYo95B+p5YbcxQ+xgkHNVAtQa9UvnodZMsIsTIZaQ/nERPQaOarf5VUOVe+H2uzk3wq7z8oyX86khgxVa3uc3sKOOa6z000VKl7BHa53pZvjMyqaCd45jZRjyESXXmaxHZRitz63DIGMqozb6C2TWKLwc7rFnq7nbuTMnz8aN5wFan8AKzKcClawFq/LgrXvIo4tgGBNYkXiRqnvYutVs/UGoYCqQl0u+cmKIYKJ5eML3KgSIu0upRW1R0RGJir36fBx3ubyvqqYj5Lggi7/L+VJP5oYRMipkBeBk4z/2sKmOMydB3EZGioMd1bnVMYcgzSVKAUBYyQifneIhHC4qJpUwihjFDdG2uyRUstlvbuQHilztWlAunRqhM1WhNBRXYZ6dxLe1URRHCgNB5ThykdjgEmJ042NhbW5F9OT5V8dCHb993AbcKI8up3YnG10E/UhfdhgngJeXb7BkKokt1I7C/uD9MaIddBkt2Wo5ruvz0sxNlRTvjNw3UAmY+vS9oxUugxaoXhNq5JJKtWicggyBWVTlZrh7vJ8kL3iK9LmYv57ftFLXw6vLvuZi8HNXZvrEM+yUNfYuinzmZp7tdBYIDU9DP4ITuvCTRM2wTIH6D3DRyrxanUVr2v/WRdfghqajfURBO/XZXuAwNscVG/JOQAkiJioUgQiKnAoYiVKQSlCp8ry6V0BxwLatZC6wMex/ca82U0OY1Nm6aAsyNJf+3CZzj8FJmrHIjUfY6GtmEJ2cziaaH0Qc1k3CM94TMCUJJoF8A/P8NI7caRsITKwM2jhVMA/hlq8iYSR5SEj1FDtN4qEN550BqL3Yzucsij8g0dIEyMAW/YpNehkA6KNncl9KvvZkz4oVPukx+4st6VVe+UF5IG0+9bGDav6ZqJqY4mYbYYUGqIIF9SvHzSq+CQUUWyyaWpYbieZ848hb4xyfzHUElxSA/CnklmEQzGWk+oUOwRVFxTHG7PNMXZP+n/2ZoMVV7dmrrupa7XZL4NFJ9r7ACi5K8M/1tmSibC4v72ZdXmJ1yCiGmiJlwWiUD+6xCK6rEUSZYyZSJEwPs8Nej4H1Fwao2XprK0RI3iVLD6TYrJBukXOUNwkriI60CK0NeRgI9FsOl+LK4xpaa+8H5TYPJtC8fjns9+r+R/HvwTZZIa3rF6wNbynZb9L4F85MS5f/71HGfDroa4UuCzC8gOqltveHlyNyzTB7n2uXKuGFoLp6XkNgWisvEO8RIqDVAQjIUGfiYprSZrQM2olbB7h1JkwoHzNkQ0NkQi3XCE0KzBehmQETjDwicql6dgeh2q7gExcSJIDmSk2a9xlWzC9EuELJ6hxd2rV5hWPXC1miEtUn5o6xXgp3rX5a5wSZSrP56JYtUr8Z+8XMsjRtDccgCkIjBBNy1JvsXpgTy3/ncVEpjMQ05KOsoaYPhcxJ2okH0LKZUiWTIlUlKhaKBlhss8zJswbGUjE2oMyNn8geB3tmswqEfqMBNBw/WASvg2Tv/bl/RFii9MT9dblxOjMg6tzoo3xAfYm7UB2GMJvHeWslkTE0fK14VBusWdXM5cMZ7y/JEiL9/LgZtDkI9XGqqre9vqB+2U4aipjl//+G/neR890wgsyvpubWsXOAFdgI5jH1/PuX8PHy8T8wD0PLTeVrCmCulEqjbVNrcfOiX2KupxTu257ou1gEtsJtnLRtB8NUyV+K20DkcA6hTwMrSp/eqsrrk2VM0otu4rhF1qzwTBQeDz3gwUZ9Gu+wGxO+aiJExhuspCfIBsaruC2jK/hjdKiESex+VqARlrBTwOqDuL3xiDGw8M7b70FsX93PKjUUUyorzCcxFTlH7f36vsL0dMq1lWY2SN/T62APfiCIjVSQRa0BbLUGr912HKlkSOuIVNqqppl9EgMCYvNrFQuu3xK2TabUcp8TAdOtcdz+VDJcYbWlupAtnQeuNb52IJ9ZijimySqgZFhOk9oYQpt6r+2LWdLcEL2cbCNhLIHtm3Un4vS7O/rxcVYMXapnviEnd6t8EbOnTFaQRPNi781enoPsWYu/O5VtE0ojhM8+Tj7qItJqm2YE1PMbDOEq4TsX/L9E95lDhSAwFV6ipxCC9+A4IsBm9CKwmc3J9+eHg0AYFsCMHXxMeG157rBIa/4LxV34fR4Xtd6/zvaPn04vMbkgnBdWSbWtUsriTrzNCxwga3GNso9H2h+iYll37lnJi5UYjfCG6QOKvr9FRnTdoCu6tKxfBaH6qC5BOm+sFtY5Rl6G1rUQnUgjurmw1tMVniFjk4AMDH7rechOuqs12xV9mprFeg3U4IVUNvuJ8Y2wea032nZr3xxtydwnLeux+DxO1IrujqSjR2ZCzUSa/E4jZlqWLPL63TtF6isEXtPkmN5/onmzVwGJWCVppCABEglvbCtLpFidkLBPqNlath3ejdQdSeWHcPDV37Ddz1TBJ3wUXshH1EJsSaDlQUa8P5HG0NDQhMl2hqNeerML+ekzoAk6rk3FmmmdAJFjeQ5IvKNfMGNx9VjOPLzjXhzGSH9K08XuRjSZBbmuqEkEoT5Ltks7A8eJbAZ8DPmSE1eBupLURgZ0vY4aLIc7JvhkZyAULLkvBBM8FJ97LYBQqfBi0SsACO1+8r+p7TZBq3VoDi8Rxmylf8hxnKy/jc1IyLHyplHZa/lnyrk580wnMU0VEXAWDaSA+kgGXlcXu7phDR+oFP62nzkGy8XD6PQ8TU8hukkz3e3O5MVyMTYkLaySEQwkas50m7tefcDIBhCKnx3esty6kXFqqWD+C5C9tLIeJqVlve1ZOzesIEmBRxw2+eBugxUJ9h8U+afsWHTw4GNFbjgiarEPRgi6DMof8cHF4B4exe8wuUUv/lo01yP63Sz8Ke+wQWwTsIRz+GWL4g7gtskYzXDzoCJpTpA8PPBLnYu73yj3849mtjfqBiUn3y02lJRDq1oslBivdB0d19QiqCz3IBweG+9+vC1a3uojv7cI+5jAObxyCgsVwFQ01eS5PGf8XWPjgLhkdlQ3yIMSYpmt87rDb2IKgeeoLSDBiAqM73WQBvUVsguYdl5pg2eh4/lFBhiD348nxgvPN9pU+ZNEkJy9Lbb83P7zRgMvzx9bGFIeUblKNGbiWFgSO0av0EcXOcJIn4Ix8BH33x0ihaLeDm2Gz+M1RdmJRL2iSs455Ig5B8ZczvuHOahxYTgqXLl0OksSL4ibjQV+OvPe3zDPT2u2TntRloGhWpkPHvMDB0PAVTeYcQaiSc2CWXW9TKEwhDcazZtpsFgfFlG7Z1ptnXJVnPKZcVvEceK87M2pYA99WY8UvvpXX7enCZ4qtYfW3nbqPvCLCMtMlAExoKQT8xR72U1Es/wH09Prg61nHJq2kaNxjmLpaQCjzM9IdiCNzYIyCC7chNk/wxJeYLONlzRQdP6rqHs8pasJbqphjHliFsszrf3s/Uaef9OGEt6jc9sfv/W9LRsxRFQOMk2cyk3kJLqTk7TvbJP7HyUYvhW/cnO0IkAyjW5I0HFxaokwXDgwcoWNjl5MbUis7TV6pIlvIWNyu9dSCXtyiUngVNu8YvLTrNi8aGmQSooh+gsI0Rsmsd80dRq6FsbR/PUGoCcSJ0dRjkCzzs5MKsFL+8jVdOeg4q/1sQ7bJzoc0PEIQ54zIZs71zBeoNLcFCI+ScFL6m2FbTkTSNFxwGUl66m6pP+z4ApspSMOUXv+eQIzHpJbaRoi2k8nOpVv5x1bMK+VCsbKPpQfmazgqtFYFSwMHGsPovplAepdQ0SnnsdjXRnGsN+aQc94udE7n4HPmqyfdtzZmigTMniKVgiskStngQSPAbxBPKaI7zHi6XIS2lznZJc1AZ3sdrNvhgXh5Uv4ot+KfxjX6OS09eN2NkZWRnnCkJdIFyTj55DTvwCp9Nn0e98Shk5svCoBJtsN8ithZXVau4hpT5GUiQsqYRyDdR79r1jJFGD40VKIAbAHxuk5GCzWBp/TT8CkUwyKA4JQ6zFx2y+U33bNbD5vjambiRXO3ZabACFiSkpWVZY/GZTdeGR4RMHkhes2ASig/+IjYezQWCt/RPjz/DId5qGxL1NbJk49kHDIQEhVWp65hriH2JLWtZsJtIyEbTGkMMfQhRJYcVGevb3rSz+RGurl3iMA9Rn2c0emka7z9vaUwfqEShHX4J9l4vZhbPDqfOU0oRiTIHGNzDy9e5rN9P66plz0NdYaVUkzwieMeH+9ltja+51VUEDCREsFlSKCu2Tfaxipg8foGnNiiGfNxmEP0N1SHw0CnfAPfdYv/aXpx12bHZ5ZVMwsc4K+lGaE1mdiZcQprzVxXh026MUl7nXHiucZs0zvjZHYEZ917+DILXGh5YCtWCk5J5MV2yLJCGlDXyZ2EaQVSqJA/0nd0dfjhH4RUAsRm5SJUYXJ5LHFwoIqtvTTo5mVU9xs72C6kra0zbY+cpmy7J1Nj7cP8WaDW7nEGpB8WcdTVCRU7IdJLI8UvB+rdLxbG1l652PQC1y0Jaty2BYomsYE1qGBxaKQXUnrXN/ssXGXRyDwofamriBQ0uOQt0BJsvXjTN+GFVa08+lVF/DSqk3Eec2v/sR0BJQPELY/AGDVDBHQfaoH3d0KQTKME2XF1H3SZTtu62OdW9oJ1vpxRxqprIi1oefZ/DtQacEczxE8N3AfRgmOkiECavEMoCsgcDzBvIjD1Uoed2/lRdWF/CS01N1pZtwUBvUuhLqZOEZWuWYUt7em1qp6pc4rC11U4UP2nJm1BieawrUiIGioEsxoT52d4MSku8n2z6cRXJm3tAyOJX+9XJ0D6lJuMReyr4s9jCHgHaGMwVGkQ5b1vy16TqseqPULdUh7EyecF04JjSM46mzdY7tYwUyLyV5eYbtysQsGjGboLHbvncQak2Gp5rer7M91UC/90NTH51o1JQeDFO5u78emXoAFkUFWn/5fQdiY05B015J4PSEps+8NZ/DyUnVTcdZNv4kz2Gs47qvpc64NtmYZxuVddwTdf2pKZzKCSNV0ejCgUdOBs0LPjPGtQlcYIrS0NMkfISia6bbTkljn/FxWj9xiqDHCZ2eAWQUbHZ51c5mSGmihd8QllvHF+Mu4uevoTqhVlQ73XVOlmRQ/muJ1Cz2lkDqYkrv1RyHWU0t35RO4BT3pxxwkrB5XxdmySwuAW2mpVvGkjrJhZU9nzFd53SUUo4DYE222yLB/duskPAma5zI3eyM5mlw2JRbfFraIr4FIzIlpLf1GNlJiooyj9OgHu4/pa6W+HfmnX7zHgeEWlcoQ+LfNqY1i/PZgjto2Z/hGvmAPWtxdSdMp9liq2dJsWJFd4VYcx5n5vbG+880K54csmj/ZYrW7pQUg6J0CavqdiR1eYlTSfN3aAhmlNahVH5oCTvSsH5NySxevUmbq44+qDojRlXDYT6h9KP1uSUp33MAXhY0S5SCNo3cmzypmks1zLqZ83dQ5MwrtQX9O+H96AiScitxuuye35PZTWN99MHXgzmgP3P6ASrcECLZ3VEw6DRIbB3ZLfIBKuL0x2+6tktf3plxYpuJBuOp91UfGe/QpP8VyLxTEEBt7vZEwtiA+p3m33XN7fJO7AMxzZGoHcRk3nY7+3zze5zONhmjBcjty+FYVaEJO4JJBlzAVkN04kTDIC5KCb6JmtD8RUkbqglaKVpuNlVURVQwXOErNtj8I12s5D86fKX88hQy6fxl8kBenKCaHfOVxseshJLPZQ0j2QjmB/ZvIIQvQA0cIQ824Cwu4jmig8pOm86DKApcpsOUbo50GAEljZrRUSmA8AOCZeROjwH8N6h4RiYyVay/3bz7Yv0SGLUvX8i726HAORd0bc9u+YMTEQvasPzz0Sx5KzKhARI64dfulBlyAUCnR1y8xBkcIh6c8c4YUtzVfko1BXeS1gJFwL7xdSAQC4tWd/bL+cWONF5Z+8ovYvcfajuMNHQFjwyZvObZwkXakpnaeUIpvtkfavf1wEU1HBgM9V50UZHg7IQW/SMmK8gJKosOPp3Qplv7D+u2uKhdKG12AsWNnfZp97wSHh2j6kPLUcXRvwdGuauaErVDgCbkgSRA7v3DxQRHAqllhx6CCC08xSeYRTxW2gbJBpk4ye164KAzmeRqGxQb9JumJYvApFvFJUP6NRoDmGpurAKEdlCm3yt281gtRl9LZvjo98kzFRuHs4E4KJUtF1RjTzgByoei8pmQZxAzV5DhEtR1X1vQzPZ4stlcVew6EdjRpdMkS6Oslzylg1/EBhwmC4pw0Xh1HFfhh3NlyMXW7tZwvjyj76qgWmxOXXzyDGs7yIeGD0J1W5/bxqXk+t22eFZ3DK5u2+xS8J1TjMZsUV3hUNbLZ6X6RgadLq/lCod2+t7adixrb+5yx7am7VSimqUriyqgOqjz02uMr8CNpG8vrZPKPttbiVHJHs3ZwcK4GzwJnQDK8LykncIxvi0MMqFw2tYSB1kWvUH7QHCH7x38Ta4br/If9tRx/9smfKR01I3k++johYtxJZPO8VHDU8v8vKAZzyfoVWiMxtgtiT46sZ4lKf2Dlh2eFcM7rK2S1VVDNr6SyvFV1NAys2nbcIckwqhkwyjowlUasNrKba6sqhAY9c/YHOm007ci6BBObsgQp73n2W18Wk36hUs9Cdi0XryX9m6OgySOkwpPklO/gWSDGzm4XvJd+qNXFg78ZdSCGBya/ONOZbTSd3VwCTykFK74UQ0uu1wNLvpN3XaJOV9tA5m0BhUb33CUJuFv40av7MITdFcw5OSutKpUMnU8uDm44IuSsp66S68ObIpflh8TB1QyQeYrjfCv34FAZW1YdYeCadEov2DJNAandCeGml3grleChqQd5uYyx2PcPgECzixEIbnl6pYj5S9IOdv0UjprU0J3HOF4Jm2N/qXmxLqC4z0FmUCiTudCxP9QSfSApBdcaySj7sNM/zp4NUID6DsbHb/meqBLjusZumL9OtTm89SkqWen+G1C0jexYZlGSsXTnfpHlNeYydqfe60fnCjfUWSMNub1PUPoH6/2bDi8l9UXku8HGvnksFNIHtiJOyN8vDCIT1cJyX+vUcdegSSSq6Ec/iEqrPYc7YUZZbRquBRcmfBBWtb2mexa67iF81sLCNz/4S0zF7nb9HN+Twt6qUMLp7fWHciJ5yZQSKFnkONvmpn8asKuZ/j/3FsZ9Y3axaHAHDdv81sADZFeXa+dTW18MrV5rCwTWm4JOE3j9FfjYdd2HjMK1y51BrJVGIUSyCS4ChLN1RGsN2Ww+K4OkB5ts2NaqMaOm75OvvnPuYu9StDuZRPESU+p6Wj4imm9e5QPqDDRX9rt9WoWPUy0t+XGudjHCpcYI1S7iePG/VQ7lq+HY34LF3iQ+a8arwc1JhI8nhbNsBnjBoOOFL5Xpiz7Jm/b/7Gmsxk+MT9cw/2pIZPxxUcSjoN6YTICUSVXNSsKJfzj50ilSPBCheNh3qYIsUQ57xUDuuRpo55pYWVZ7ea9clCroeif1cveLwhS31Zfy/yyWDQf6Wg4ArRwXuPtaVHRdeQQiysdQIbT4rKQkRBn1ui2MO4T/On5yz3l0mawPdosfy1he6K3RjSsfImREDv5KGWb0IzlVmaRxkfFkMBUz5TAXsbK3iaerXNJhagRxjRK7x5UOjvsLqfzzMJXpNAdd9iLN99npP9jAUMSbPmjc482f/ym73u7ufV2t+WCCrmb4LFtm8WD/frdz2mX0IsHeolTKNuA9TSam43qnS1HJxHGQ76GxL4f2YW5cVWbXEAltmRGuoBJfdF75c9LJbpXKknK8ewDWfKOkL9U3pjT1Q8NmKWz55tD6fixobJ04ZyNQ7w9PHAuvBbfDCmpyj30uBSCYzHZ39qY3s5OsVl8a7iuoxOshMMeJX4RV6iGrRKx3LvUTtijhmMoqj0ij3S6DkWaQyvjdE55d2anHm9RXb0h7Ih4vxF6rlFGzmjYQ7rHY6LQsEelK0HPXUElE9rGV90d/k27eyGMHZZSaEwhE9bcz4ZxP0u1XTO7j2JGid2vZjD1WT8a7uOu9vX0Lm8Pc1pycoL2PpwUWeCTDxIk0iIqXjdqnMJADon8kWmOor/BI+FOoiLXP/3LLvVOtMq/n4UBg4hAIoW5Uvhk80ytflMfusq3QZGKLxggF5I9ovzvcFfjy4v3BvKV+a7m13PmE7v2TUerV/cC38u/MfLVbzan+vjSkGVAW39X/FD43KCDqrr0C60rjpoC1kmViZf1bTlLRIogWDmju7FLx1UtVwutE7s98cCKNYeCPejaS/wHl9zdBfhd7ue0/VesmnIut/yhsrqsOwnLBIFUuRIBr8HjJi1zL3fEIG0b7+cW8Snn4rYmIwDF4hMcVYhzfzIONeT1NM9gh1rPPL853KTVHN/jqAUgGe28pxcHGtjRnnu6J32u4ee13FAaSPwVf/M17gzMO91Q6Yux80r6XCJMMnUHhr/mO+KxRqeiQgTTuuzd8IJWSKC1yYrJ6VQreOMc5F74rJc7vRezHFnd4d3sd054Lm4IqoT/k26hXiRQAhjOBX2+8oRiBPww6yx8wbOcH0QEjjSofM3HK7dK9Z+n43Ar9jV/ETfP94yAp921O4qmofsfUGzRRg+Q0RoShe9r4fzHFbrlBXQpa7do1Z0pdPo+Hi8RWFueidFgYy5KuyEHAk805ZUhTkXSqRXK0n3pHYqSlocThEkRtxzjQwgkQ7sw5cwhpkb34T45k5nQkOZNvvCdTmnpew2PwrfQYzKosRMxllvju2ImYqngpj2qFsRBcFOZ6+uMU1pWfYcfwp9Ej0alsO6+Tuoetry+y6L0enGVNeDZpXF4NDHm3gDr0usaG3UdatI1dpDek/82KArl8sIqYBUBzOtlWCf2GSKwnPtNH0WAFsZtSU+54hdCOpgJEE+I4oyuhbGLAuAnohoAUZPfEeNNJiVf8YuLWr0zOIyuS9beZ4fIXJKIlIYyoKgovIck4ohIPaZlp1NPsx/VHw2r0Ls0O+YfrE0nXKbuCec06L0GSaL/wrFOsiJhzGScGLtdvUtn2QFmBPVm6kzmaGXlKDOkwUEUSpXZjDaZQ2uTY51YAYIP6plDMoWbN5ksLiZGHaFclw5L/f5XLf5md0NIZSUQeX6gveAf6J/5kUz+OHPfQc40nE5QeU8SXBKQUNAtS8+QZXJb826xWuUXvFp2+kpu7ZyepXqZvqFqfYq/JpYDUwwkPRnmxESdwuFONwWH+I6LEgIOWjpJfdQ6Xpl0OiW6LSqGYxZANAv6TAqrZKayKkx9Aly5Qa8XwaIoYCjHiR/sR/7+RtXmzqSCzkTwpdZcD6eMH3EGcjrGN38j+x+IQ/EcfrVBJRKscXV2IkykGiHzlTCgXeKcZm6hyOICY7fWhqJnVZst1UXSaQ6QvNiiECM6JEZBTPF+gUFXAqKSFjPR9w+sMTuPjC8nmrb7Bwb5+YAEHQU50KEEw72Zg4+Df3fYkZYPEo8sJ4nAZH+UVSxvScWVFzY1iWBR+AvLcaktEY9HAyHAHa33hxNOLg769S+TmxrFd0x+eQtP8abGuLFINgkjxaYFA9eogDs2mhJIe2SXJDXzFDwKU1HtqbMzwkIOIExk6RL1/hxAWJlolXRlpkbCJgHSkqUqDrfLqf2DTSm//Xm5S+fPi8oiRI402fiBkUCs5Z9jInLg4Vnt/VLVCAqxNWE4JoIC38w3wV2YWrck+mIY63OUc1lhf4XBoy4wGFS1R2HbAwb3kwO4zaycHAqbBa2MUVhZXa2ERxmt1htsgqeEV59ww9Mm9gEPh4hutps40VNCclKvUeao9165MSzMKGfO/6FeV/9B6LOrTlG30wd4jXrtLqTknffF1aqGEAdRJg8zGsPsv/VH0iq7uLg7Q54obBiSl5m3O716w+6/jbOBHh22DdmXm0tTGxhtXJ3NMpbq0oRpqjkrCjx3wqOEAMIovLHGzVExJqRb6jq0aZWhz7iyTFWzrYjeMhKlKIiIKKgSVv8uVxdImpYq+K/x6walrDDvNu4tYijUCgFWkOSDvyEkIiaEuXG4qOgYH2TN91LrGeMN0VPCqSqGQOLpTWPJFq3ZCXbdWs1Zrd5PIVeQvdvkzr7yRQ/EveGJmH5vvD9OOipn1WJ80VWoBaoFMrwvpvakKVQXFgsh0AAqHhumB4R9rt7ORTSShkRb1HkOdcZvv4dFBpaBpk1347ABqddCRTsV7jxEDaAecq7/et6uWOjFPwk88Buvhk51cLmOkNInm3AeXoy9KXsZXvbe1K7uUxS3RDrnLzxpjpsrn2hqAkBqIub7/Cym8wPBMMfEsWgsHJNackOcU54taqABh4vhUaYi4c1kHJPZrgDAQXfgBaghf9HItXBtJtHCObJ0sOCB9MSQEVDi50aj6pXLBA0FX3sc6OblFHFzus+O35B8ppb4V6gf9X/J9+Nnu7msrx4CN6I+xOSAn/mPd3p6fPHLbgh3velxL0DtfHQZB+0Cd08Y8JnZWRslHTt2/JyPovBMR9ZmH8cbsjzqzi/kmHzHUflJP7W0MeiXDG4jxde002Nj7fkF3GVyLvnv6I8iK3sfeO3q6SaJSPQ1F5LGRbBoSAQrysvFekHRdenEIRFT+E7YjSvxbjgBC/1WQDHAqV3wFs0SgB/w+RqBEvls+L0aMIeYzxDEIhXXpF59HJU55OP115v7HH2Bfugo8zPHs/pKs8N3HyJ2mzUODZD20pzTYnCWGgnJL41Xza7Pk0C5XWaTdReuRrDc1JLLOs5cQUZx+ib2IuE76i14Sc3pg+3wzQndQtZSrNS1Bdl5P0oPshq4higDVwh+Ii6sPVJ7wAKPwigDxoCiITRt8EEkAkFfrGZY9dDGShbvUjG8kK4QLjaNiPRSReOMozM+01IXVTPAkbzPwok1KqQi/YjJDzv6oG4NrIPSsSlPgNUXCdw+xdnz60iaxCEqcipfN92e6GLCKHMUjhiL9hbtDErm7BKHGCL3q0h1phWvhUauKGidoS/QIzl4lzX9fWSwyNyzv3/xjSFp8x6R85bNXWH2N6ttjjUPnw/5RoekSC7kX80PkYSkroWF7/R84Cq2yPOXfobdckuvWURtyE0dKI6GvoKV2h9Z1gHVQEU09W1O9VDao/uMfeF8ZsDK+lG7snlyNX1wFYBLjWtWzBmo/Jb/beXAHF0ltTmio6f5hOBE5UBHRCWtUrfFXiB4FM04YwOwd2sUcAph3hq2UE+Ei/bJtWq54DwZARsHB9Ws7kg/7eFI//8kJRS4MIDZRD9KMC9JmEeff6MpZcFNOuv9BUGpuDhzxdyBzFnz6Fv8lfxfDtg21xCBgFiTkGMu+mtnnFgVuSHrlHNevPb4zFfiAlG1wyr8xADy66uP8v2jP3kpPHzOYp1YIaLUGhLAp9wlWX9dhC5EWnxxi8H7wYlrNM43PtkNruPMvEUmX5ovSwik/GbhoqA7RCf+CY7/Hh4j2ELPB98mkmccDp/xEJy2KrciTASwQ2OizeXRTaqJLm/Cyh0bugg45tmizILZEAIjkCZr4iECoaLLQIy3wmKgxNvwE0rYilcC8WqyuFBxCbbv5Zg4HQF0KIhBfUBGCaXRSINQmqBPJXQGqYI61G89lZ73gGZitRCz67+XvrU9zJcYADS3pspHvuWqB5PTjXTh1LxBUpjJ+vDFlwBUmxRI1LTGb6O16/3LNv/D1yxNnqFA/JdqHlgv4r9e+21047SHNaSpteo6vt9rp5Kwec6Ao4Rb6x5GTvz8KHLdLcJRZ0Ae+B+j2JyziLp6+D3ZtZq6KCdis9f79/zx0XyBcRDea7T89ZfFiHVih5f9AIsd6nUK1mPcFHUwJ7C7WjNUJPXWlEtEs33DUtcwvR63/FL8aIxaaAc31Ub5S2jIjV9n3rxivkPg6H34Yd0O1L3D3aHk7mHmh5DHtcQI+A3lzrniT7rA/QUpghRNFTy9vjwF23qK7Mq/GpwC+ktpL+qxn2L59acCajQpgisixcS/DWB9xVzs2/gYkugz3S/xrt8zv7uJ4BifeRUehRsbdfW5FPPpYsz6N2ESqcWYMyhnyLZfldKrKZyIujhkTGFuoB6jsO81cw3czj1rdxwWxb0qsqAlBu8rjXmXLav8Z5f0eFrPu6x6iyTyCMmm+Kl+vmVxZ9BszffY5vk+l8d02BQdZeyyD3DbflSxVWRYfs0P6k5xTCqlX694JyeFszNFKwpcLlOW0hhZEJckNxdFNgiruqS4XkxlLGwKKgxiPrEcPmx5wjxO4JbmGI8bUGlZv22XDRM4oYoDuHztiJN7HUNY7XIc85Lbg11HaIhIYSi6+Lo7FIElQC0AAmR7eE1REaDlzi5+2Z09IBGClpvUU8u+1KI2TwJ1AUaj/Jua+WsI6yCwGXr9IeRLHzQ6bUdCQ0jb9fJUGzDfq/Zi172Rqt975JmHxLCitvZHEawYUsKKvAIFLFqzWgnHJapcx9vxdLhmJYRACQnnRPS9Ea8D6nVnEmSZU7rFZ4uHFDFsmQDBHWYip4MfgiAJ9NUx6qSP2cuvm3yMLQoY6xw0H9eRP5p/xVM66n+sE5vhqXyCFdZ/0L3ZAi0ouOmvTFOogpkgOfrVkESkg4A7/EPvtCWD0xooCykN0wZLmEOdu4XhgcaMn04DgtYvPjvJ5vn3nOf9H9qvoQTcsLG8lnmFLq3tyNyebGlgDsmGmBe2a6cN1nBPU0lTajXTwIR3dMs9baisXRYXcK8lGlPLsnnjfcEbHl3O/iOpKzOgUz+WpD/YcjrvDfDFe9tYtU0eFRhmOxNT8ZLKt40KJyURflrEzPJAMRf9RLBlBX5uT+pxOhwmqil2cfYAl8aTtPyYYTlQS7Kr3lKwBHJX9La3VxwW75ihHPcBVw66+K4deyvnzRPBInCGl4BeltHugBpVWl/Za4pdQ2BO7eP+aJeYSYTbnJJXMNUbhLn9qHcockGD5h2a8ulKclHKzH9hK+4771XLibeDwm6yr82yBydMSmMSgr+m7vmYfDWb5bJZOf4LG55i237/wXeup1vaL7z3TVTevf05pH/L998vPxn6+fZdZaLv+wvtW556fN/QfVtu3JDBhLq5J70ZYn9bgVSqZ4UxhY2qYf+i7hpH6RBzl9KXbA9OMwgsu9BOCwGyGX0VCJjsQr+JBUAifK9KJ78BHmUiIDXNJoIVrXNEsHhEDCvz8qwKWDRrJkCYo7BnBYB/7MULyAoFJ1ZXJx6FWnFsKou3X+Y3ym5lX19m/PaCF5Hy+aHaWRrNLEfCDKvmLtQKvfhJWYr57alTerK+yEAybNyYnHxDRfRhrFYVufa5n00/dco1yRQMGjhU8hVu317EC9FbWbb6+vfvbSyrnl5SgMTqBdobj70g0RCanNpKI704FvPRZqNBtFF0ng0N3ysD/rpwJe503JULf2WRP6myx9axC4LAW4HbpXFO7VbRMBLtLp1yMFaoKbsJqpLLxY5hHRqVchwpg12KWsQBZ6lo4mPsND0ciw/0ctmlRuB2bFKfXNEfDqPQe8n7WI0Vpj+p+vNd0QjMY8804V6tsau+fUBWTNkQ9A2Ud12rPVuB+wJGnE8YeATaoCpWKosZYu4QBw25uCGqMhPA3XIOOa4sWBYmyKeZSnt8xCAFiH16SvNusCD+/8OYFVUunJnAmcAxNdfKTrubjoeNh4MwcHyrYh0j2Zs5LYOy0gvESSuXCpZWSnGBpjIoGdOY5CHbWvFiRbNCyqwBAmVjShXA+Aa082cJDCvfNSXUVnVyiDyke5gIPAfbIOW8/A+XQ2k0Y9vy73zBlZeeChQTpfDk4GXsxJ0LdyX4SPEcexsJEZbXSEcyF6P08/JUenqjQr48TzHKCyX25PnaIrz8lJi5p3J5O+NRP2+aEBW0M774CQWhhPodjqRjG44lOYBniifNg4dG8735njRPle7gedCY+mkqjJPoxPj52Yp+oDDQIfBTfgCeYoxGEIZEupHw6vh/h/hBKwOpvmJ4gWKKjdHakcCX/rzHX3V2WJmIB8JorfLNzfkjmqUTbskp4OIsAjbA2N7KbKVYYSTY5Oh0dLYy5wArw1ott1uZVoAItu91X9YNCNp6BTfTD/d2KxOIbjkvR1WjDK13j3fowMYTuAVtNr8tCUrHz7weTo+pCKb3lJryaQSOREVyA7WBnJlQPm05B/B7aLjtjb2Z09WKRX6dQt3L623cjqMRQ3dlFyaHV8YadA2N2s4G1DfqY/G6FCZnHfXNNw/ItRs/BESOsTezCrC02/vHqX/x6zWrRX3tL698BawcUnaLRmtrFLDonAIONw7K+pnY/hqF15tcYcvrUQZUt3gYotEY/ZOBPXcZLHPJkksJeFMjJUYfp8jA10R2uBN+WrFaj6EAkRwWWvG/Ai8+IV4LbrqKJgHqY4Om35IHhpGrIvz5wY/RMJ5xYqX/l4u8ZP5h+IcFwCmik+gaYfjw47CRnXdoNIgeJBarklb10G/wNNLU1/IIsJvFnJ3iBqk2IEArDYvM+AIXHJSeHlScHqy3+8psMrrxdGzyB5q24YkPxlkatIRmpLZWSVbGPYA057X/GpI6lVCIH/g8NdIz9Pa169ODi9ODglIX90VkRpg0QKsNkDY0DUPFYbHJwB7O1jsl95/N2PQ5PymO3qn80N3xCzei8ZeOq/OL8Tldkxor7lvssTs5MCAdb3scXsvHX2GXHqmtwsAraVibyuy8z2zRnHd7tTZ+pcSLpuQyqwiv/EoMK7o6lLAyWhRwuucMRA5NdgOXengLrIK6LCXmVwTfyGxW/tnxL1aBI9cOqNcGevT4NLy+Z+AaOLe9J0KKQpeIGiN69nEj0CnyGTPkKegI7r6eiEZRCRoljejJz09mmluFrxhwgwdjsdzriQLHWLCtnApVQxEiVDVELd++gIFT/OAVsZix8M8/F2JtBKtq+w1oRQRUta3miZf8U3rBnzt8M/bc8c3cU32Q2myMXo41eVYOL/1BhPu6oajI8RVO9GvLcLNn8oet0cZmYC4HLeborR9SPFtuLn0swn/pKDI1nsOLflhys8qz6O9t0twWanm7KsOXU3Tk9t56E8NI323yzrVc/YT1bbDgjzWZuzOBm71NdSXK3gf6xty2H7hcDs7eB3CApRB7uWD+tG7vowDu3pSWaEN5rMRXe3Bh012nOBYKWTuyXhQTVdskrKRv3zOa1JtdJ1DfXKjbguk7RzxE1hyyUsOnlbETTcUHfbX+sfmLp8iLuOyavILzqphInj7rW8N8wLEq3pJ7g153j+j08qAmYTVHsLKk6ad5tlgobECWEBv6Y2buYElVqnERjqDSFM9Sasm0edZITYJsIAyKtbX//BCc9ZK+erreS7A8aFjXie3xs3cn/Jj7RHgUnk8R2AoLXU22dwhBaYYVpRvjQseTcRLQiCiMDYPTZN7Au7+4ZsAPSb9ccDXwaJtMq0VgjMWCgW+YH4aIKduCkkMCtRJ/bZ5Eq/EvoPksF+Hp+eKdyuq9ZV6idm1AjJg96xQiHhQvouNB7xg9CA810ZYLDjnfCylAOC0OyzuIDqWRXs/FOrECB9FBxYPmvibROCZA5dJMGdS4ZjQgcJRmlzYxcLDNrZdr5FlDwGuzbMLJm29lIs6JFqmhjClVXFSnb1zr1q0PsQuBiTE/OLmqKhn2K7zeLxnuG+DkhBPkR8cDSa2BZ95tm9+fbe/OAHvwikNf9N2Zm9n3sZTn5Aff3rRu8NoQgArO/pyCvX8zGzK4Uj1c2SzLY4y7sVfTAd58axHPIpxfXym5dGmVs/48YZZFvP4CYTa8c0llxOSkVQkssbv4kp3wbMKFVQGF/ORC/+v+1ZJR41Et61ggLAzKLQzotYGoAdUBWu/rf8wBhnyUsKItpa25yWmhK0+B9zCsEQAj1uOnW5zNTbFHUcDKvXtPsIdXuFHFIbPA097A1RrGHEQY7bIPMrF9njX8jlulT7et2PZU1Dl+mqgM8E+UDKBnFRWJakV7sBIu8lbilevXtw4BEIZXAorrmeKYe9idBi8JXh3AaUhzHyDtJDYPC4bBe9fzSxrIbYn5K2RsqG7pXlJT2bOyCt+9S+s4tXFXZp27//yPNAMrIcPEZ27N+91n76mM2mSMoNq+EfuMFF0W4Q2BNoIwzNZHj+mE2OyYYEInRojdiimL5+sv7hrXtSrtvBP10dFlPvNTKDdjvH1ifLwBEnzrUHA0MLcgilgWO/p4VHnKcarc2uV66urS2ON5ctMObj2Y4bfYhScBop7xq26ngl7oWzhNLl/xTHJPgfwkP+KuD+KbYtUv+u9FM/kaZinkmwZ3fLeSIqIdSoFduh3ufY5uz5R96vGGXeCxcuAqkOKYUE1Y2WVMF2xlccn+fZY+VV6ZV/xx1om8i4JK1VXc7W5W9s0dVqH7KcP5xsrAQALcUNgFlJYx1Ulx2QcPRL0j3EvJn6JZrKjXCtz8WG5VFN9q6aIkKnYLhojZgqU1hCpghdv0b7fUuJVcq7kT2cDiMBxxN2AJ2OWrdYSv+weWYras+UkSQf5f8GBAjS6kRuVC9EzkUg88uKGBN+uwkci9006cpBRK8tm8U3iDj8T6F9iuk2wsr2IuPT4bNb/Y1xDLitmUqJw+u5pi7hI3mlO4d/bfIW7WRGcH02V50kL63EeZsU7S8oqT/kOXER6FB0pIPc7NmxlVWGAYRCoZgEcjbA1qtBDNtB68C3oH1sOj86bXkplJtzhYN7O0VIQT/fBDGb57BI8vs5cV4fYwwFnBAaVFRP55Kw8IXDREo3kFidoKy3F+jA/0hWJZmE0BXGqNZBuBsnYpLMwDXqOHXWNBY9Ft1OsASHXVcyRrIGYWjhuBGfs+TqA1QXRT6IpiWLZv17zSDvWJYE7wCXXHKNDly9ZqaXnCpsIwtosK82iraRhac8H01wtkC15PN+DTBF0tguF/vMyO3tvh8/Cr9+nY28MLj7OPX5GvCWZfY0xTVX3aiPPDbfxUdcLB30BUiR5Zi1wj6Aohrq24p/Hh/PIX3jyn8HYVKXivetOCKTv1HURGGj0GsaPqSHvpJvXe4P8ag39UNtrba692u9vN5lFm1SPgKnX3jSxfrtc15eaCKCF6mabaK0gT9qoJXYUqg2owHV709ehq1NTZolb8+VBG08tbmEPoEs0en7TZuWbh4wdAtxcLxQIUz5uTnly7Mpv/UJ4KAfZ2DKyRw6NMJDcXsd/pUVheA4++Xh0FdzuRqktwsoVxIGAaTNqD7UQ3m5rR2E6Mst9vx7FYu3ET/Rl9k9H+vrcLhrsC09NKhykXQsSmOSQK/BTWQeDW/wiXoxm4rA0nrpuJKOt+00r2HhH8LmfUzYiXgQTjAiKdpMlfVZ2C8eOuZxPukr3eC9T9jqW0/TmBMBH3MpGJP5cPzJwDwI3A3RoNDkbck2TZmXeYQcJTOYtbKBZvcBb3oYESVrwTw8pNu3elCBgcX74cgZMm3fYkGDnK6dMBwkScUNy50zwLkJ+3NfPAIJPaBvyiPz+jlmbcKx5XHacu8XRM3hxvSeK9pPqaZPWGranilmstimLdZdCqSFsRnLHkZqIk+56EszxOsi4Q0J3+04ulg8fx7CBoZ0T27ICvQczDoLT0oIzgo2XH8vfnb5Dcy87Ivpfh7KrrDB4pGgnmnCyo2wxO8AggsnWdPQe3S6NZl37gKmkNB7ctAcxmJifbnPGZB7ZvNhkQbHHzAdkerqmbE8hhLwAWrEj+3neAhtBu0obcL9Ay7rHVYNzChkdh9rC5jDsXJYAvtnZ6uMv7Go7gHeBNwF3zbkCVQoypkc/8KNTEEG8D/pid4ma3rJfhLmAu4JqJ1D1yXa7oQDKOKkdNBk2i5FRc8gGRLle+h0psTj5PWct6tttOuYb46yNwEXp/BIxFO6/e3HFViXYnPKp+vlY0DqnF+DU0OCuPeSbG4cDAyPTpZdVpBK5WUx5nb4x4F/DNPq9S6RaBUcIbbULRimJethDCueFecOyPL4uMvY7I42khKnmbVj5PZXiJExQjDGSrs/OAMl61v9Npth+kp/H6Dmzd7DxwMOfgAefmprri7PbkOdcZ/i1G4VnQ4wACmgQamhYAX5DKA6I2N1MhD37KKSrDM/GOp4I61thRH0+rFoq7xhXEm+OnxU+NmoEVYyX+hvRrAgnmZ0RGrImcGXK8a8YSf4P1oERVtm3oosgUxnXZdemQbOjn90BuE+EVNoSf0WAD/NWLb2JavvKuhhjRMY0MmCkypPAKr3dKWUwDE2aIklMGNpHrkS3FAi+vCbQVzcfp9T4EE9wol82oAJxwxfl7YqRFr67c/42RM6PCYwih8C8Um7d/dqaVA8tDV8v6IHocPH8XGGBxUGh6kU+CmFpXzQc33CaX6hJEGhG8+EbxMZAzhjZ9zvlhg367Nk5STY4jVMyuBjk4P0i6xX1G4ibe2bvBBVVbIxtqG3GxEALxeUgH5Qnn7eF4OQTzsntqExIAPxdwyAcgX+Mdad2YWWxMDSTpR1WhAx6/kV8d4OI98EGsKX6jpIN/P6sG47N1IUY5B0fPXIYqhHypwJ/+3CY/FIGaTTagq+qWnf5pvd5x9/XajtOIMstNJEh+ENcqISUTkTK5t2gLUkvz35P1k6U5wGvXNmVnIqdPf0/cnBt9ajsFc+D+fL8c2dvPXUvxiNMOXpI8WDddNo9xPqbJSyq7+fap8ryAwn29VDip6HExH4VLXnNlHuSd/VyjDWqBbNKwdsEKH/YT/8srNaVrCd3XTfPusLiFkclc03Mzl9X6HgpUKYuLlTWioJyqkJc3Vj37P/xIJmh4jirlw3LmkH23QGqi6ivqR0LuZGr4+D1PcGf+q9v0CdqjATV7409nbEdVtKSoclpwEYv7r5DZ1AbjWzQxgyBmb/z5dNKVl4eKU57tTr11d3HxDbIyKMCwLvLMn+u4KU0YwxTJOmWwxLA26vTEuoLgyjT6wvrNFkm9HwOOlQhWpkxsTNPPWm2Y4p8aCaZNpamO2k7/vJEtJmQQ0W+NDVQ2+Ur/4pU6y6OSjFVnflpYPfCINkG//crAB8dDWoY2477Qt1C5uM0tQw+ap3MV3IqmmNrw7GK4T9MHFz9mBAnb0uYtvEXrJj+cMXIejE7bar7PXU19El6GOd+eATfVw+62bchKGbyZz+YYV/gYvWtctBNl4S5qQS+D0qBl6IcKl3zeMRSNgGqUzasEz5ckKO+GGrdvR9+93Rkym/kifuDhIx2+OaV4Hpw+1lPI6RjRARqWdm7IznZQiKGNFA3RMfQD2CQcqr6OzpK4oSFv0wE6JsNdCs+B/1iC5OqtIBytc7h3v98Zd2DNZlciSoHrif3M+vFvMzee6EnJqJeqlyjVrc1EVemQbqhURaSQs4frwMZfqAX06js/ZgSyvB/vVIsoBb9sBLqCxkLYP+v2Y83j25WlEG4smET5lmVHA0sPGDNraCc+vYhp/zaChQNFU4sGhCEBPiaGN3Pk47v2UzP01JhcXAh8/FiNMBFDQ4Ohg5J3/jwrg07VSbYZjSYn19nUZDOjbtBkNNoKKdmtjNZ589EbvHSV9lYbeuVq80rudeRWsWpBdfsnD51Hyme2M9EDfddqe331D58vO+iqzlsonAgqh3/A5mBc+6mSvr5hV2/Qeqa/0t+voXz37vIGv28O1rqQr9VGg3FRBTREhNCIzXvG/ljaVrT0j7E9zcSgo0Tdl+p8HMPg3z2tzYRnhObWO3d/mUp0Ez8FgLP8+QUY+QR9eEGcImE91iwIPxuugVkN6vz8jFwhucy1OncXzZ9JKiud1yRIEjR1aWx8fu3kSHI0CaVaeCGGmkbMLfvqA2b+MzGc+VZs8vdSP41WTR0avR5sA6vhTMeqyCIyYXBd1r7ai7GfvsEPI5DF6izfWYHZHxmF/f1XE3ewmxfQ11RS2tGq/50jtrnKNf7OvF3ndjU370rGFsDFmK0eIDZ2UxixgDatjDpTddNof3GaEny9/mJsMDqM7/hejR0qD9C/NZFNMxvbPFP2VRw3HTyYfKli0zNfzRqXzadzajrJu7WqUTCHmMT1DaD0Bf3zMpqV87iqvXw3tZ0mAY9wPyMWZUALMNpmE1ASdY9odKmUY9OnX5JS29BJWyQo9PzP2bw7i9P/ZzVgljMPJoPgxw0NIG+W/rI3EjPaHJPHIq1p67lHVLY1ymnnD7fwXu3yLC0j5twV5/IG3q/gXll+zL/4+VwD945ZdD35ZH3KPjLoUdNstGLcYIYIrdQjuIfoWY9whzV//6Svmt/gvYlqBZtf0xAaTnCCugS4Wwysz8tbZMORRnXOREXG129OZ81U15dwCONkYyi/EwUZaQgoo2+8evzDmxga77q0I/H7qQvJX+KvY0OypLN2B1eyqbIoyYIy/PPup1X0reKtjO1yeBQebqEGyH5XyKwpHSLeuCqzfs0SGu9cU83d3799XcjLn2u4cKnpQdzRqJepzH94otsPf+P72y/ev52xQXj3z717krafXnUD79d94mF+pYzKjjoa96Dp0oWGc/gvya+//f1uTdM5Hm3JmvrMVRvp+3tpE2jauUdK2djpom19uafdz/FlCyRRL18ZvHuWNCsEe33zhVO/T+yQXv/amDcfjl/9rrbSejcc4Z6l66YFQvE7Q43kW0yX/fAOzS70qk/MT9l1FSczniXDsXk2blzvDsRRKjbbeYA7iXlOep2J4xsuAS7couX+Zzlb5fo6FvR7fcVnFhYehcfhTyGK0Rje3MgED7EHtfQRg/fEC3XA1xlrVl66XK9etnP0DdCdTr78bODFB8HZq8aAA2ru5BG1qAcO/x5fU+UzSvh59fAkUR38FcHPoT4yyVWLe4IIQeQEn5KcxdTHjKdLF5wF4LW7J6ada9F+7ZqAR0RaeG7Y3topuSvqNu1F4pdzTJx7jU2D20vicv/IUCv9H/Qb+sK15EpOn9tnzcsN3VsLRh7PXW8ObM8XE5QjBnJk6YwNMiWV/ED70tpREwwtg5ZindiG4LWlfxZYu+G/CiLJhhElQZzfHmhePzcma21wg4WWZrlmwTU1HdtpP5BE4Ki9iNQ5fcp3wijatdx0PWk50bB57RyF8jziNKufbVYjCB+rsPFF/NY/suozSzhj/BWepW+Y+6RyVzu3IC+jkOREntGn5MmT0fwzP6/8W9/zbf0VKwLBabwVXYPJJOc5RwSiq9EUUwVp3iqDTCiyyRg6zIZugzK97Lm/pwmVbu+RZZXXeCVQd1mESAwc9on60tJdOoXoe6aU7upL6mHl/3DWePB9vUCPi6LxAMeII2DOw+eTaCRvc8sAosaNDYaWFDm+t/kBT5MUynSQg/CObO9F7lKNHfV0L/Imv4JQTRLvQXMvXp5iaGkxgBuOfXqClrVcqVyez0RP2PeLdyY169zw5S2cLcNXhqhZ/RkA9XV5RRozJmahb2r5iTPJFFP86llL7oucerqB7jx3zjneop7uFNloGpIuHRGbYllpsYvk02OYafts6SQdTVOd+Qv0wbk8fCvadsAkqPLWqJQ/W4W/xqdThDQT1mKd2LWEaIRGLRZH6K3jGo6v3VbMmNPFPHwE2KlRzFEAAccQ3OKzStkKVXhZzGzC53JmWxHydBJbEDJ43dGVa7wFQqCGuglFsiV8WBdGObRFgVOEVAoy/C1Ew8qaSOn0kvQfRN/9f0uEF68Rw4pfh+OBiWBfGB7wzQ4NM57TOAySX3CkBpJoVUEjRq3EP5He/thwyiJPpSeHI2OSiDuRrsQSXMDtOiWoVYeWXYXFQFvdRC6xlAD18ZALuIJ1FXiIubelkjTOLiqxUQ0pw8oA2Yq0vlQH1sy0H1+hphBC4sxkjTbC1wcE4Sd2FPyQgdV+5GkjatPr67TaNQJ9VO/+LN4Hri7gVkC8Bj4AqysHYfwqWmg/e5GbwCU+OfuV6JZoQSHdtUQUs+w9usYLAfdKGYRAYoPU6fQ2+O+b7c9SP/k2eHz+DfLCt91Mkwnkujr3Zvg5GBoYYCLqGf2jdHLbHZZhi5RFlcZPENPERdBGsISkf9SLin5m/sw4FocKk+JnX+wB7HZ4FmTiz0f38YwNSfuO/kzcVukjUkzFshzBO41Do4nxa/GL2x+1wK3lBZtTvUHYVDcF62goLhbBos5Om6NITQVjfGoKxtFJE93ij00+nAuCAEnqn2s5vHl3Hoets9MZXFzcYAHR12u/uL9jW55HWXT7f8oXUXbY/yu0z3MnunP6YtE67OzfZHQ9PaCUHTrbbLZGE4YJ0VazWU8GP3BXFBvIq08lfelyZLrr5tiXRESCQd0smlM0FdP+v0UY2TJRQ8RIg6iqX5EgmtnNxA3h5NDYwNwD1h7TXtAvLpt3hC9KVAdCHVA9ZiWuD9MKQLBahnpBiNlrG3BTOOM7yWl/tlsJEpk8BNxoLgcWLQgreEmURdTODtYpReqzg0ggrd2Eu8e9bEYHvtxypyyezkdLm0MU2/CBcD77elew2z7I8N4dIjrGDEjxAry0QHd7o/dCXQm+M+TqvQF7gw0P77E1WUNDf9ZQIQSCtMZdWtPS5C114kWKhzof8apzpx9F+DAWMNbpOCQSR7fuvatPxMMzf+4iZARX8ZGAA3SpLxFlbu87DMT1Oxm6+HEhzDuoSwyMnc8fQoDwRCwjtS0nLNyooh9CMASPloL99aN/TjWXBqYKpGnYzIG5K3oGjfCeDbg52dDTIX1XkYSSAd4MgJ6PV4ykPy4uOmK8azIlQlx2Ap8Eze9aTou8VCj6sts9k9kBofPqMIui0tOj2JZ9IXUgNtpab2PaQqeIMQprqIWQ2CYmhhfAuyFNA48yQGxqUgKXxcA622fC4Pv1W/5RN8HYv5/0fpDwOZbhQxJ8GL5BgMLg4VZW4O/U2/AVK3G8+8/1rQnAnfI6+Gr1RLp9v+wkLiGX7benT6x+ddDrFG7NzbsKvqdgxxnodgApmBuMbLpH9PqRD4FxwFPchEjx8HIZcsMAb00w6HSGyG04hfMYKlT26fo3LXmaCWaGv05+o6df16csHPLAnTIYRnm3woYbiGw5jJcipuTfR9DskkMIWt5cb8kN7e3wlaegAzEdRgfPb04rb6li8oygHfbDv1jnIQQyVrfXoyohBNzkq99JlVbdunGoZkMmdwrafAk0mjJ/OcBTSSRSZHiF2CE22Tr11Tii1RVSFjBq9foog+2s79v+bTGhcHhIb5vT2lF8h0M//SuTeg7557KnlEjEE4gGqBpCrU0v2ViBpdCoEC7aI6q4yGrwOEKKO684IgGNM6Hu/kSkD91gMz+2dmVa7rOEOSFMb6ARmM23Jyl8CV7P6L2HM38rLd2e6YNoQpSB7HKbUqPERhgTwvQGLhMMne39ZsrKDT6Dgz7pp/d+07v47xzQ7woyBMqSA1NvsPTwoYXmIHmq39b4/X5GniIypghNloGuMXYars0XWGALaWzX/O60BqYP9FeHnVGqYcO/3E+wbDP5bsa+vpvFPiS/WFkaNFeVWqzgOEeIU/cvDZPPBYLjCzhfklYx/8iF8d4XVc1fk3kxn6oSZ92QrGmr45xBgtiZPwCFz7rI4DaOcFlXogRVMdOmIUyksdE2439WXbSA0lLw2ffUerSXSJiO1kfMmBGhR6cLRV7o9ac8cRbqQronkzoi8IygTk5SIzwFI1SmJ32hJ3rYk3iVvnhup1EZtOtCDwX140eqwkN4ncag0uweaLCb3wMhkJFioNTA6UYIKSJ4EBRzit0BEAKpQlcUa60rQlXhCiA6HpfWHnlzx7yvXJF1abCAMLIDMwdZyOgSHbuYQ8xhV6CNNJB3UsH1M4fAwciNyyNSP1aOC+qNswrGKz9GpOrMtRziexWj3cn0Uwpc674yqogq41d/K9trg7JOvy1+fUSAnxCFg9fFAIFn32TFPtzZ1w+3EEaACKb3ywADXdt6u/rkRnlUkij9jEDdacTW5dvVJ2aRXMWNqC718WleaV4+mOlXrV2dX4c1kmadGD1VoMCViys3gHFJ0EbOLg3Kp1DEMALlQsjVgQRtOnvabec9BW9RETsLUT96KttvS6QLrHMrdwVPrrYmv8Sx2W26HXidN86mM4gQyKcjuPXsjU5enMBmqzy1wwq6pnVZPcDf95+2cRINPs+YZrL2sJqm4dg+pFZO29OD5eEl21MX57c2by7vMaql+ohKvPgtbUsDtFElXtmF1TFKAxsMNp19U7kn84+ba1woszGXknqHma+xCLTsHQIz/01Qh1e3u1uozCGXnkp92/hd0n5mpb+4biIclZXrXOdcww9a3JG87FH5AP+9cKC52pyDtrJxLl5BrkypJCtQ1WgZxorOMVc3DwiVSdmwquEUx+2hgpOyxxQ7BU4/onJKoAhzNtFT6UnH2I4geZBVh6Fjf1WE055T5oxn0r3nYY5oB3t2jfBo/gVDKKmHZDYZe9mdQ4d6Ji5dkmg+XU+PQuaUsWTUw1rLpCA4ZUSQJEUbNifMMLcxoQ7aEHUxhBX+PWtWPnB/sfT1hIg7/CfzIu++YMGkRVuPEYaUUT9HG/b5wIJCBo4TL/Pv/zQOxVG400zFxof1L4JH4awmEjQJ6dvo4zZmyZgyMU6R0DEo4ZQHAXtq0x0YHJ/W8o9rTEZyDeFVste610bI3/QmcEDjuNNnEAkVnE0iZYPyTgUmA+ExcNTx1oiE5IWN39kQXWViVNS0X6rCGyvZyXPYNliFA+D2isLk3wEHhRKspaYZZKOoo59OvfWn9BXS6OFc8scIPh6L1IBGHPDkHe1T52wL4Xd4FE978pK2yVfksyv5CDc5cN2um5MXwBhlGTMefhHNpPFFgqKIPMkF3aP8EH+5sREn+oPmdwCEttZFdwZMq4Dy7weoHEUlbaXEQ8QSG8/f1gHufxNuXj8I40s4sjmqOcY5nBeUwgueo1mo6wCfIr1LwIuM7hmjngtqQxevUWq/JTsPBSrFHjGHmDHw6D+5KAPqI/Vjym8oPUeWQGrX/RO5Z47VQpt7etjNzmkTrQ0X8UPtMXpQlQai6WBMLWA2+sYyHb6RasiyfaWTmUEgUT3FT6la4bi0wu+DgNrO8VR6quBYzjAYqYCs4VK/yzVpuIc/hPcX50wrJXZ7htZN5/CzqqeB1mV7osbFEvCEk/LZcEKaPskgJ6ZsmsmKg5+vaThz7HE1i998fB3F9htLkizhNy1hvo+uuRbwK+iSXYflUA1K4NYGj8Yruzr7obFyjTzUia/u0/SN2Z++4Mm57wkPfO/XBvv9p2gVj0uMxN9ZNUlZ85UbMjmph/0cYOc5Ri4zZ+TWA9Ph3qFffzWdPFs0/iXZtGadfthQbSAZutaJYQQvPnnmfdAN2bvb97dm+qctP3iYCBOwXd6NHEY2E7ip1U82v/jmk18Ur9nhKae+oyE60WcwYdAnMbrB4T9PjxYHL8rv0zcvNj+pxmzB4p2bAdrTIelcwuGJ8nBuxmO3gM29r0K49kJaseieVPVrLBGUYKts7AB27BWDy06F5y28Jbq1MO/u1FjDt53JvvOTNVd5UkgOkbMkoVHSJed+IVrtfVfMT+3OR/chrfreQCbQ5Xcj1uKGg5ygsMU71292qOtOuObjU+62vtYn9qEveWJd1qKfORNrZ65jUGKCRTHGFV+lfbUiJu/fK94CvyQv7r0PPLaAnMTi3Z1MTGUlkQVs3od7XK8kP4E3b/Lu+xSv2X654bddoXYYTfgdl/Z86ROhnZ0laKdmY0cnDaIhNGh7mxEmgng60xCECf6IqBDxs2dXeS59VDY6NCr7mQtBrLlc2pG5LAhSworZs8Xw7gklUbllS1htH7NIc+X+n9wuf2BvEjIbxo9vbXPwrNV0jiHmXxiTd3wgYJSeGxY9dPuK+PLOfyz77EpZ/tl5WXXy9lB0GC03acE2XSa+jMcnos9PEPFTxd/3UVOqKniCgj5vKxCE5Ff1pfd9L8aXkSZuo4h8Ln6qLnPbAnlh8KzMgeXtmRwDDdSPtS9YEvrmAA7r2yQdyQQpm9glID+eN/tmLVF0rVpZ/48kIOgIyRMV9eFNdm9vK/saLiPZS8/akpsYVF7wRfsnn1ROhhG3w2H1bpwMCK+XJhUeQV+00Dq+xX4ifwiS7VArk6xBp2uTfbWLlS/kTlSOUsb0TWZu0GjIWiuUK9VJtFqJTgoscW5WEauAHzKvovf6I/rJ/HgJ38jciJnz27Rf52A2MvlGSXz+pP5Id2+XqMu/T2+ieTMWLmR400z6vnLTXUax6d8VExTJCliU1ZIlgnEpQt+ukl3iPqVJhBPF6mKdo5qUfeD3fTvQff+UsgOElD+3+v2Je4xbOCOpJjGxJmnGQtwOED7mOzqHninw0o553sY64orT9gUTngVjf8B78CcKehGYMSwfWYBQdz+vwS3LHXLszuOdj7AMDrZDKzV40uUY96gmPQyaA+p7e1WBSKSNDaVScmWeECsqJ2R4pSFpXhmEVz4n4+XZieKlCEu/c9umZicUHwIPJxus5yMxcZgaSHh6duBtCK5HM2sJBJfYqY8MnP2Fg2ri3iWR1vMNwcNhwxf5kuSUw1UnF5BvkRecPFx3kgf635hvPmK2MfvotSwz9OPhw8Ad3iDwlRrct9UsVEFcWnFdpaayrhriBFSC+IGSJpGVhGcxIASaOpXSSsSNcyJNWPkpD+/aQueJK1ZU+BJwP30BLCvKuGmd6R3iCPGeaW05NPo3mmnQ9j36kisboUHCx7M9jbQqGwVtfmls0EukOplfawHN6Dn7sRDSiBKR+HgkURfAXCEsQMV4ooTRgdlTw425YWYjm/SCyoOzU1FxqAJhOzNKlxiPIPEJvU1vBbiQ8/gtrd5bkpzvyzFxMEaKzCbDLHrhwyRE1IDDN58co6C9fbxeynVRA2zhSnktlc7TfbmixRXjqmKkoAfRKYKUqBmA0hwKIZBynl0wdL6FGjY1+o5ikeiiGK/gpf0ukLlj/XW898k8h3+FY84aCAFdy/+IrkvU6xobdJ3i1rINidG1fy4zpH2KjqiaFCcHhoZkZ4WUZYfUAmFSccpkVUT0pzRD+cPxBxCBCE4ZLX/qAAPl0cscCcBX26JR9/fZJvPdbVTUuG0abC5KK9W+HD1w002dDSNbENgrQA3ULMOWQgikqonnalS+fEuZQ5Vu+MBt7+tRrFVmCU8dxlWgjHUw0xwerzqIQP4N9V2c+fbaF56MYcZEVJS11zWtiK85mgGt3kCJ4x7+7EsKYL6gvFzyaKOuAsucEpkS1zDv14SX/cse8IgZEqm0jMQJiQpVc6izZTtKGdGYkGLPI2dA9nFo0GI9w8akiud+HbOAyk2ICvEhlwVIAzII/GPrXotJukhP/OzFLMKeiqaKE2TOhajbE+DZsFvcg6YAl1ID0W4PZjHbBQ6LQGDRDGe9xiFw5IaJKBc+zvEK2fChXDFbESjqFv/Z8ZhOu0AmdBbiqau30jnoS+w0Hrg5+oe9B/0FPL8poslOOJcNrrni+qv/KxbN6ZsjKi79JYTrkz3Li3LdeYha6O6RwZQrgJViCGeqM7+4pjn+SBi0Z5FRpmrxbYttixtdVQBemWYK9M3bvoW7HqdEaB0eYWJ9eb24SH6CnX5Z89h2UasB7zpEP+p+1I/KE63RxKhu618f4SgHJcuKZm4zxvtzXjrpeeCmy8ipJFRaBBgn6SgGj4v2AByNKkkGN3vxSJiZRqMymsDHEr2ncmTxkDI5Iz1NIINHmch2pDAtvTcoofo9qTVX1kkKppWf/Fa4n6l6z+zg9Bkf3rI2hbE2ik+Uyjw3/xyCIUlhXL7Uf9csdt5JzLw0mXYu8O/zYs8KzHxZgVreixc8ntgngqVdJOat8f/x94PitRFMhY/4YDmcRU6Fr8rNrdUHoMl5uaU8cL/2RhSLqbpGQgcMezORLVX9gtDsEP26lIVkZYWE8ZdWibpFNhFBQTIJw2/v+cGEKxxCMKg82fTQmKiaTl3DfPpwk5CkIIhoSryi6qSwc63FIhYsEJoV2FyFxiBQeJ0bwJ9SwBv35fnFeLOe/KA+QRe36sDM3b1wqndQR39UKv4t/AZ+i/c+ta4iJzh/JplNfgg6PQ5vbhWOwAV12OT/poasrJFV/bRSyi39YV8BvhAeEbbGNXjZeCk6UGdOC1eFB0ONFAE2705Gp4dOVBBc+74rK8XHOH44D5RkCp1jrapEmIh9TgcQFtJ+8hy+1R2OugH/BY/CP7b36h5GYbXiz530qCGZ0Y+pPhR/wTdQCCiwSpbpuS20orLq3OKkRWnG9Ly1uxh/TPGIjMspYqXUE4LS6zYmamANftqmuudSeiVltz/SU2gtBu4yFohSOyMkp7AWOmSFeFCfbsGekjgjFrPgUfgBiysAW6FqtAQTh7eywNADQgRLMxkOVUP+EIX/VARhrHq7YSEOm2oaVcC9elbw8UuftYXGYU5a1Y2ZNeRZZfKKsgck80Y7gyNyi3ZGPGg3k2Ydnx6hSz5Lzcm3yWk+JGhWqxg3ztObsZOLrBCjq6EAmVYrq4CK0C0XAuWXRUeXSSCk8vsgT52+sVGv8zSuRZ5nSqAhMH+FZx6EADufkxxpiiyMNBxOR2Xm2O05mShsTyMkElM5NSZmahTGaZ5meRcG1RQ3PdZijqmIb4pVlKNyw7PD/2nIRZWnmQu8s2uMRocxR7MbQqCbl1ZVaKpA+ZmKd+mdIZ2dgic5Yltym3/2Qzf6IQoX8ZkC49ZZnt6Mev41rBMJKfb0iKACXPnf8dS+KDM5NTL2euM1a8CRxIKCUSbxM2ohMscoVYUpBnk11F/Z4JdopUgJwt2C9gACPXVXhUMIE6msRGDqvDS95EBs2ikqTG5h9kMSvTngECWIMTFWAu6eL1X4iE5tOBVDOxpD9TyElDg2vHFoUJfarKGSxMTup6yl21tCp06yJt099N+cskTV9FipDXpYwYRAbEIf7UzG+MugejI5jsxzr67fvD7rZYmJS/gcqlQie2O95ig00uWF9Z70Bma7aEO1WqVa4gZRbwYSwcdDycg2HwLpKoNoclcnwhiF0zLBgm/Y6QxdfELH6+SSwMos2c0FIA0eZSBdna1M161kjUb5CJn+Y4sWP3eDFKWYTXmQZyH7ZvJ2NW2/eUoL1H2PG9Cc9cbTfUPgUfiIyPZKTVS0TBHbREdCKARQp+PxbJcEIeC92ioxCVKrnzK8vTv+TPFNF+aXUybvuXI7thZ/b/J9FsjwD8tSFnrMOJwOxjOSk881oXes2sO0jAlLyfZ5oVU70E3nkpPP3/0rpAW1UEnd/nE/h9/4/rqSULaQvy4meYGSOZL161fMV/AYASPXYCMNehyN5Jb/gHscL+xRDXkVj9fMF4jPTrdYYKFWzpEASlT+oD9s7/my8jte/Xqts+B8Tgr30WfS9wk3qUOTTV+3rn29ObY9d+bvamuPNa9vf+ukh0exZxpyWmAnvR7veaWxBQBlXdjNoNvE5au8v8NZi+uUklx05RfKCRcIp9yhhJ+Mp6bCr0o4twkkswR3DSyL3rHjQnssCFjtkbMw2EswKlBoFFKJRiORclHy/hV5IFYi5jRMmQ+uZMZY63sDmI9gnCJKTLyFxrEHhIcxp47j2kFfLYa4QM3+rTKbbHjpFV3t70eYo7DFCdsAICfgmUhEbzBFTASkJMzCvLJsCsGO2UoE3oC4FbOASMWME/e/3BR9p2nZvNLH9NXEn47k0ieoM4jutLf+/W+X+d3w3Ca/gFp1MHozkW8BBAhZ2lYRKp2bNV1fPrcG//Y3rU2RXVFbESatUeo2ene0l3K9aDcfg/FDG3Kg0ft3gJcVXk3j2BtEXWZ1UsLtXqTWPNMA9avFCCS3iXs8BJDtGW8CBJDtdSWAAFr2FYkzAKtdLqchtNOyIZJJ6JDLTpOGkY8nOiibOIG6fieZDSc/i9ttc8iwYSyhZzI8lL4J3cu06HspVt5bztxD3a3Em/t1rAI95w0Tf+tdhd/uIQKbWd6OT6D2PNwyQpJ3cBLt7aOfxdoAPyvcLyK0aOdbhx641dG+M0NA/aBmsNgjxOCVp6dOgN1FELPGhxI+YrlWkA2cWxut+HdtEVsvIpaPeu2/ur61r3JadIv8l+bwZIskbBmr5GiKRo0wnsqL7ifdDv6YSrpfJH/KQDTqlKOsEhlbskjGy1nqv0jXkvNqbZ+uoO9BYDfr7lgZETvBWVVuropst7c2E+Sa8zGHRk5onv0lqhDtL7vm65fiZH8uppQ/nr0y+DkZgSJ1ZjqaNTHOR77fFDGG6SK0l0svDrwqiQCdUey3q2pKYhssh4iBj0A8rv4rPRwBjKp/zOkxVHXSjh8AJLjO9+6f3HJPIut9B48ykdZWxM4zClTZKjGsGFBoJIt2zs7Rs9BfbJ84Q7fwVw7DX23aEhK0YG2QFyYiGrUDvUTT9vTiqakEKhqPqSVLailEz/OoNWVbt+BpUvzdmv6zptfYLsXeyTRczZyCyY8WGN+v+F3oV7vs+1+QBanxGcIgB9XBPM7VCNgytoDquDXc40xCZUHCjNT4Bcgv3y+r9RP+vmKKk+1cmHVlIQ08AcqpUyC8S2lr/dBNaUk4Xk/MYehjKVYC3MCtBr9jN2Z+PwHfhX+Tplmylnn+Z6yzFmF38y627l2sB55fRWxay700B+PWvXMucV9OV4s4sT+fX8vULCmzWsFET5HOwYvHh6mocjRcPHaY0ATs65Oec+H45g2bL3yafJPLUeHppNeNvLF4v1BNLHtGWnHsNvyXjb93/8tW+xxe+7JdOje3Uzbv5aLDPuHsf9f+1vglfltsWkkdITwjN9hsDAnLCmvsFa2VW+iT+/CdGm134m7mR8E54dEVUd3/E2DpirxUwQYJJ4HDXQ2AnWKVoSXGWIyYAUm3vVXCE7UdO6CExddFsHjU8/D0HrSVJFrRIuJG4LLXhaR6leJSVU11TVWNoeaKaM/tZJuI44FjCf1/i2WYzoRe2TihiL3z3/f9AjG2SYuProiOp6AJKxb0vwfve5/pLpYYpdQdvMHwWSX2TT/o5RlGofDzkyH/dCYp5ciExnfjFvPB7z57sYM5PD8GyRPbgwnDOrF+Ad82x+rX9CUKr4AV/PiJqPfb/YPeHJfy18y/Hxmiu5d/RHWbTrrB2F8dWvrnYDAeD3ViBlYpjvW6MyThU5T5pcGpqfiLJ4wTk6/K8vMUSsZHSzWlYRnReEPIzVNlxnXJvFwz8Ek4I3quCMLIMUGK56IzCT6Ak7lfMCw4Ez+5s+ETIVStAdK6gg8w/5/WDNMFjWoGvC6DdUvq1MgtcnuvvsL9t12AfnR19IvK9fvqEyha7+0NevTw8oGgamp10MDyYT26Ybs3RZtQv2995Yvo1Vm8rGxj5rprkYq/eK5PMZ/auqHzPwiscH2y+k1xc/YJ4qakPEQVQrG8lBMYSC5DVAmtYoKs7WNUWzI2gNNHGWL1CYjqH/8AugYTIel92B/KM5Pav+CcPz1A/K6q0RDIlEApCnCNahVi9de7YOm2G4hI3z3CtnXkCK1ep52hIbgIre4DjTty4kRnxwQvJ0eIER6MdIykp5mIZoj797vutPSRoUKAmQW839zuvfCdczaPHxin7e7dcr1vOvps1ZMnWpxxRISUVNNMBhOtqARRXl+635felS1NHX/gToelTwPFMbcLxflRSRCxFxVsqF3yONVp0Eg4pQ7odXfVi0ZNqGSqKtLkaRrVi+oPy30QW43EBpbmoBCtC0Z0547IwjuTPLAmhcSs+kBzgEw+k6uZlJYTIJasC9gurLCD9Z45aaSyWWTCq2tW/s7ewfqqHWQal84VcYXhJOFHbjqXVuW3mB0YumYRU/XnsbL6VYR2yRaBSyPMIeaKGL17d1Q2ev26DTBb/0ziwR9+VWYKqSs3Vni7LMdA8NVXWzO2XroYYdjBmOAhdM7YxDtxflgrCtUurEppZ66kbVIfIzFeoKJBoAlhegOdnAXM67Lr6xCRFpSW+l4BK2CN+LOyeLVbGFYAMV4JetNS3ylhpenjxW4FLKr+LIaVQDTa5cZ1VlHdTi6BGfCLSeDurGMVBViYcsq1gSj4tRBFowauUeRMS+aUB1AHmqr3Uii6g3CYYvCbSmoytgGPfrJRNfRt2bpl6wyG5davBQURqBFQevk7VWI5WiOy6G7DJ9JEyxNABttzdHUv9Vm1JtoPCnulvi3bHHd02GxHCtntas/Y72ZTAFJN5uo+gNRSjPTn2Ak0tKTnE91gw2ujRVfzv4CptWF/IH1+tgcacrKLaxAgndRvQqDlTUvMBDZ0lsif+OcnjQQA0uL/k7glfqnWjdC10Oo4lV51saGF7wVaF60FNgKXuuLg/Ocv+UDW/TxEuzhi+cR19k8fCp/VnX5DNTqelzmqupHezRK8F3gI34Excyx3fSKHc5fIo6dqv/wv8x6PuNjpPcJ3frkrCHJppNe/cL3lX16TVgrDy2oNtfccX7/6qIWXBd5egcv237b7Bz09eDILOjgqfHbI9Bu0nlGG4F7VJSUIc5SJVIGq//+j3W2bB5zj+59AkvQ2e+zvM+Vv0sbMIo/kWOOWz03XVAroAYRANINfJEeACtFLNpZ+vSV/OL7Jo20/2VvkU+2zZ21sHl2+mwesY2VBQ4qYLE8Z2UHPi127J+MSRN7k/W0eTfHD+Vu+Lt0o0YegBJxIgx8NQlZxvgrVtabPW4yxyR5FmRtJXN5uEPgLYU7QTYGmotqgd3fezDX+pr6zxtPDzoAZdg/PGudPh2TNjOrRNM2wpsus7w1Rqsw3KbwA7r8KGolQytmiYsSwyKbAKzRaIsXMIcaLx8NqCBFAhzEhTMTyG3zs1gwc8w+PPC88PE8uZe1LKv13++3sFVsTn6/+N6lkH1MmD8/LC59yEIVDZQ+WMAJwJDFPTMIFMEoGgbgY1/KqrRFWyap5Y7NL3E4PnA7qqRETXmWUJyLEjHtNlyozMR/rymzjV1p4JgiBgiH9D+KK/rCMUXpvlFq8NGhhVqHO4z8+rRu8UIrXQtWQtxSyxi2iGsItJbM8PFh+hVKcAi/1LfTUkj8AIopOfDXYUqiaFl4WXi0HSDocqR3aCO66lNpLFErcSjEsGhHBCrFovANZqVwIgXJxLwvHRSIlrDhH8ijd+UEKrCxPMtysUBEV8sBJ2UqJ+C263TSaXQr0+0ZaThzpen4mb1v6LpacxDZhT0oWb5WV10Yv9yoMiqxWA5NQoqT9WVDgHJB5zJNoccW+UDKSPc8wPjDOeDKSIauVgqygLS2/SASPMpC8YuFHclEXPLcwrxgBm0T5RdaSbez//DpaCN2Elg7SzF6ftpQtQGqv6Tmck9VYZ4zhTtz/48FD+rlr/Wlybjan153PRE42V57Wf+0c/eGDP+5PcGPg0e8dRB+YquENWJcnEjJ+CLEO8DQgIpW1b/rD2OlTMBGnvfZaspjsqWPssixG3gzWwq9JIpKhdJog0vOGZ4HAOaOXBCh11dRd76K1Os28s0XElQyza+zTMQrfCRnUQ4eoDDeA897jjfvMAYb9yxy6iBN+eMj4o3mOBWAMB6YS9/zfDRCbA6FEF+v1U71Lp1hi9/+7oORFBhlUx/KKRNpaqOxZ5a0yqFZbJMo7pgoyRPLKr3STNXVch5+W629B35PL4nAa+gS/kSoWm4EAgJBjzdV7kyUkCTj2+xkxv+m/+PmFJm+sXlL10OvTuS220CVtoVtGfvN6pCRuOyoW0n5H2/SwhOv08vTpf4Kx+NRlp9K/8sX0HAy5B7MCDfb9SmpLs8m+5FXg2OWk40gb2OgV39cjx95Tm5DujjXvkBz2zQmwBEUZGnQa+QmsKAP4fpWwmKbYFpwe4KjIcZ/A3dUv9fCdeuFJ0TdqtgYz8XT0h2Xp9MyL6srIgxKvafe+lQRUxGsD4ABtfEWA5Nt707wkByMr1Rcz8+pC9k3nHp2YOMqdvi9kBmcQCthENlF2nSOyfR2pkPZ1sVC4PFpv1eC1ToridOHRRe+H/SEEYvYxHdl/WDM9OggPVMDKEe1YNLLVUAOfGzFon3OGETyW8sTL28SpYTbqwALQCChoaxCk/0Ci91z4HdQehY9W7cZq6jKqpUATUsPKrlkK2zYPf2ORO3sw3/0BUvXQ2Xe6gVU4cd7A2wghay3u8NkJvF6oQ2rc46nhddJ7LD6k+ri4bvFH1SHdS1LBFzgHgTHXM1cq7KeSlv7Pamb08XjfGEyN8W9BAUqNkqDFwV4hlX+W0QPFaAkq/NY498/GNkycb/xx+VthkKmWOZXxkCzgzZiJRugdOYHTldPzTw/MAWO9AX+bs8x/ZzklvxWPPW+MWD12MtFXQHPSZkI9gW/iw9rkZAiBAkYJum6wtCeFwf+BjD/NI9ynMjRQ0ZW9X9UUbvj6wYOvNxTWfLX3ShGkYVDvE3in4zB1rKqzVL/OGlfJ6Ed5dSLcNWmLtnvbbZOYegD0ngxTh2nX7b2vq1lkVuvDE3fX+n/lMzz1OBTs0VxChSwlzR4wasMdhzPGz0O05dyDWoDQ1VaMhyYBt6s3PbYI936enUJL1njsfF6+ySVCydmRXyJcAtR230+uONenOKfk6kdzA9dOvz932QOfRIqBgoPbE30eJBP/HSLMEje3qj6Rfan0Hm/fRCw18OzJcXf2vqQGY+y3bO2J5Aikxu5Oya27l5j4n5VltSkPXJ3ebSJ4qa4HVZtOKN/zTTFx4OYgAJRyUUDKJ+Jb/DtYA7/D7/I+pQSIKOWAXWzFr/Yke2BX+xQX++RCHmTP1XhrcVsA+TR+jBBzzp6IICU+RHP4VJeePaQ9d+C5ddme79X69ENWfQ+99XDabAWNZAdKLc3xFLPjoztqPjgDaukmWZS7kBYw1n/+XtopPxiF+vubQ9eGRsfQDv4xPgrlH3q+yCt49O+/D4gwIhoNu1O/Y/36nByQameP55CF42xOoPUWOq5MjUUzxn9Fw4jJGS8UzMXXDnqQPIjjTZtmZSyfPMocYv6VnaCWv/aynitPfHtHBLTvZvmAXLvgD1G17ZfMyvhCrk1N4yV8xoIfR7AaA7+8kZqcpCNkVlD6i8INkpQucu7q8op/OqAMxYoIyf9fhjf5wSmU3+Ef1rKTGY8Gt1jywVdxpi+OJYfm+RGy4HSWY/HyDQGLIcPw9xhj2ULgrpnDGiKNsHzg7Lcp5qj9iM+8qfs2Pig9+Ub8qD/25fp9oSXZEiIJJ/S5dUixVQnRiuk/bk4vIX+Pdn5qVsZi5vfKiKItcb+FBvEi/pW1/entq2nwnLrgAnPYSuVJc8PnSyB1z8AmVz1a9WwVur6gdQW1wdub0nB/klz8WrHBH0ki8kKyiPTx6yzF5Mn7wGXnbLc+a2Xrdk6fOlYHGvex+w7yfg/aLMiWHD+eyRLmHBC2ChGhFbxPfCJJyNcITvSUJS5bReRz+C+4c/ocYtpfTZrFJ03publL8f9Ex7Tr8o6d4LJLXgVVdQcm/rQGp6UnlEQPydI9sig2B9j5rBGF02IgGRq7VXCiRrcjTU/UL7ayiRYDnbXrDSS9ydjEnQ2wxG5KH6scVqVqp3lNMbGJzftQDetbexVWoRJW2u6TzTqdVjfjFLrfjIKAgRGDOAv6xL2OQmmHTOCmedASJ3B3+dLlt16hpmVff1JTeqa58UUR1X/A7zPlCLYT8wzTid2XEsU3jBQsjiK8o2GOY2jvCFGLC0b4Bs0pTO5RyUDpvrIdcrqRtV40DCpEkUyzGSZUIRSCLkRN5SyqCVWFDmLyyzSjPJucZE/BjkLZSf41imXIewNPRgfNwcIYaFPS1Uupn5Fn1wXM0XmjPEjU8L0B2Wp2CrG+Zk441dcDLVWckN7U1+eBZ5ODgHcK10hytJKO1kYd1nTDI2dga2027dSrV+hHrKfwytVv3A9vkj5i3+uYSD18rPWq905yPBiX3AIs8oi6TVfgQzkFNXJSDTUCTSPEx6RqqDhZk0A7QXRmmu2qsDMUAeW9WlxAVMNPxz1bty67BgfgtNgZktyNcVKGvhIVd+aMndmJwxzILjJXVVJc6F9LXO5GyQxgdv93f25y51xRl8+PmeX+zfjf9Y17m/pQvXvl8ZjLvc3+l9v+1uWa+OV/93m8Tl7Vv+9c7yfdXacWRrvdbvtDt/t9mdDqFkhj0q33TIW23neh29tpzPPwANKwvq1oNXnUKVnWdThIlRmpLOz3kKfwu0v3OiJZ5OOJFijbZEv6cItP10xwc306s7n60K2QZbuRTmZrl16EcDNCn5IjjCLNqRtL1JfGLJkgVMVnxr0LhNKYZZs9I33hQZ1/i6QiKdsMekCc1LRAccEdiaBF9g2OF7is99GEFxoaInJAm2LtERajvMfLn5jXarPuZEudYyMdkLau0+CdCHNVeJvVguiKhrrjgmgKP1M7ZmuHxalyCbtAwJG9QOSk5V9rKWAUIiiyJIL/Ytyl/j2ZU5sEnnEjoNNRgCLuqIRFVxHynwFt/8ot3Q20WipU72hPs++nqyioUUlRNiJS4cIqsylHL/eg6UybWtLGm/coWoR7QIsC16Aae3/wMtxByPSQIQDSoNEK0dXp1uOdTj3Rxg0zKWLEBb5Z8OTJtiUYpIScdS86DDke2cjJKgsX7kenB98Zqct7NKRUX9bC4RwUzegQo5HMkrTM8rxj+wJGnUEzorogI9DAEiU8NaKVFBHLXIH/HCkyeDNIOrOUnaFoIUZQe+hEM8AkjRkHlqBmPrKr2WIQjZnwLpION53sZVGWDb4cJaAUzI5LTM4IhLFVQBN3IRnDsgpQVMecreHeQLZN9Pxapryu0V7mVUQ2+mUOP/PzozxeHSxTobe4RLnLZB3zAqTMqVEKWI2jwMWQqBbuauIaALFLotRrWRnmRCFxlbkMeapRkWXN9AhvI6FlNBIyApdETpcvf/Exevc0i7I5qDe/wymOcyO9k3oD+/8W6goBkFYWoqktxLdJI3JMQwc0dxarT0ui69LqLM9beCljoJrjIl1XgKuDN0I62XqGYD2hmdPIxnP19lm0Gl5X0d6cC4Y+bZu5ZPsCgp40rfCIpLk7hFhJLIq1w72zcg9/NLVf77w8aiAp97nQP3qNZQomI1nGGPTJuCkjr7tW5crlKrhjxpcVcX7HM4Gv0KojhBY9gGL/anWmDqLWRX/2FRbIK67utSM70vtePctmlg1l3d8mNBxtts9TuuIjKx9SaB3PypJbRSUULQc8NbMYntjuAJbADC1Gt+so8YssrjC2EsyIUi+TwztZVBzR60HDGimCot2JltJNErRaTVXSy51pgRWxiE6ySzSWhRyhWpki59GrY/WYAIt0PgHxlTuWSXKYCudlV0iLsFBKW95v9/bsw4MsDrVKAwEuJZhlQXGRsaUFElGsj2c1Hok+7glGF6SNrn6rUQd3CKV2kIg7q76tfp5l8Ta+MjNLQB+BID59s6qwZAEvMDtFtEgQGeH1jvCd1GxK7e4CoZXUjog7RSA3Zh9EE3v47hRa9CPh61Pa8WcOam0scz/g7KH4ykjoHSi+w6IE2M1YSVq7mm+9oGUb08wH6WoTCY4230Ug237E2HnOG33MutzLIXsvrIsUQJNL9B7qKf+OXjpsxuCwhUhhNBN2NsJM2e7eigDB7hEKL9b9DzQBwFuSb9vaiB/3NKjit9YTqL0ITjKF+IJhsh/wC/c0RT0Cx6dU1/HC4b29IZlC7+kvtODvA2fOMefKOEUpBsb3BVLVRpqvSR7tsYPxp06HJl6Q2sdxmBk54qjS5bqeg2r0MSJmMlnIhXRWslXGIcagn9p2bSwKaerBvnRXmaWcDyrqyOR8G+R0tlrT4dA9wgbrWMB1ZIOjcFt4AyI9sAjRiNkhOFLEa+gQz5pmyGEXCRKuOEbcD/SuGAH7YnYsC1jAagqLBQrcShumWplL8oghYyMDjfNpWver3RkKw9XAlkk4RJnEozq0Vd9TAMKlSCAZLSBawfnC7UT7EsQH/GLRZbalNB7MyvrI9sx443GIHT70x71MUrzYNQBl4Ss7JDGMbGvRYuBazFqDFXu0DWoSeSHiYGBgxNkWl0ZAEqyZPq3QtrlTjH2qPGtSES+d5BO/jyHFfCiEYUvNbLM2iAt4h8hPG/ITnwA7Yx5YcyaeATEEA0bD1JXgyOFxhmyyhYB4kO2j7SKjE47c6JAtpsYEnY38MDPTEgkTTzOvaWESGN4+OJCegbwbf5KY7yKL7DlhLR302DMqybGx2mmz28iTrqkj5kEsRhBbfk5QVPvCs+xhB5fgMT4mYbSWUn+c9TrieoQuPq6ROWYelQzkMdc48GOzwIx2bGVYV49OwpnHqOkIdP7CY/xbHCAr63EZ2Dlabbl3qeI354aGbA9gujdQwqi3gCHRnuJOvd4SGlj2ltEV1FvHQvqTN9A2FAUYUQMGVqVXjJ2R4fUPvQXs+JMpXllYbwm9LL1lzGvtrWPZ4F/XwLgPD/DqMeLwZdCB8nvDCldP3rVvSu0UkNroRR8aHbGSdDpLwtXaXsONI30WWSL/I3yqeYwGxuuA1Itj3yus15ZFlDpGu08So/1Xk0KHyVXHiMOXQQdKGata4+oZfzHu2jflvJ8/ZI5+0YdmKTpPVdJ1WNKLrfbv2htpsZxFZEk5/9MaPtW8VI6mFBlfCkGZvW8qrC5bLwsXSb1Ew+6T6DLzRlKs5QE3Dea6AYel+kdWqjTUmlr66NKtrUevzlwnxro0W+TLoqxW9fqD7bzftrtub4onP5yOh7NzQz7Vr29u7+4fHp+eXwAQghEUwwmSohnW9s/3BFGSFVXTDdOyHdfzgzCKkzTLi7Kqm7brh3Gal3XbD2NGB+7H8/UGQAhGUAy3cyRFMyzHC6IkK6qmG6ZlO67nB2EUJ6kBo7bKKLRdP4zTvKzbbn84ns6XB0T4EEZEMZwgKZqx35TwgigZb8qomm6YBoXKjuv5QRjFid2iYl6UVd20naGfkyNEU7ZSWx9ziXTKAJMUg2aaBtp4cbN5eDkACMEIdohuIUiKZliOx8fXpvHbdtft+6Pjk+F0PJz91/RrXV5d39ze3T88Pj2/ACAEIyiGEyRFMyzHC6IkK6qmG6ZlO67nB2EUJ2mWF2VVN23XD+M0L+u2H+d1P56vNwBCMIJiOEFSNMNyvCBKsqJqumFatuN6fhBGcZJmeVFWddN2/TBO87Juu/3heDpfrjcAERTDCZKiGZbjBVGSFVXTDdOyHdfzgzCKkzTLi7Kqm7brhxGiqUnZSm19zOV7Y69Nl4fb08sfX769/fh9trwSjCazxWqzO5wut8fri5V/V4DTM0QMO+99IGDfdvx/is4UMZARkoIXQS3E1zXm4uZLp7RKKGw6UCRwiJCB5nomSw7/0QRHZ8lgdgoKpw0wa41JYWik0M7kt8xPHTg5wTSfa7PLh0boptLfSwnAE9N3eahy3JU+ZGAaAQD8Xn7xlR2V2+Ibv1Nx/hgKNSJ2ETswKBf3HwDxuX/IA5XPncnPcsSXiQGDmEwBzghgIAAwADkLNetKkpBSarQ7nLfyX7okimaZMxtHgCIFg4e4D+np9sRwlP0b7Se1j9k0iuNYNGbqGW7/WPYLo2L7Ghw2oWI4b07ekHynYJc9aowkCCcIxiejorupaYdugftq3WZUBV+mz6LXLLSOTkn6ZkV63d1fWxaYPy7bczDAqEwqpq+Z4JGZkkFY2eAsUupY7nIJI4uyO1PKSot18/Yygh0NR6RogpNq1NXH+sy89xGH5X1mf3xYQsoBQ/ll3gRVOmpQ+ZCOy8aU8OSKeDkrMEYfYU+DTafiDj13TJ4LEDB4t8wEXyu4UHNM3gEZBSmJbs08G7OAvGVDobftNBlw+/alTHTKMsXjFJeXSB2QHnA72QG2JqicWxEImxc5E6RC/GBwIMT6hgYAAoD/lD0UOWvWcRtAHBDichZ+f85XOi5T08jVINAXeKJJyBpf0VnFKMPPAOxgeJxQICNbBIe6C3PBsBbEKHyiaoBaH0TEsGTLZYIDtuxHafxXFGbJW6lmrBHHh/z2fg3Q+8J5b+QP7WvenKnNW+305PoJrEAtMv+gM5NnGIeZgqFXLEwkDTdxlWnwxeTn8DWP1dpSwbtELBkka47ZvGNLdJA6NRLZ7dozCM8QgTeC7u+OFL7bhNOnZmDK1hsKfchS5WZZk3sSexguS26r77Ut2l4voAIKh5ognT+dB4mvwHGANBwzi9ubVZY13onpTqZ7TMnlhmJF/IUhEqOzXIOK50n+Rny6bZKCjzqxKWqpXEZBIbLZyL49vaKBsqSS1r5B7WoFdaN9daYvu+YyNNlAWbzztGWn5pQsT2bUcs9zmRFWV/hmO0PbTFYxNo8E3ermN/rcouqE8E1/u7qesUeKRaIYNfKcn77eSLlgaGHvF1PtZfpT3raXFfDQm3NCSsz9dpulAEOh3889kj2sxqaU8tPqyopTYPJ08j77XYZw80hhbW3AMZeCySazRftK5S8gOjMQckz9gWmVS0kWuOOVhirSbRkQNdOHZTY5h1kyVDm+2sHDJkyj1PKAzQ+1H0ocrbNuGqutIxVsH/OwkcXeYVu/HRK80Jo24EH0wFFcCIuJd7Ofr7s+0B9wyZH08lVHHl9/zb6G6uqj7azg5xA/TkcjhTPKBvbgGIFPyqKG5G8jbGhnDjBCAxo1an/Zp+HkwVVrbe+b1cOkS1IeHemuYPzNqPwJ8qFpXXPqJg4U65uJN1I1eYyT5MEJIvXUS5cZVsQYWCNF6x95xTCdXhzDbrOsP+uED6XXauv3XUHeqEelYxulZX1YH1KXnzeWiQrd+mXZj1K7o4Clb6R1uDc40jQyxCxvvuI2Ad5Wkxd5UuW8c4EHqTnsdh8DcUSRzDIKTDrmEaNMJVJoAA+zmWx2R5dbNrWh0tN3Spt8asShZcsEaTJrGbQSK6x2KtHM16Sxngsu4+32Wn1gVkuJWpdUH96pmXiONad+f2BRn1wFX9WXvx1hGWPIBewncvnZ9OsrzZK5X6dh+IBJjwTco+ruoppmrVrtZtKsteavtuFB2q/Lp2iS96/1ygMPvbe1a9sUXZUN2SPo44N+Lv6I7UbRXOpN+2o2D0y6bb6RdtBmkM5XbtYZtl4wIQrkZmHT9UxrnaNdKLAdhHb3KIgmF/TiG9J1FfW+27arfdDLyIFWezvwarLGj20KZikNk6fNDmADBJucRW7cxvpHEjM1hhBdqz0XgtaGhJuhGAPvYL+JkfY6seaiAdPXyUlF5OSi5TNDLfcfi815h9HtJ56PV8PrbI1+j1oZt87I7uRrMDnObovlQaAJ4kCZGC1qXtLxWQxSDABGRvPaQ/qtsevNTLgM1M9Gbc4UINLMs9/dC4ZOQZtap7GW6NqHJ9UcHn6kBc9YHitkiKzM7+9INd3Myme5iYVa29fQva0epJMjkhquU7bWkRKsmxSw8bCE4fwsXIplcbB126kw7C/WzdgGtmVrJohidqQMX1U11HGV4zM66ZWpUXSxJ88il8tpgoD56uKGRBhFqOc7hGJy4zidB18Kz2N0hXAZBu2NKyVpEionLbhaDr0T9dozTLwUUMADdXk+0rm9s6KVO4/uk3yNUcN0spZ5/15/er1FHTBs1RJb7AfrGTZekXT0yg7+ZMjs/euXZTFJcGi/t6s73r+GjOxBb36y4evofVS3jV9n/fRFA2CTNkA+H12wNoz1QZ/PXq23jcEQRbHfbAiWdBmK1BDi+63oB9A2tK6Z6rD1bdjt0DGuvJCVURjjTZxmnghXFGxZA2/MoGW3vavo6USPfnto70H4FCmYp/Mb/MCYVbC4w8HizwSdtjdTJwzsSE+dhBGRfKaIkS+LekSJFMyAhPSz6asZ4S4dkh267BsC1laofcATx4JZQ2F6+ZGhZnHgbX0OOXitmsVr6yDFYcuAiB4sRl+YMaHDzPvQuTFW/ryS3XGHOWxUNtvbJRfzQOVjMzjzOYmmbhdZcdMjddz+LDz9wwVsH3yPKrtNpbLGGy5I62AwTtUk1TISZRIXcgdHp9QWeGbDyOXV5A4LNso8DkwM5HRo0y2LywXSraLbL/NYS7k0U2+Axseq2xjtDKg5wofjE3HcoRvnM2wDem0VsiVHfezVo6O+Px+LpgldwF4Hejzk8p3oz7PDw5EC5sSaYJJEURpKjRpUkN8afnfbQm4Jt+UDOgU0qkSokRQ1VxAyL7vxfL5in+Qjkk1T8kuN8rML5Me68rr1OcwGB3T6g0r0W45nDvDBGX5wpB42msPxA4XUD2C/NVL/XCw/PJKTM7nvO49VPqAZFCvJmFq3j+WBOaDmbwK8pwVqwzpFOqZDSOizgsFYdw1Z1uOwvDdSOdJdK5LMOymn5GSmwfKyMShcI1v9PIA2K5ftWrJOt5vtxZc/m8rmt7S9eQ5V7utb/vc1V0ZKdih+jRQJPcFBiuov4lErvsFik6HDQWS0rBP1amulSPsalhW0tNHw2/fT8aku8Eur7h7ZOWD43gBkMugYOopYLPTgNeqTylIbJDEZZM7UX2bIfEjn0sAfD00DS7N5d31kE1ELMn1W4Ailmvvs+3FKuJb9/jRF4e8XJtKqYIcnqBwuGFs+Be2tg8/mDiC5zUaur15xvqKIyny66zu1luErHvHX/nLRzltbUDQzRqkIMx8tXn+5fcL2Fshtzd83cPX/ZOR/CwAA) format("woff")}.fa,.fas{font-family:'Font Awesome 5 Free';font-weight:900}</style><style>/*!* Bootstrap v3.3.7(http://getbootstrap.com) * Copyright 2011-2016 Twitter,Inc. * Licensed under MIT(https://github.com/twbs/bootstrap/blob/master/LICENSE) */ /*!normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}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:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}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}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*!Source:https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ @media print{*,*:before,*:after{background:transparent!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:"(" attr(href) ")"}abbr[title]:after{content:"(" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover,a.text-primary:focus{color:#286090}.text-success{color:#3c763d}a.text-success:hover,a.text-success:focus{color:#2b542c}.text-info{color:#31708f}a.text-info:hover,a.text-info:focus{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover,a.text-warning:focus{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover,a.text-danger:focus{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover,a.bg-primary:focus{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media(min-width:768px){.container{width:750px}}@media(min-width:992px){.container{width:970px}}@media(min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media(min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media(min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media(min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:34px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media(min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media(min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media(min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus,.btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#fff;background-color:#398439;border-color:#255625}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media(min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media(min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media(min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media(min-width:768px){.navbar{border-radius:4px}}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media(max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media(min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media(min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media(min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media(min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(max-width:767px){.visible-xs-block{display:block!important}}@media(max-width:767px){.visible-xs-inline{display:inline!important}}@media(max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media(min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media(min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media(min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media(min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media(min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media(min-width:1200px){.visible-lg-block{display:block!important}}@media(min-width:1200px){.visible-lg-inline{display:inline!important}}@media(min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media(max-width:767px){.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}</style><style>/* GLOBAL */
|
||
html,
|
||
body {
|
||
overflow-x: hidden;
|
||
background: #f0f0f0;
|
||
}
|
||
h1 {
|
||
font-weight: bold;
|
||
letter-spacing: -3px;
|
||
}
|
||
h3 {
|
||
font-size: 21px;
|
||
letter-spacing: -1px;
|
||
}
|
||
.page-header {
|
||
position: relative;
|
||
margin: 25px 0 20px;
|
||
border-bottom: 1px solid rgba(0, 0, 0, 0.15);
|
||
}
|
||
.page-header h1 {
|
||
margin: 0;
|
||
}
|
||
.pagination {
|
||
margin: 5px 0;
|
||
}
|
||
.clickable,
|
||
.expandable>td {
|
||
cursor: pointer;
|
||
}
|
||
.spinner {
|
||
color: #999;
|
||
left: 50%;
|
||
top: 50%;
|
||
position: absolute;
|
||
}
|
||
.powered {
|
||
bottom: 170px;
|
||
color: #9E9E9E;
|
||
font-size: smaller;
|
||
position: absolute;
|
||
right: 20px;
|
||
transform-origin: 100% 0;
|
||
transform: rotate(-90deg);
|
||
}
|
||
.powered a {
|
||
color: #636363;
|
||
}
|
||
.dropdown-header {
|
||
color: #007bc3;
|
||
padding: 3px 25px;
|
||
text-transform: uppercase;
|
||
}
|
||
.gheader {
|
||
letter-spacing: -1px;
|
||
text-transform: uppercase;
|
||
}
|
||
h5.gheader {
|
||
letter-spacing: 0;
|
||
}
|
||
.panel-header h4.gheader {
|
||
margin-top: 20px;
|
||
}
|
||
.panel-header .gheader small {
|
||
font-size: 69%;
|
||
}
|
||
|
||
/* NAVIGATION */
|
||
nav {
|
||
-webkit-transition: left .7s;
|
||
background: #1C1C1C;
|
||
border-right: 3px solid #5bc0de;
|
||
height: 100%;
|
||
left: -236px;
|
||
position: fixed;
|
||
top: 0;
|
||
transition: left .7s;
|
||
width: 300px;
|
||
z-index: 2;
|
||
overflow: hidden;
|
||
}
|
||
nav .nav-list {
|
||
height: 100%;
|
||
overflow-y: auto;
|
||
width: 350px;
|
||
}
|
||
nav header {
|
||
margin: 40px 20px 30px;
|
||
}
|
||
nav header a {
|
||
font-size: 2.7em;
|
||
font-weight: 300;
|
||
text-transform: uppercase;
|
||
color: rgba(240,240,240,.7);
|
||
}
|
||
nav header a:hover {
|
||
color: #eee;
|
||
}
|
||
nav.active {
|
||
display: block !important;
|
||
left: 0;
|
||
}
|
||
nav:hover ~ #content {
|
||
opacity: .3;
|
||
}
|
||
nav.active .nav-bars,
|
||
nav.active .nav-gears,
|
||
nav.active .nav-ws-status {
|
||
opacity: 0;
|
||
}
|
||
nav .nav-bars,
|
||
nav .nav-gears,
|
||
nav .nav-ws-status {
|
||
-webkit-transition: opacity .7s;
|
||
color: #9E9E9E;
|
||
cursor: pointer;
|
||
float: right;
|
||
font-size: 36px;
|
||
height: 32px;
|
||
left: 13px;
|
||
line-height: 32px;
|
||
position: fixed;
|
||
text-align: center;
|
||
top: 30px;
|
||
transition: opacity .7s;
|
||
width: 32px;
|
||
}
|
||
nav .nav-gears {
|
||
top: 100px;
|
||
opacity: 0.6;
|
||
}
|
||
nav .nav-ws-status,
|
||
.nav-ws-status.mini {
|
||
color: #6A6A6A;
|
||
cursor: help;
|
||
display: none;
|
||
font-size: 12px;
|
||
}
|
||
nav .nav-ws-status {
|
||
left: 25px;
|
||
top: 125px;
|
||
}
|
||
.nav-ws-status.mini {
|
||
top: 14px;
|
||
left: 50px;
|
||
position: absolute;
|
||
}
|
||
.nav-ws-status.connected {
|
||
color: #5DB56A;
|
||
}
|
||
nav li a {
|
||
border-left: 3px solid transparent;
|
||
color: rgba(200,200,200,.5);
|
||
display: block;
|
||
font-size: smaller;
|
||
max-width: 235px;
|
||
opacity: 0;
|
||
overflow: hidden;
|
||
padding: 9px 20px;
|
||
text-overflow: ellipsis;
|
||
text-transform: uppercase;
|
||
transition: opacity .7s;
|
||
white-space: nowrap;
|
||
}
|
||
nav.active li a {
|
||
max-width: 100%;
|
||
opacity: 1;
|
||
}
|
||
nav li a:hover,
|
||
nav li.active a {
|
||
background: rgba(0,0,0,.1);
|
||
border-color: #5BC0DE;
|
||
color: #eee;
|
||
}
|
||
nav ul {
|
||
padding-left: 0;
|
||
list-style: none;
|
||
}
|
||
/* Navigation -- Icon */
|
||
nav a,
|
||
nav a:hover {
|
||
text-decoration: none;
|
||
}
|
||
nav h3 {
|
||
color: #FFF !important;
|
||
font-size: medium;
|
||
font-weight: bold;
|
||
margin: 20px 25px 10px;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
/* CONTAINER */
|
||
@media screen and (max-width: 767px) {
|
||
.row-offcanvas {
|
||
-webkit-transition: all .25s ease-out;
|
||
-o-transition: all .25s ease-out;
|
||
position: relative;
|
||
transition: all .25s ease-out;
|
||
}
|
||
|
||
.row-offcanvas-right {
|
||
right: 0;
|
||
}
|
||
|
||
.row-offcanvas-left {
|
||
left: 0;
|
||
}
|
||
|
||
.row-offcanvas-right
|
||
.sidebar-offcanvas {
|
||
right: -50%;
|
||
}
|
||
|
||
.row-offcanvas-left
|
||
.sidebar-offcanvas {
|
||
left: -50%;
|
||
}
|
||
|
||
.row-offcanvas-right.active {
|
||
right: 50%;
|
||
}
|
||
|
||
.row-offcanvas-left.active {
|
||
left: 50%;
|
||
}
|
||
|
||
.sidebar-offcanvas {
|
||
position: absolute;
|
||
top: 0;
|
||
width: 50%;
|
||
};
|
||
}
|
||
@media (min-width: 768px) {
|
||
.container {
|
||
width: 750px;
|
||
};
|
||
}
|
||
@media (max-width: 480px) {
|
||
.wrap-general h5,
|
||
.wrap-panel h5 {
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
}
|
||
.wrap-general h5 {
|
||
width: 100%
|
||
}
|
||
.wrap-panel h5 {
|
||
width: 70%
|
||
}
|
||
}
|
||
.container-fluid {
|
||
margin-left: 75px;
|
||
}
|
||
@media (min-width: 1120px) {
|
||
.container {
|
||
width: 970px;
|
||
};
|
||
}
|
||
@media (min-width: 1320px) {
|
||
.container {
|
||
width: 1170px;
|
||
};
|
||
}
|
||
@media (max-width: 992px) {
|
||
.container-fluid {
|
||
margin-left: auto;
|
||
};
|
||
}
|
||
@media (max-width: 768px) {
|
||
.container-fluid {
|
||
padding-left: 5px;
|
||
padding-right: 5px;
|
||
}
|
||
.page-header {
|
||
padding: 0 10px;
|
||
}
|
||
}
|
||
|
||
/* PANEL STYLES */
|
||
.wrap-panel .panel-header {
|
||
position: relative;
|
||
}
|
||
div.wrap-panel > div {
|
||
background: #FFF;
|
||
margin-top: 10px;
|
||
padding: 0 10px;
|
||
border-top: 1px solid rgba(0, 0, 0, 0.15);
|
||
}
|
||
|
||
/* PANEL TABLES */
|
||
.wrap-panel table.table-borderless tbody tr td,
|
||
.wrap-panel table.table-borderless tbody tr th,
|
||
.wrap-panel table.table-borderless thead tr th {
|
||
border: none;
|
||
}
|
||
.wrap-panel table thead tr th {
|
||
text-align: right;
|
||
border-bottom-width: 1px;
|
||
}
|
||
.wrap-panel table .string,
|
||
.wrap-panel table .date {
|
||
text-align: left;
|
||
}
|
||
.wrap-panel table .percent {
|
||
color: #898989;
|
||
}
|
||
.wrap-panel table td,
|
||
.wrap-panel table th {
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
}
|
||
.wrap-panel table th.sortable {
|
||
cursor: pointer;
|
||
}
|
||
/* thead meta */
|
||
.wrap-panel table tbody.tbody-meta {
|
||
border-top: 1px solid #C7C7C7;
|
||
border-bottom: 1px solid #C7C7C7;
|
||
}
|
||
.wrap-panel table tbody.tbody-meta tr {
|
||
background-color: #F1F1F1;
|
||
color: #222;
|
||
}
|
||
.wrap-panel table tbody.tbody-meta small {
|
||
font-size: 65%;
|
||
}
|
||
/* thead data */
|
||
.wrap-panel table tbody.tbody-data tr td {
|
||
border-right: 1px solid #F1F1F1;
|
||
font-size: smaller;
|
||
}
|
||
.wrap-panel table tbody.tbody-data td:last-child {
|
||
border-right: none;
|
||
}
|
||
.wrap-panel table tbody.tbody-data td.row-idx {
|
||
color: #898989;
|
||
}
|
||
.wrap-panel table>tbody+tbody {
|
||
border-top-width: 1px;
|
||
}
|
||
.wrap-panel table tbody.tbody-data tr.shaded {
|
||
background-color: #F7F7F7;
|
||
}
|
||
.wrap-panel table tbody.tbody-data tr. {
|
||
background-color: #F7F7F7;
|
||
}
|
||
.wrap-panel table tbody.tbody-data tr.child td:nth-child(1),
|
||
.wrap-panel table tbody.tbody-data tr.child td:nth-child(2) {
|
||
border-right: none;
|
||
}
|
||
.wrap-panel table.table-hover>tbody>tr:hover {
|
||
background-color: #EEE;
|
||
}
|
||
|
||
/* GENERAL */
|
||
.wrap-general {
|
||
position: relative;
|
||
}
|
||
.report-title {
|
||
background: #FFF;
|
||
border-radius: 4px;
|
||
bottom: -10px;
|
||
color: #9E9E9E;
|
||
font-size: small;
|
||
padding: 0 10px;
|
||
position: absolute;
|
||
right: 0;
|
||
z-index: 1;
|
||
}
|
||
.panel-plot-wrap {
|
||
position: absolute;
|
||
right: 0;
|
||
top: 18px;
|
||
}
|
||
.col-title {
|
||
font-size: 85%;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
text-shadow: 1px 1px 0 #FFF;
|
||
white-space: nowrap;
|
||
width: 100%;
|
||
}
|
||
.grid-module {
|
||
background: #FFF;
|
||
color: rgb(36, 36, 36);
|
||
font-weight: normal;
|
||
margin-top: 5px;
|
||
padding: 7px;
|
||
}
|
||
.grid-module h3 {
|
||
font-size: 25px;
|
||
margin: 0;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
width: 100%;
|
||
}
|
||
.grid-module.black {
|
||
border-top: 4px solid #0F1214;
|
||
}
|
||
.grid-module.gray {
|
||
border-top: 4px solid #9E9E9E;
|
||
}
|
||
.grid-module.red {
|
||
border-top: 4px solid #FF303E;
|
||
}
|
||
.grid-module.blue{
|
||
border-top: 4px solid #00D4E1;
|
||
}
|
||
.grid-module.green {
|
||
border-top: 4px solid #5DB56A;
|
||
}
|
||
@media (max-width: 767px) {
|
||
.panel-plot-wrap {
|
||
top: 10px;
|
||
}
|
||
.powered {
|
||
bottom: 10px;
|
||
left: 25px;
|
||
transform: initial;
|
||
}
|
||
}
|
||
|
||
/* CHARTS */
|
||
.chart-wrap {
|
||
margin-bottom: 15px;
|
||
position: relative;
|
||
}
|
||
svg {
|
||
background-color: #fff;
|
||
display: block;
|
||
}
|
||
.axis path {
|
||
fill: transparent;
|
||
stroke: black;
|
||
shape-rendering: crispEdges;
|
||
stroke-width: 1;
|
||
}
|
||
.grid.y .tick line,
|
||
.grid.x .tick line {
|
||
shape-rendering: crispEdges;
|
||
stroke: #999;
|
||
stroke-dasharray: 3 3;
|
||
stroke-width: 1;
|
||
}
|
||
.axis.x .tick line,
|
||
.axis.y0 .tick line,
|
||
.axis.y1 .tick line,
|
||
.grid.y .tick:first-child line {
|
||
stroke: black;
|
||
stroke-width: 1;
|
||
shape-rendering: crispEdges;
|
||
}
|
||
.bars rect.bar {
|
||
shape-rendering: crispEdges;
|
||
}
|
||
.rects rect {
|
||
fill: transparent;
|
||
}
|
||
.area {
|
||
opacity: 0.2;
|
||
}
|
||
.points {
|
||
stroke: transparent;
|
||
}
|
||
line.indicator {
|
||
fill: transparent;
|
||
pointer-events: none;
|
||
shape-rendering: crispEdges;
|
||
stroke: #999;
|
||
stroke-width: 1;
|
||
}
|
||
.area0,
|
||
.bars.y0 .bar,
|
||
.points.y0,
|
||
rect.legend.y0 {
|
||
fill: #447FB3;
|
||
}
|
||
.area1,
|
||
.bars.y1 .bar,
|
||
.points.y1,
|
||
rect.legend.y1 {
|
||
fill: #FF6854;
|
||
}
|
||
.line0,
|
||
.line1 {
|
||
fill: transparent;
|
||
stroke-width: 1;
|
||
}
|
||
.line0 {
|
||
stroke: #007BC3;
|
||
}
|
||
.line1 {
|
||
stroke: #FF303E;
|
||
}
|
||
.axis text,
|
||
.axis-label,
|
||
text.legend {
|
||
font: 10px sans-serif;
|
||
}
|
||
.axis-label.y0,
|
||
.axis-label.y1 {
|
||
text-anchor: end;
|
||
}
|
||
rect.legend {
|
||
height: 10px;
|
||
width: 10px;
|
||
}
|
||
.legend {
|
||
cursor: pointer;
|
||
}
|
||
.wrap-text text {
|
||
text-anchor: start!important;
|
||
}
|
||
|
||
/* CHART TOOLTIP */
|
||
.chart-tooltip-wrap {
|
||
left: 0;
|
||
pointer-events: none;
|
||
position: absolute;
|
||
top: 10px;
|
||
z-index: 10;
|
||
}
|
||
.chart-tooltip {
|
||
-moz-box-shadow: 7px 7px 12px -9px #777777;
|
||
-webkit-box-shadow: 7px 7px 12px -9px #777777;
|
||
background-color: #fff;
|
||
border-collapse: collapse;
|
||
border-spacing: 0;
|
||
box-shadow: 7px 7px 12px -9px #777777;
|
||
empty-cells: show;
|
||
opacity: 0.9;
|
||
}
|
||
.chart-tooltip tr {
|
||
border: 1px solid #CCC;
|
||
}
|
||
.chart-tooltip th {
|
||
background-color: #aaa;
|
||
color: #FFF;
|
||
font-size: 14px;
|
||
max-width: 380px;
|
||
overflow: hidden;
|
||
padding: 2px 5px;
|
||
text-align: left;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
}
|
||
.chart-tooltip td {
|
||
border-left: 1px dotted #999;
|
||
font-size: 13px;
|
||
padding: 3px 6px;
|
||
}
|
||
.chart-tooltip td > span {
|
||
display: inline-block;
|
||
height: 10px;
|
||
margin-right: 6px;
|
||
width: 10px;
|
||
}
|
||
.chart-tooltip td.value {
|
||
text-align: right;
|
||
}
|
||
.chart-tooltip .blue {
|
||
background-color: #007BC3;
|
||
}
|
||
.chart-tooltip .red {
|
||
background-color: #FF303E;
|
||
}
|
||
|
||
/* DARK THEME */
|
||
.dark h1 {
|
||
color: rgba(255, 255, 255, 0.6);
|
||
}
|
||
.dark h3,
|
||
.dark h4,
|
||
.dark h5 {
|
||
color: rgba(255,255,255,0.4);
|
||
}
|
||
.dark .table-responsive {
|
||
border: none;
|
||
}
|
||
.dark .wrap-panel > div > table {
|
||
color: #D2D2D2;
|
||
}
|
||
.dark .wrap-panel table tbody.tbody-meta tr {
|
||
background-color: transparent;
|
||
color: #F7F7F7;
|
||
}
|
||
.dark .wrap-panel table tbody.tbody-data tr td {
|
||
border-right: none;
|
||
}
|
||
.dark .wrap-panel table.table-hover>tbody.tbody-data>tr:hover {
|
||
background-color: rgba(255, 255, 255, 0.08) !important;
|
||
}
|
||
.dark .col-title {
|
||
color: #9e9e9e;
|
||
text-shadow:none;
|
||
}
|
||
.dark .grid-module h3 {
|
||
color: #FFF;
|
||
}
|
||
.dark .dropdown-menu>li>a {
|
||
color: #FFF;
|
||
}
|
||
.dark div.wrap-panel > div {
|
||
color: #EEE;
|
||
margin-top: 10px;
|
||
padding: 0 10px;
|
||
border-top: 1px solid rgba(255, 255, 255, 0.15);
|
||
}
|
||
|
||
/* DARK BLUE THEME */
|
||
html.dark.blue,
|
||
.dark.blue body {
|
||
background: #252B30;
|
||
}
|
||
.dark.blue .container {
|
||
background: #252B30;
|
||
}
|
||
.dark.blue .page-header {
|
||
border-bottom: 1px solid #3B444C;
|
||
}
|
||
.dark.blue .label-info {
|
||
background-color: #252B30;
|
||
}
|
||
.dark.blue nav {
|
||
border-right: 1px solid #181B1F;
|
||
background: #1F2328;
|
||
}
|
||
.dark.blue div.wrap-panel > div {
|
||
background: #1F2328;
|
||
}
|
||
.dark.blue .wrap-panel table tbody.tbody-meta {
|
||
border-top: 1px solid #3B444C;
|
||
border-bottom: 1px solid #3B444C;
|
||
}
|
||
.dark.blue .wrap-panel table tbody.tbody-data tr.shaded {
|
||
background-color: #181B1F;
|
||
}
|
||
.dark.blue .gray {
|
||
border-top: 4px solid #3B444C;
|
||
}
|
||
.dark.blue .grid-module {
|
||
background: #1F2328;
|
||
}
|
||
.dark.blue .btn-default {
|
||
color: #9E9E9E;
|
||
background-color: #1F2328;
|
||
border-color: #3B444C;
|
||
}
|
||
.dark.blue .btn-default:active,
|
||
.dark.blue .btn-default:hover,
|
||
.dark.blue .btn-default.active,
|
||
.dark.blue .open>.dropdown-toggle.btn-default {
|
||
color: #3B444C;
|
||
background-color: #1F2328;
|
||
border-color: #0F1214;
|
||
}
|
||
.dark.blue .pagination>.disabled>a,
|
||
.dark.blue .pagination>.disabled>a:hover,
|
||
.dark.blue .pagination>.disabled>a:focus {
|
||
color: #777;
|
||
}
|
||
.dark.blue .pagination>li>a {
|
||
background-color: #1F2328;
|
||
border: 1px solid #3B444C;
|
||
}
|
||
.dark.blue .pagination>li>a:hover,
|
||
.dark.blue .pagination>li>a:active,
|
||
.dark.blue .pagination>li>a:focus {
|
||
color: #0370B0;
|
||
background-color: #1F2328;
|
||
border-color: #3B444C;
|
||
}
|
||
.dark.blue .dropdown-menu>li>a:hover,
|
||
.dark.blue .dropdown-menu>li>a:focus {
|
||
color: #FFF;
|
||
background-color: #3B444C;
|
||
}
|
||
.dark.blue .dropdown-menu {
|
||
background-color: #252B30;
|
||
}
|
||
.dark.blue::-webkit-scrollbar-track,
|
||
.dark.blue .table-responsive::-webkit-scrollbar-track {
|
||
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
|
||
background-color: #9E9E9E;
|
||
}
|
||
.dark.blue::-webkit-scrollbar,
|
||
.dark.blue .table-responsive::-webkit-scrollbar {
|
||
width: 10px;
|
||
height: 10px;
|
||
background-color: #9E9E9E;
|
||
}
|
||
.dark.blue::-webkit-scrollbar-thumb,
|
||
.dark.blue .table-responsive::-webkit-scrollbar-thumb {
|
||
background-color: #3B444C;
|
||
}
|
||
.dark.blue .chart-tooltip {
|
||
background-color: #252B30;
|
||
}
|
||
.dark.blue .report-title {
|
||
background: #1F2328;
|
||
}
|
||
|
||
/* DARK GREY THEME */
|
||
html.dark.gray,
|
||
.dark.gray body {
|
||
background: #212121;
|
||
}
|
||
.dark.gray .container {
|
||
background: #212121;
|
||
}
|
||
.dark.gray .page-header {
|
||
border-bottom: 1px solid #303030;
|
||
}
|
||
.dark.gray .label-info {
|
||
background-color: #303030;
|
||
}
|
||
.dark.gray nav {
|
||
border-right: 1px solid #363737;
|
||
background: #1C1C1C;
|
||
}
|
||
.dark.gray div.wrap-panel > div {
|
||
background: #1C1C1C;
|
||
}
|
||
.dark.gray .wrap-panel table tbody.tbody-meta {
|
||
border-top: 1px solid #363737;
|
||
border-bottom: 1px solid #363737;
|
||
}
|
||
.dark.gray .wrap-panel table tbody.tbody-data tr.shaded {
|
||
background-color: rgba(48, 48, 48, 0.48);
|
||
}
|
||
.dark.gray .gray {
|
||
border-top: 4px solid #303030;
|
||
}
|
||
.dark.gray .grid-module {
|
||
background: #1C1C1C;
|
||
}
|
||
.dark.gray .btn-default {
|
||
color: #9E9E9E;
|
||
background-color: #212121;
|
||
border-color: #303030;
|
||
}
|
||
.dark.gray .btn-default:active,
|
||
.dark.gray .btn-default:hover,
|
||
.dark.gray .btn-default.active,
|
||
.dark.gray .open>.dropdown-toggle.btn-default {
|
||
color: #363737;
|
||
background-color: #1C1C1C;
|
||
border-color: #0F1214;
|
||
}
|
||
.dark.gray .pagination>.disabled>a,
|
||
.dark.gray .pagination>.disabled>a:hover,
|
||
.dark.gray .pagination>.disabled>a:focus {
|
||
color: #777;
|
||
}
|
||
.dark.gray .pagination>li>a {
|
||
background-color: #212121;
|
||
border: 1px solid #303030;
|
||
}
|
||
.dark.gray .pagination>li>a:hover,
|
||
.dark.gray .pagination>li>a:active,
|
||
.dark.gray .pagination>li>a:focus {
|
||
color: #0370B0;
|
||
background-color: #212121;
|
||
border-color: #303030;
|
||
}
|
||
.dark.gray .dropdown-menu>li>a {
|
||
color: #FFF;
|
||
}
|
||
.dark.gray .dropdown-menu>li>a:hover,
|
||
.dark.gray .dropdown-menu>li>a:focus {
|
||
color: #FFF;
|
||
background-color: #303030;
|
||
}
|
||
.dark.gray .dropdown-menu {
|
||
background-color: #212121;
|
||
}
|
||
.dark.gray::-webkit-scrollbar-track,
|
||
.dark.gray .table-responsive::-webkit-scrollbar-track {
|
||
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
|
||
background-color: #9E9E9E;
|
||
}
|
||
.dark.gray::-webkit-scrollbar,
|
||
.dark.gray .table-responsive::-webkit-scrollbar {
|
||
width: 10px;
|
||
height: 10px;
|
||
background-color: #9E9E9E;
|
||
}
|
||
.dark.gray::-webkit-scrollbar-thumb,
|
||
.dark.gray .table-responsive::-webkit-scrollbar-thumb {
|
||
background-color: #303030;
|
||
}
|
||
.dark.gray .chart-tooltip {
|
||
background-color: #303030;
|
||
}
|
||
.dark.gray .report-title {
|
||
background: #303030;
|
||
}
|
||
|
||
/* DARK CHARTS */
|
||
.dark svg {
|
||
background-color: transparent;
|
||
}
|
||
.dark .area {
|
||
opacity: 0.1;
|
||
}
|
||
.dark .line0,
|
||
.dark .line1 {
|
||
stroke-width: 2;
|
||
}
|
||
.dark .area0,
|
||
.dark .bars.y0 .bar,
|
||
.dark rect.legend.y0 {
|
||
fill: #007BC3;
|
||
}
|
||
.dark .area1,
|
||
.dark .bars.y1 .bar,
|
||
.dark .points.y1,
|
||
.dark rect.legend.y1 {
|
||
fill: #FF303E;
|
||
}
|
||
.dark .points.y0 {
|
||
fill: #00D4E1;
|
||
}
|
||
.dark .line0 {
|
||
stroke: #007BC3;
|
||
}
|
||
.dark .line1 {
|
||
stroke: #FF303E;
|
||
}
|
||
.dark .grid.y .tick line,
|
||
.dark .grid.x .tick line {
|
||
stroke: #44474B;
|
||
stroke-dasharray: 1 1;
|
||
}
|
||
.dark .axis text,
|
||
.dark .axis-label,
|
||
.dark text.legend {
|
||
fill: #9E9E9E;
|
||
}
|
||
.dark .axis path {
|
||
stroke: #999999;
|
||
}
|
||
.dark .axis.x .tick line,
|
||
.dark .axis.y0 .tick line,
|
||
.dark .axis.y1 .tick line,
|
||
.dark .grid.y .tick:first-child line {
|
||
stroke: #3B444C;
|
||
}
|
||
.dark .chart-tooltip th {
|
||
background-color: #1c1c1c;
|
||
}
|
||
.dark .chart-tooltip tr {
|
||
border: 1px solid #363737;
|
||
}
|
||
</style></head><body><nav class='hidden-xs hidden-sm hide'></nav><i class='spinner fa fa-circle-o-notch fa-spin fa-3x fa-fw'></i><div class='container hide'><div class='wrap-header'><div class='row row-offcanvas row-offcanvas-right'><div class='col-md-12'><div class='page-header clearfix'><div class='pull-right'><h4><span class='label label-info' style='display:block'><span class='hidden-xs'>Last Updated: </span><span class='last-updated'>2020-09-16 15:46:22 +0200</span></span></h4></div><h1><span class='hidden-xs hidden-sm'><i class='fa fa-tachometer'></i> Dashboard</span><span class='visible-xs visible-sm'><i class='fa fa-bars nav-minibars'></i><i class='fa fa-circle nav-ws-status mini'></i></span></h1><div class='report-title'></div></div><div class='wrap-general'></div></div></div></div><div class='wrap-panels'></div></div><!-- TPL General -->
|
||
<script id="tpl-general" type="text/template">
|
||
<h4 class="hidden-xs gheader">{{head}}<span class="pull-right"><span class="from"></span> — <span class="to"></span></span></h4>
|
||
<h5 class="visible-xs hidden-sm hidden-md hidden-lg gheader">{{head}} <span class="from"></span> — <span class="to"></span></span></h5>
|
||
<div class="wrap-general-items"></div>
|
||
</script>
|
||
|
||
<!-- TPL General Items -->
|
||
<script id="tpl-general-items" type="text/template">
|
||
<div class="col-md-2">
|
||
<div class="grid-module {{#className}}{{className}}{{/className}}{{^className}}gray{{/className}}">
|
||
<div class="col-title">
|
||
<i class="fa fa-bar-chart"></i> {{#label}}{{label}}{{/label}}
|
||
</div>
|
||
<h3 id="{{id}}" style="padding-top: 0;">{{value}}</h3>
|
||
</div>
|
||
</div>
|
||
</script>
|
||
|
||
<!-- TPL Panel Table -->
|
||
<script id="tpl-table-row" type="text/template">
|
||
{{#rows}}
|
||
<tr class="{{#className}}{{className}}{{/className}} {{#hasSubItems}}{{#items}}expandable{{/items}}{{/hasSubItems}}" {{#idx}}data-pid="{{idx}}"{{/idx}} data-panel="{{panel}}" {{#key}}data-key="{{key}}"{{/key}}>
|
||
{{#hasSubItems}}
|
||
<td class="row-expandable text-center {{#items}}clickable{{/items}}">
|
||
{{#items}}<i class="fa {{#expanded}}fa-caret-down{{/expanded}}{{^expanded}}fa fa-caret-right{{/expanded}}"></i>{{/items}}
|
||
{{^items}}<i></i>{{/items}}
|
||
</td>
|
||
{{/hasSubItems}}
|
||
<td class="row-idx text-right">
|
||
{{#idx}}{{idx}}{{/idx}}
|
||
</td>
|
||
{{#cells}}
|
||
<td class="{{className}}" {{#colspan}}colspan="{{colspan}}"{{/colspan}}>
|
||
<span class="value">{{{value}}}</span>{{#percent}}<span class="percent"> ({{percent}})</span>{{/percent}}
|
||
</td>
|
||
{{/cells}}
|
||
</tr>
|
||
{{/rows}}
|
||
</script>
|
||
|
||
<!-- TPL Panel Table Meta -->
|
||
<script id="tpl-table-row-meta" type="text/template">
|
||
{{#row}}
|
||
<tr>
|
||
{{#hasSubItems}}
|
||
<td class=""></td>
|
||
{{/hasSubItems}}
|
||
<td class=""></td>
|
||
{{#cells}}
|
||
<td class="{{className}}" {{#colspan}}colspan="{{colspan}}"{{/colspan}}>
|
||
{{#value}}
|
||
<h4 class="value"><span title="{{title}}">{{value}}</span>{{#label}}<small> {{label}}</small>{{/label}}{{#max}}<br><small>Max: {{max}}</small>{{/max}}{{#min}}<br><small>Min: {{min}}</small>{{/min}}</h4>
|
||
{{/value}}
|
||
</td>
|
||
{{/cells}}
|
||
</tr>
|
||
{{/row}}
|
||
</script>
|
||
|
||
<!-- TPL Table thead -->
|
||
<script id="tpl-table-thead" type="text/template">
|
||
<tr>
|
||
{{#hasSubItems}}
|
||
<th></th>
|
||
{{/hasSubItems}}
|
||
<th>#</th>
|
||
{{#items}}
|
||
<th class="{{dataType}} {{#key}}sortable{{/key}}" data-key="{{key}}" {{#sort}}data-order="{{#asc}}asc{{/asc}}{{^asc}}desc{{/asc}}"{{/sort}}>
|
||
{{label}} <i class="fa fa-{{^sort}}sort{{/sort}}{{#sort}}{{#asc}}caret-up{{/asc}}{{^asc}}caret-down{{/asc}}{{/sort}}"></i>
|
||
</th>
|
||
{{/items}}
|
||
</tr>
|
||
</script>
|
||
|
||
<!-- TPL Panel Options DropDown -->
|
||
<script id="tpl-panel-opts" type="text/template">
|
||
{{#plot.length}}
|
||
<li class="dropdown-header">Chart Type</li>
|
||
<li><a href="javascript:void(0);" data-panel="{{id}}" data-chart-type="area-spline"><i class="fa fa-circle{{^area-spline}}-o{{/area-spline}}"></i> Area Spline</a></li>
|
||
<li><a href="javascript:void(0);" data-panel="{{id}}" data-chart-type="bar"><i class="fa fa-circle{{^bar}}-o{{/bar}}"></i> Bar</a></li>
|
||
<li class="dropdown-header">Plot Metric</li>
|
||
{{#plot}}
|
||
<li><a href="javascript:void(0);" data-panel="{{id}}" data-plot="{{className}}" class="panel-plot-{{className}}"><i class="fa fa-circle{{^selected}}-o{{/selected}}"></i> {{label}}</a></li>
|
||
{{/plot}}
|
||
{{/plot.length}}
|
||
|
||
<li class="dropdown-header">Table Columns</li>
|
||
{{#items}}
|
||
<li><a href="javascript:void(0);" data-panel="{{id}}" data-metric="{{key}}"><i class="fa fa-{{^hide}}check-{{/hide}}square-o"></i> {{label}}</a></li>
|
||
{{/items}}
|
||
</script>
|
||
|
||
<!-- TPL Table colgroup -->
|
||
<script id="tpl-table-colgroup" type="text/template">
|
||
{{#hasSubItems}}
|
||
<col style="width: 2%;"> <!-- right-caret -->
|
||
{{/hasSubItems}}
|
||
<col style="width: 3%;"> <!-- row # -->
|
||
{{#items}}
|
||
<col style="width:{{colWidth}}">
|
||
{{/items}}
|
||
</script>
|
||
|
||
<!-- TPL Panel -->
|
||
<script id="tpl-panel" type="text/template">
|
||
<div class="row">
|
||
<div class="col-md-12">
|
||
<div class="form-group clearfix panel-header">
|
||
<h4 class="pull-left hidden-xs gheader" id="{{id}}">{{head}}<br><small>{{desc}}</small></h4>
|
||
<h5 class="pull-left visible-xs hidden-sm hidden-md hidden-lg gheader" id="{{id}}">{{head}}<br><small>{{desc}}</small></h5>
|
||
<div class="panel-plot-wrap">
|
||
<div class="dropdown">
|
||
<button class="btn btn-default btn-sm dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true" data-panel="{{id}}">
|
||
<i class="fa fa-gear"></i> Panel Options <span class="fa fa-caret-down"></span>
|
||
</button>
|
||
<ul class="dropdown-menu dropdown-menu-right panel-opts-{{id}}">
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{{#plot.length}}
|
||
<div class="row">
|
||
<div class="col-md-12">
|
||
<div id="chart-{{id}}" class="chart-wrap"></div>
|
||
</div>
|
||
</div>
|
||
{{/plot.length}}
|
||
{{#table}}
|
||
<div class="row clearfix table-wrapper {{#autoHideTables}}hidden-xs{{/autoHideTables}}">
|
||
<div class="col-md-12">
|
||
<div class="table-responsive">
|
||
<table data-panel="{{id}}" class="table table-borderless table-hover table-{{id}}">
|
||
<colgroup>
|
||
</colgroup>
|
||
<thead>
|
||
</thead>
|
||
<tbody class="tbody-meta">
|
||
</tbody>
|
||
<tbody class="tbody-data">
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<ul class="pagination pagination-sm pull-left">
|
||
<li class="disabled">
|
||
<a class="panel-prev" href="javascript:void(0);" aria-label="Previous" data-panel="{{id}}">
|
||
<i class="fa fa-chevron-left"></i>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a class="panel-next" href="javascript:void(0);" aria-label="Next" data-panel="{{id}}">
|
||
<i class="fa fa-chevron-right"></i>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
{{/table}}
|
||
</script>
|
||
|
||
<script id="tpl-nav-wrap" type="text/template">
|
||
<div class="nav-bars fa fa-bars"></div>
|
||
<div class="nav-gears fa fa-cog"></div>
|
||
<div class="nav-ws-status fa fa-circle"></div>
|
||
<div class="nav-list"></div>
|
||
<div class="powered hidden-xs hidden-sm">by <a href="https://goaccess.io/">GoAccess</a> and <a href="http://gwsocket.io/">GWSocket</a></div>
|
||
</script>
|
||
<script id="tpl-nav-menu" type="text/template">
|
||
<h3>Panels</h3>
|
||
<ul>
|
||
<li {{#overall}}class="active"{{/overall}}><a href="#"><i class="fa fa-bar-chart"></i> Overall Analyzed Requests</a></li>
|
||
{{#nav}}
|
||
<li {{#current}}class="active"{{/current}}><a href="#{{key}}"><i class="fa fa-{{icon}}"></i> {{head}}</a></li>
|
||
{{/nav}}
|
||
</ul>
|
||
</script>
|
||
<script id="tpl-nav-opts" type="text/template">
|
||
<h3><i class="fa fa-hashtag"></i> Theme</h3>
|
||
<ul>
|
||
<li {{#darkGray}}class="active"{{/darkGray}}>
|
||
<a href="javascript:void(0);" class="theme-dark-gray"><i class="fa fa-circle{{^darkGray}}-o{{/darkGray}}"></i> Dark Gray</a>
|
||
</li>
|
||
<li {{#bright}}class="active"{{/bright}}>
|
||
<a href="javascript:void(0);" class="theme-bright"><i class="fa fa-circle{{^bright}}-o{{/bright}}"></i> Bright</a>
|
||
</li>
|
||
<li {{#darkBlue}}class="active"{{/darkBlue}}>
|
||
<a href="javascript:void(0);" class="theme-dark-blue"><i class="fa fa-circle{{^darkBlue}}-o{{/darkBlue}}"></i> Dark Blue</a>
|
||
</li>
|
||
</ul>
|
||
<h3><i class="fa fa-list-alt"></i> Panels</h3>
|
||
<ul class="perpage-wrap">
|
||
<li class="dropdown-header"><i class="fa fa-list"></i> Items Per Page</li>
|
||
<li {{#perPage5}}class="active"{{/perPage5}}>
|
||
<a href="javascript:void(0);" data-perpage="5"><i class="fa fa-circle{{^perPage5}}-o{{/perPage5}}"></i> 5</a>
|
||
</li>
|
||
<li {{#perPage7}}class="active"{{/perPage7}}>
|
||
<a href="javascript:void(0);" data-perpage="7"><i class="fa fa-circle{{^perPage7}}-o{{/perPage7}}"></i> 7</a>
|
||
</li>
|
||
<li {{#perPage10}}class="active"{{/perPage10}}>
|
||
<a href="javascript:void(0);" data-perpage="10"><i class="fa fa-circle{{^perPage10}}-o{{/perPage10}}"></i> 10</a>
|
||
</li>
|
||
<li {{#perPage15}}class="active"{{/perPage15}}>
|
||
<a href="javascript:void(0);" data-perpage="15"><i class="fa fa-circle{{^perPage15}}-o{{/perPage15}}"></i> 15</a>
|
||
</li>
|
||
<li {{#perPage20}}class="active"{{/perPage20}}>
|
||
<a href="javascript:void(0);" data-perpage="20"><i class="fa fa-circle{{^perPage20}}-o{{/perPage20}}"></i> 20</a>
|
||
</li>
|
||
<li class="dropdown-header"><i class="fa fa-table"></i> Tables</li>
|
||
<li {{#showTables}}class="active"{{/showTables}}>
|
||
<a href="javascript:void(0);" data-show-tables="1"><i class="fa fa-{{#showTables}}check-{{/showTables}}square-o"></i> Display Tables</a>
|
||
</li>
|
||
<li {{#autoHideTables}}class="active"{{/autoHideTables}}>
|
||
<a href="javascript:void(0);" data-autohide-tables="1" title="Automatically hide tables on small screen devices">
|
||
<i class="fa fa-{{#autoHideTables}}check-{{/autoHideTables}}square-o"></i> Auto-hide on small devices
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
<h3><i class="fa fa-th-large"></i> Layout</h3>
|
||
<ul>
|
||
<li {{#horizontal}}class="active"{{/horizontal}}>
|
||
<a href="javascript:void(0);" class="layout-horizontal"><i class="fa fa-circle{{^horizontal}}-o{{/horizontal}}"></i> Horizontal</a>
|
||
</li>
|
||
<li {{#vertical}}class="active"{{/vertical}}>
|
||
<a href="javascript:void(0);" class="layout-vertical"><i class="fa fa-circle{{^vertical}}-o{{/vertical}}"></i> Vertical</a>
|
||
</li>
|
||
</ul>
|
||
<h3><i class="fa fa-cog"></i> File Options</h3>
|
||
<ul>
|
||
<li><a href="javascript:void(0);" class="export-json"><i class="fa fa-code"></i> Export as JSON</a></li>
|
||
</ul>
|
||
</script>
|
||
|
||
<script id="tpl-chart-tooltip" type="text/template">
|
||
<table class="chart-tooltip">
|
||
<tbody>
|
||
<tr>
|
||
<th colspan="2">{{data.0}}</th>
|
||
</tr>
|
||
<tr>
|
||
<td class="name"><span class="blue"></span>hits</td>
|
||
<td class="value">{{data.1}}</td>
|
||
</tr>
|
||
{{#data.2}}
|
||
<tr>
|
||
<td class="name"><span class="red"></span>visitors</td>
|
||
<td class="value">{{data.2}}</td>
|
||
</tr>
|
||
{{/data.2}}
|
||
</tbody>
|
||
</table>
|
||
</script>
|
||
<script type='text/javascript'>var html_prefs={};var user_interface={"general": {"head": "Overall Analyzed Requests","desc": "","items": {"total_requests": {"className": "black","dataType": "numeric","label": "Total Requests"},"valid_requests": {"className": "green","dataType": "numeric","label": "Valid Requests"},"failed_requests": {"className": "red","dataType": "numeric","label": "Failed Requests"},"generation_time": {"className": "gray","dataType": "secs","label": "Init. Proc. Time"},"unique_visitors": {"className": "blue","dataType": "numeric","label": "Unique Visitors"},"unique_files": {"dataType": "numeric","label": "Unique Files"},"excluded_hits": {"dataType": "numeric","label": "Excl. IP Hits"},"unique_referrers": {"dataType": "numeric","label": "Referrers"},"unique_not_found": {"dataType": "numeric","label": "Unique 404"},"unique_static_files": {"dataType": "numeric","label": "Static Files"},"log_size": {"dataType": "bytes","label": "Log Size"},"bandwidth": {"dataType": "bytes","label": "Bandwidth"}}},"visitors": {"head": "Unique visitors per day - Including spiders","desc": "Hits having the same IP, date and agent are a unique visit.","id": "visitors","table": 1,"sort": {"field": "data","order": "DESC"},"plot": [{"className": "hits-visitors","label": "Hits/Visitors","chartType": "area-spline","chartReverse": 1,"redrawOnExpand": 1,"d3": {"y0": {"key": "hits","label": "Hits"},"y1": {"key": "visitors","label": "Visitors"}}},{"className": "bandwidth","label": "Bandwidth","chartType": "area-spline","chartReverse": 1,"redrawOnExpand": 1,"d3": {"y0": {"key": "bytes","label": "Bandwidth","format": "bytes"}}}],"items": [{"colWidth": "12%","meta": "count","dataType": "numeric","key": "hits","label": "Hits"},{"colWidth": "12%","meta": "count","dataType": "numeric","key": "visitors","label": "Visitors"},{"colWidth": "12%","meta": "count","dataType": "bytes","key": "bytes","label": "Bandwidth"},{"className": "trunc","colWidth": "100%","meta": "unique","metaType": "numeric","metaLabel": "Total","dataType": "date","key": "data","label": "Data"}]},"requests": {"head": "Requested Files (URLs)","desc": "Top requests sorted by hits [, avgts, cumts, maxts, mthd, proto]","id": "requests","table": 1,"sort": {"field": "hits","order": "DESC"},"plot": [{"className": "hits-visitors","label": "Hits/Visitors","chartType": "bar","chartReverse": 0,"redrawOnExpand": 0,"d3": {"x": {"key": ["method", "data", "protocol"]},"y0": {"key": "hits","label": "Hits"},"y1": {"key": "visitors","label": "Visitors"}}},{"className": "bandwidth","label": "Bandwidth","chartType": "bar","chartReverse": 0,"redrawOnExpand": 0,"d3": {"x": {"key": ["method", "protocol", "data"]},"y0": {"key": "bytes","label": "Bandwidth","format": "bytes"}}}],"items": [{"colWidth": "12%","meta": "count","dataType": "numeric","key": "hits","label": "Hits"},{"colWidth": "12%","meta": "count","dataType": "numeric","key": "visitors","label": "Visitors"},{"colWidth": "12%","meta": "count","dataType": "bytes","key": "bytes","label": "Bandwidth"},{"colWidth": "6%","dataType": "string","key": "method","label": "Method"},{"colWidth": "7%","dataType": "string","key": "protocol","label": "Protocol"},{"className": "trunc","colWidth": "100%","meta": "unique","metaType": "numeric","metaLabel": "Total","dataType": "string","key": "data","label": "Data"}]},"static_requests": {"head": "Static Requests","desc": "Top static requests sorted by hits [, avgts, cumts, maxts, mthd, proto]","id": "static_requests","table": 1,"sort": {"field": "hits","order": "DESC"},"plot": [{"className": "hits-visitors","label": "Hits/Visitors","chartType": "bar","chartReverse": 0,"redrawOnExpand": 0,"d3": {"x": {"key": ["method", "data", "protocol"]},"y0": {"key": "hits","label": "Hits"},"y1": {"key": "visitors","label": "Visitors"}}},{"className": "bandwidth","label": "Bandwidth","chartType": "bar","chartReverse": 0,"redrawOnExpand": 0,"d3": {"x": {"key": ["method", "protocol", "data"]},"y0": {"key": "bytes","label": "Bandwidth","format": "bytes"}}}],"items": [{"colWidth": "12%","meta": "count","dataType": "numeric","key": "hits","label": "Hits"},{"colWidth": "12%","meta": "count","dataType": "numeric","key": "visitors","label": "Visitors"},{"colWidth": "12%","meta": "count","dataType": "bytes","key": "bytes","label": "Bandwidth"},{"colWidth": "6%","dataType": "string","key": "method","label": "Method"},{"colWidth": "7%","dataType": "string","key": "protocol","label": "Protocol"},{"className": "trunc","colWidth": "100%","meta": "unique","metaType": "numeric","metaLabel": "Total","dataType": "string","key": "data","label": "Data"}]},"not_found": {"head": "Not Found URLs (404s)","desc": "Top not found URLs sorted by hits [, avgts, cumts, maxts, mthd, proto]","id": "not_found","table": 1,"sort": {"field": "hits","order": "DESC"},"plot": [{"className": "hits-visitors","label": "Hits/Visitors","chartType": "bar","chartReverse": 0,"redrawOnExpand": 0,"d3": {"x": {"key": ["method", "data", "protocol"]},"y0": {"key": "hits","label": "Hits"},"y1": {"key": "visitors","label": "Visitors"}}},{"className": "bandwidth","label": "Bandwidth","chartType": "bar","chartReverse": 0,"redrawOnExpand": 0,"d3": {"x": {"key": ["method", "protocol", "data"]},"y0": {"key": "bytes","label": "Bandwidth","format": "bytes"}}}],"items": [{"colWidth": "12%","meta": "count","dataType": "numeric","key": "hits","label": "Hits"},{"colWidth": "12%","meta": "count","dataType": "numeric","key": "visitors","label": "Visitors"},{"colWidth": "12%","meta": "count","dataType": "bytes","key": "bytes","label": "Bandwidth"},{"colWidth": "6%","dataType": "string","key": "method","label": "Method"},{"colWidth": "7%","dataType": "string","key": "protocol","label": "Protocol"},{"className": "trunc","colWidth": "100%","meta": "unique","metaType": "numeric","metaLabel": "Total","dataType": "string","key": "data","label": "Data"}]},"hosts": {"head": "Visitor Hostnames and IPs","desc": "Top visitor hosts sorted by hits [, avgts, cumts, maxts]","id": "hosts","table": 1,"sort": {"field": "hits","order": "DESC"},"plot": [{"className": "hits-visitors","label": "Hits/Visitors","chartType": "bar","chartReverse": 0,"redrawOnExpand": 0,"d3": {"y0": {"key": "hits","label": "Hits"},"y1": {"key": "visitors","label": "Visitors"}}},{"className": "bandwidth","label": "Bandwidth","chartType": "bar","chartReverse": 0,"redrawOnExpand": 0,"d3": {"y0": {"key": "bytes","label": "Bandwidth","format": "bytes"}}}],"items": [{"colWidth": "12%","meta": "count","dataType": "numeric","key": "hits","label": "Hits"},{"colWidth": "12%","meta": "count","dataType": "numeric","key": "visitors","label": "Visitors"},{"colWidth": "12%","meta": "count","dataType": "bytes","key": "bytes","label": "Bandwidth"},{"dataType": "string","key": "country","label": "Country"},{"className": "trunc","colWidth": "100%","meta": "unique","metaType": "numeric","metaLabel": "Total","dataType": "string","key": "data","label": "Data"}]},"os": {"head": "Operating Systems","desc": "Top Operating Systems sorted by hits [, avgts, cumts, maxts]","id": "os","table": 1,"sort": {"field": "hits","order": "DESC"},"plot": [{"className": "hits-visitors","label": "Hits/Visitors","chartType": "bar","chartReverse": 0,"redrawOnExpand": 1,"d3": {"y0": {"key": "hits","label": "Hits"},"y1": {"key": "visitors","label": "Visitors"}}},{"className": "bandwidth","label": "Bandwidth","chartType": "bar","chartReverse": 0,"redrawOnExpand": 1,"d3": {"y0": {"key": "bytes","label": "Bandwidth","format": "bytes"}}}],"items": [{"colWidth": "12%","meta": "count","dataType": "numeric","key": "hits","label": "Hits"},{"colWidth": "12%","meta": "count","dataType": "numeric","key": "visitors","label": "Visitors"},{"colWidth": "12%","meta": "count","dataType": "bytes","key": "bytes","label": "Bandwidth"},{"className": "trunc","colWidth": "100%","meta": "unique","metaType": "numeric","metaLabel": "Total","dataType": "string","key": "data","label": "Data"}]},"browsers": {"head": "Browsers","desc": "Top Browsers sorted by hits [, avgts, cumts, maxts]","id": "browsers","table": 1,"sort": {"field": "hits","order": "DESC"},"plot": [{"className": "hits-visitors","label": "Hits/Visitors","chartType": "bar","chartReverse": 0,"redrawOnExpand": 1,"d3": {"y0": {"key": "hits","label": "Hits"},"y1": {"key": "visitors","label": "Visitors"}}},{"className": "bandwidth","label": "Bandwidth","chartType": "bar","chartReverse": 0,"redrawOnExpand": 1,"d3": {"y0": {"key": "bytes","label": "Bandwidth","format": "bytes"}}}],"items": [{"colWidth": "12%","meta": "count","dataType": "numeric","key": "hits","label": "Hits"},{"colWidth": "12%","meta": "count","dataType": "numeric","key": "visitors","label": "Visitors"},{"colWidth": "12%","meta": "count","dataType": "bytes","key": "bytes","label": "Bandwidth"},{"className": "trunc","colWidth": "100%","meta": "unique","metaType": "numeric","metaLabel": "Total","dataType": "string","key": "data","label": "Data"}]},"visit_time": {"head": "Time Distribution","desc": "Data sorted by hour [, avgts, cumts, maxts]","id": "visit_time","table": 1,"sort": {"field": "data","order": "ASC"},"plot": [{"className": "hits-visitors","label": "Hits/Visitors","chartType": "area-spline","chartReverse": 0,"redrawOnExpand": 1,"d3": {"y0": {"key": "hits","label": "Hits"},"y1": {"key": "visitors","label": "Visitors"}}},{"className": "bandwidth","label": "Bandwidth","chartType": "area-spline","chartReverse": 0,"redrawOnExpand": 1,"d3": {"y0": {"key": "bytes","label": "Bandwidth","format": "bytes"}}}],"items": [{"colWidth": "12%","meta": "count","dataType": "numeric","key": "hits","label": "Hits"},{"colWidth": "12%","meta": "count","dataType": "numeric","key": "visitors","label": "Visitors"},{"colWidth": "12%","meta": "count","dataType": "bytes","key": "bytes","label": "Bandwidth"},{"className": "trunc","colWidth": "100%","meta": "unique","metaType": "numeric","metaLabel": "Total","dataType": "string","key": "data","label": "Data"}]},"referring_sites": {"head": "Referring Sites","desc": "Top Referring Sites sorted by hits [, avgts, cumts, maxts]","id": "referring_sites","table": 1,"sort": {"field": "hits","order": "DESC"},"plot": [{"className": "hits-visitors","label": "Hits/Visitors","chartType": "bar","chartReverse": 0,"redrawOnExpand": 0,"d3": {"y0": {"key": "hits","label": "Hits"},"y1": {"key": "visitors","label": "Visitors"}}},{"className": "bandwidth","label": "Bandwidth","chartType": "bar","chartReverse": 0,"redrawOnExpand": 0,"d3": {"y0": {"key": "bytes","label": "Bandwidth","format": "bytes"}}}],"items": [{"colWidth": "12%","meta": "count","dataType": "numeric","key": "hits","label": "Hits"},{"colWidth": "12%","meta": "count","dataType": "numeric","key": "visitors","label": "Visitors"},{"colWidth": "12%","meta": "count","dataType": "bytes","key": "bytes","label": "Bandwidth"},{"className": "trunc","colWidth": "100%","meta": "unique","metaType": "numeric","metaLabel": "Total","dataType": "string","key": "data","label": "Data"}]},"status_codes": {"head": "HTTP Status Codes","desc": "Top HTTP Status Codes sorted by hits [, avgts, cumts, maxts]","id": "status_codes","table": 1,"sort": {"field": "hits","order": "DESC"},"plot": [{"className": "hits-visitors","label": "Hits/Visitors","chartType": "bar","chartReverse": 0,"redrawOnExpand": 1,"d3": {"y0": {"key": "hits","label": "Hits"},"y1": {"key": "visitors","label": "Visitors"}}},{"className": "bandwidth","label": "Bandwidth","chartType": "bar","chartReverse": 0,"redrawOnExpand": 1,"d3": {"y0": {"key": "bytes","label": "Bandwidth","format": "bytes"}}}],"items": [{"colWidth": "12%","meta": "count","dataType": "numeric","key": "hits","label": "Hits"},{"colWidth": "12%","meta": "count","dataType": "numeric","key": "visitors","label": "Visitors"},{"colWidth": "12%","meta": "count","dataType": "bytes","key": "bytes","label": "Bandwidth"},{"className": "trunc","colWidth": "100%","meta": "unique","metaType": "numeric","metaLabel": "Total","dataType": "string","key": "data","label": "Data"}]},"geolocation": {"head": "Geo Location","desc": "Continent > Country sorted by unique hits [, avgts, cumts, maxts]","id": "geolocation","table": 1,"sort": {"field": "hits","order": "DESC"},"plot": [{"className": "hits-visitors","label": "Hits/Visitors","chartType": "bar","chartReverse": 0,"redrawOnExpand": 1,"d3": {"y0": {"key": "hits","label": "Hits"},"y1": {"key": "visitors","label": "Visitors"}}},{"className": "bandwidth","label": "Bandwidth","chartType": "bar","chartReverse": 0,"redrawOnExpand": 1,"d3": {"y0": {"key": "bytes","label": "Bandwidth","format": "bytes"}}}],"items": [{"colWidth": "12%","meta": "count","dataType": "numeric","key": "hits","label": "Hits"},{"colWidth": "12%","meta": "count","dataType": "numeric","key": "visitors","label": "Visitors"},{"colWidth": "12%","meta": "count","dataType": "bytes","key": "bytes","label": "Bandwidth"},{"className": "trunc","colWidth": "100%","meta": "unique","metaType": "numeric","metaLabel": "Total","dataType": "string","key": "data","label": "Data"}]}}</script><script type='text/javascript'>var json_data={"general": {"start_date": "15/Sep/2020","end_date": "15/Sep/2020","date_time": "2020-09-16 15:46:22 +0200","total_requests": 1134,"valid_requests": 1134,"failed_requests": 0,"generation_time": 1,"unique_visitors": 201,"unique_files": 27,"excluded_hits": 0,"unique_referrers": 0,"unique_not_found": 18,"unique_static_files": 92,"log_size": 232077,"bandwidth": 31609001,"log_path": ["\/var\/log\/nginx\/switch-access.log.1"]},"visitors": {"metadata": {"bytes": {"count": 31609001,"max": 31609001,"min": 31609001},"visitors": {"count": 201,"max": 201,"min": 201},"hits": {"count": 1134,"max": 1134,"min": 1134},"data": {"unique": 1}},"data": [{"hits": {"count": 1134,"percent": 100.00},"visitors": {"count": 201,"percent": 100.00},"bytes": {"count": 31609001,"percent": 100.00},"data": "20200915"}]},"requests": {"metadata": {"bytes": {"count": 2836340,"max": 1823745,"min": 1799},"visitors": {"count": 240,"max": 97,"min": 1},"hits": {"count": 318,"max": 105,"min": 1},"data": {"unique": 27}},"data": [{"hits": {"count": 105,"percent": 33.02},"visitors": {"count": 97,"percent": 40.42},"bytes": {"count": 1823745,"percent": 64.30},"method": "GET","protocol": "HTTP/1.1","data": "\/preferences"},{"hits": {"count": 45,"percent": 14.15},"visitors": {"count": 38,"percent": 15.83},"bytes": {"count": 173916,"percent": 6.13},"method": "GET","protocol": "HTTP/1.1","data": "\/"},{"hits": {"count": 40,"percent": 12.58},"visitors": {"count": 4,"percent": 1.67},"bytes": {"count": 304045,"percent": 10.72},"method": "POST","protocol": "HTTP/2.0","data": "\/"},{"hits": {"count": 15,"percent": 4.72},"visitors": {"count": 13,"percent": 5.42},"bytes": {"count": 43431,"percent": 1.53},"method": "GET","protocol": "HTTP/2.0","data": "\/"},{"hits": {"count": 13,"percent": 4.09},"visitors": {"count": 10,"percent": 4.17},"bytes": {"count": 73215,"percent": 2.58},"method": "GET","protocol": "HTTP/2.0","data": "\/info.html"},{"hits": {"count": 10,"percent": 3.14},"visitors": {"count": 7,"percent": 2.92},"bytes": {"count": 34640,"percent": 1.22},"method": "GET","protocol": "HTTP/2.0","data": "\/social.html"},{"hits": {"count": 9,"percent": 2.83},"visitors": {"count": 5,"percent": 2.08},"bytes": {"count": 22392,"percent": 0.79},"method": "GET","protocol": "HTTP/2.0","data": "\/mail.html"},{"hits": {"count": 7,"percent": 2.20},"visitors": {"count": 6,"percent": 2.50},"bytes": {"count": 24332,"percent": 0.86},"method": "GET","protocol": "HTTP/1.1","data": "\/social.html"},{"hits": {"count": 7,"percent": 2.20},"visitors": {"count": 5,"percent": 2.08},"bytes": {"count": 17367,"percent": 0.61},"method": "GET","protocol": "HTTP/1.1","data": "\/extra.html"},{"hits": {"count": 7,"percent": 2.20},"visitors": {"count": 7,"percent": 2.92},"bytes": {"count": 1799,"percent": 0.06},"method": "GET","protocol": "HTTP/1.1","data": "\/clear_cookies"},{"hits": {"count": 7,"percent": 2.20},"visitors": {"count": 3,"percent": 1.25},"bytes": {"count": 84553,"percent": 2.98},"method": "POST","protocol": "HTTP/1.1","data": "\/"},{"hits": {"count": 6,"percent": 1.89},"visitors": {"count": 5,"percent": 2.08},"bytes": {"count": 14130,"percent": 0.50},"method": "GET","protocol": "HTTP/1.1","data": "\/im.html"},{"hits": {"count": 6,"percent": 1.89},"visitors": {"count": 6,"percent": 2.50},"bytes": {"count": 14058,"percent": 0.50},"method": "GET","protocol": "HTTP/2.0","data": "\/im.html"},{"hits": {"count": 5,"percent": 1.57},"visitors": {"count": 4,"percent": 1.67},"bytes": {"count": 23460,"percent": 0.83},"method": "GET","protocol": "HTTP/1.1","data": "\/info.html"},{"hits": {"count": 5,"percent": 1.57},"visitors": {"count": 3,"percent": 1.25},"bytes": {"count": 14055,"percent": 0.50},"method": "GET","protocol": "HTTP/1.1","data": "\/mail.html"},{"hits": {"count": 4,"percent": 1.26},"visitors": {"count": 3,"percent": 1.25},"bytes": {"count": 14704,"percent": 0.52},"method": "GET","protocol": "HTTP/1.1","data": "\/search.html"},{"hits": {"count": 4,"percent": 1.26},"visitors": {"count": 4,"percent": 1.67},"bytes": {"count": 9876,"percent": 0.35},"method": "GET","protocol": "HTTP/2.0","data": "\/extra.html"},{"hits": {"count": 3,"percent": 0.94},"visitors": {"count": 3,"percent": 1.25},"bytes": {"count": 10992,"percent": 0.39},"method": "GET","protocol": "HTTP/2.0","data": "\/search.html"},{"hits": {"count": 3,"percent": 0.94},"visitors": {"count": 2,"percent": 0.83},"bytes": {"count": 8403,"percent": 0.30},"method": "GET","protocol": "HTTP/1.1","data": "\/index.html"},{"hits": {"count": 3,"percent": 0.94},"visitors": {"count": 2,"percent": 0.83},"bytes": {"count": 24631,"percent": 0.87},"method": "GET","protocol": "HTTP/1.0","data": "\/"},{"hits": {"count": 3,"percent": 0.94},"visitors": {"count": 3,"percent": 1.25},"bytes": {"count": 8367,"percent": 0.29},"method": "GET","protocol": "HTTP/2.0","data": "\/index.html"},{"hits": {"count": 3,"percent": 0.94},"visitors": {"count": 2,"percent": 0.83},"bytes": {"count": 22797,"percent": 0.80},"method": "GET","protocol": "HTTP/1.1","data": "\/coc.html"},{"hits": {"count": 3,"percent": 0.94},"visitors": {"count": 3,"percent": 1.25},"bytes": {"count": 8424,"percent": 0.30},"method": "GET","protocol": "HTTP/1.1","data": "\/about"},{"hits": {"count": 2,"percent": 0.63},"visitors": {"count": 2,"percent": 0.83},"bytes": {"count": 19087,"percent": 0.67},"method": "GET","protocol": "HTTP/1.1","data": "\/stats"},{"hits": {"count": 1,"percent": 0.31},"visitors": {"count": 1,"percent": 0.42},"bytes": {"count": 8038,"percent": 0.28},"method": "GET","protocol": "HTTP/1.0","data": "\/im.html"},{"hits": {"count": 1,"percent": 0.31},"visitors": {"count": 1,"percent": 0.42},"bytes": {"count": 17635,"percent": 0.62},"method": "GET","protocol": "HTTP/2.0","data": "\/preferences"},{"hits": {"count": 1,"percent": 0.31},"visitors": {"count": 1,"percent": 0.42},"bytes": {"count": 14248,"percent": 0.50},"method": "GET","protocol": "HTTP/1.0","data": "\/social.html"}]},"static_requests": {"metadata": {"bytes": {"count": 28755337,"max": 4239344,"min": 0},"visitors": {"count": 453,"max": 22,"min": 1},"hits": {"count": 685,"max": 46,"min": 1},"data": {"unique": 92}},"data": [{"hits": {"count": 46,"percent": 6.72},"visitors": {"count": 5,"percent": 1.10},"bytes": {"count": 2024,"percent": 0.01},"method": "GET","protocol": "HTTP/2.0","data": "\/translations.js"},{"hits": {"count": 32,"percent": 4.67},"visitors": {"count": 21,"percent": 4.64},"bytes": {"count": 4239344,"percent": 14.74},"method": "GET","protocol": "HTTP/2.0","data": "\/fonts\/comfortaa.ttf"},{"hits": {"count": 32,"percent": 4.67},"visitors": {"count": 20,"percent": 4.42},"bytes": {"count": 376992,"percent": 1.31},"method": "GET","protocol": "HTTP/2.0","data": "\/favicon.png"},{"hits": {"count": 28,"percent": 4.09},"visitors": {"count": 22,"percent": 4.86},"bytes": {"count": 27972,"percent": 0.10},"method": "GET","protocol": "HTTP/2.0","data": "\/css\/menu.css"},{"hits": {"count": 27,"percent": 3.94},"visitors": {"count": 21,"percent": 4.64},"bytes": {"count": 15066,"percent": 0.05},"method": "GET","protocol": "HTTP/2.0","data": "\/css\/base.css"},{"hits": {"count": 26,"percent": 3.80},"visitors": {"count": 5,"percent": 1.10},"bytes": {"count": 202570,"percent": 0.70},"method": "GET","protocol": "HTTP/2.0","data": "\/static\/fonts\/glyphicons-halflings-regular.woff"},{"hits": {"count": 26,"percent": 3.80},"visitors": {"count": 4,"percent": 0.88},"bytes": {"count": 12971,"percent": 0.05},"method": "GET","protocol": "HTTP/2.0","data": "\/static\/themes\/oscar\/img\/favicon.png"},{"hits": {"count": 21,"percent": 3.07},"visitors": {"count": 18,"percent": 3.97},"bytes": {"count": 3600722,"percent": 12.52},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/pixelfed.png"},{"hits": {"count": 20,"percent": 2.92},"visitors": {"count": 14,"percent": 3.09},"bytes": {"count": 31392,"percent": 0.11},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/apple.png"},{"hits": {"count": 19,"percent": 2.77},"visitors": {"count": 18,"percent": 3.97},"bytes": {"count": 3212932,"percent": 11.17},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/mastodon2.png"},{"hits": {"count": 19,"percent": 2.77},"visitors": {"count": 14,"percent": 3.09},"bytes": {"count": 202623,"percent": 0.70},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/google.png"},{"hits": {"count": 19,"percent": 2.77},"visitors": {"count": 14,"percent": 3.09},"bytes": {"count": 138006,"percent": 0.48},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/fdroid.png"},{"hits": {"count": 19,"percent": 2.77},"visitors": {"count": 18,"percent": 3.97},"bytes": {"count": 908242,"percent": 3.16},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/friendica.png"},{"hits": {"count": 17,"percent": 2.48},"visitors": {"count": 13,"percent": 2.87},"bytes": {"count": 6596,"percent": 0.02},"method": "GET","protocol": "HTTP/2.0","data": "\/css\/btn.css"},{"hits": {"count": 15,"percent": 2.19},"visitors": {"count": 5,"percent": 1.10},"bytes": {"count": 64216,"percent": 0.22},"method": "GET","protocol": "HTTP/2.0","data": "\/static\/themes\/oscar\/css\/leaflet.min.css"},{"hits": {"count": 14,"percent": 2.04},"visitors": {"count": 5,"percent": 1.10},"bytes": {"count": 846430,"percent": 2.94},"method": "GET","protocol": "HTTP/2.0","data": "\/static\/css\/bootstrap.min.css"},{"hits": {"count": 13,"percent": 1.90},"visitors": {"count": 8,"percent": 1.77},"bytes": {"count": 1551160,"percent": 5.39},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/peertube.png"},{"hits": {"count": 13,"percent": 1.90},"visitors": {"count": 12,"percent": 2.65},"bytes": {"count": 33592,"percent": 0.12},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/q.png"},{"hits": {"count": 12,"percent": 1.75},"visitors": {"count": 11,"percent": 2.43},"bytes": {"count": 514162,"percent": 1.79},"method": "GET","protocol": "HTTP/2.0","data": "\/banner.gif"},{"hits": {"count": 12,"percent": 1.75},"visitors": {"count": 12,"percent": 2.65},"bytes": {"count": 45468,"percent": 0.16},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/fedi-small.png"},{"hits": {"count": 12,"percent": 1.75},"visitors": {"count": 12,"percent": 2.65},"bytes": {"count": 38244,"percent": 0.13},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/globe.png"},{"hits": {"count": 12,"percent": 1.75},"visitors": {"count": 4,"percent": 0.88},"bytes": {"count": 64026,"percent": 0.22},"method": "GET","protocol": "HTTP/2.0","data": "\/static\/themes\/oscar\/css\/logicodev.min.css"},{"hits": {"count": 9,"percent": 1.31},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 396,"percent": 0.00},"method": "GET","protocol": "HTTP/1.1","data": "\/translations.js"},{"hits": {"count": 8,"percent": 1.17},"visitors": {"count": 5,"percent": 1.10},"bytes": {"count": 608056,"percent": 2.11},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/mailfence.png"},{"hits": {"count": 8,"percent": 1.17},"visitors": {"count": 5,"percent": 1.10},"bytes": {"count": 235536,"percent": 0.82},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/tutanota_w.png"},{"hits": {"count": 8,"percent": 1.17},"visitors": {"count": 5,"percent": 1.10},"bytes": {"count": 343192,"percent": 1.19},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/cockmail.png"},{"hits": {"count": 8,"percent": 1.17},"visitors": {"count": 5,"percent": 1.10},"bytes": {"count": 1175584,"percent": 4.09},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/thexyz.png"},{"hits": {"count": 6,"percent": 0.88},"visitors": {"count": 5,"percent": 1.10},"bytes": {"count": 45657,"percent": 0.16},"method": "GET","protocol": "HTTP/2.0","data": "\/static\/js\/require-2.1.15.min.js"},{"hits": {"count": 6,"percent": 0.88},"visitors": {"count": 5,"percent": 1.10},"bytes": {"count": 287358,"percent": 1.00},"method": "GET","protocol": "HTTP/2.0","data": "\/static\/js\/jquery-1.11.1.min.js"},{"hits": {"count": 6,"percent": 0.88},"visitors": {"count": 5,"percent": 1.10},"bytes": {"count": 95457,"percent": 0.33},"method": "GET","protocol": "HTTP/2.0","data": "\/static\/js\/bootstrap.min.js"},{"hits": {"count": 6,"percent": 0.88},"visitors": {"count": 5,"percent": 1.10},"bytes": {"count": 4371,"percent": 0.02},"method": "GET","protocol": "HTTP/2.0","data": "\/static\/plugins\/js\/search_on_category_select.js"},{"hits": {"count": 6,"percent": 0.88},"visitors": {"count": 5,"percent": 1.10},"bytes": {"count": 16101,"percent": 0.06},"method": "GET","protocol": "HTTP/2.0","data": "\/static\/themes\/oscar\/js\/searx.min.js"},{"hits": {"count": 6,"percent": 0.88},"visitors": {"count": 6,"percent": 1.32},"bytes": {"count": 474870,"percent": 1.65},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/movim.png"},{"hits": {"count": 6,"percent": 0.88},"visitors": {"count": 6,"percent": 1.32},"bytes": {"count": 90744,"percent": 0.32},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/linux.png"},{"hits": {"count": 6,"percent": 0.88},"visitors": {"count": 6,"percent": 1.32},"bytes": {"count": 112566,"percent": 0.39},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/windows.png"},{"hits": {"count": 6,"percent": 0.88},"visitors": {"count": 6,"percent": 1.32},"bytes": {"count": 1786920,"percent": 6.21},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/jitsi.png"},{"hits": {"count": 5,"percent": 0.73},"visitors": {"count": 5,"percent": 1.10},"bytes": {"count": 58905,"percent": 0.20},"method": "GET","protocol": "HTTP/1.1","data": "\/favicon.png"},{"hits": {"count": 4,"percent": 0.58},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 701502,"percent": 2.44},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/pixelfed.png"},{"hits": {"count": 4,"percent": 0.58},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 213704,"percent": 0.74},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/friendica.png"},{"hits": {"count": 4,"percent": 0.58},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 688516,"percent": 2.39},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/mastodon2.png"},{"hits": {"count": 4,"percent": 0.58},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 331431,"percent": 1.15},"method": "GET","protocol": "HTTP/1.1","data": "\/static\/css\/bootstrap.min.css"},{"hits": {"count": 4,"percent": 0.58},"visitors": {"count": 2,"percent": 0.44},"bytes": {"count": 93280,"percent": 0.32},"method": "GET","protocol": "HTTP/1.1","data": "\/static\/fonts\/glyphicons-halflings-regular.woff"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 6720,"percent": 0.02},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/mag.png"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 281934,"percent": 0.98},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/searx.png"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 68118,"percent": 0.24},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/ecosia.png"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 380736,"percent": 1.32},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/yacy.png"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 11367,"percent": 0.04},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/fedi-small.png"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 11880,"percent": 0.04},"method": "GET","protocol": "HTTP/2.0","data": "\/static\/themes\/oscar\/img\/icons\/wikipedia.png"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 2,"percent": 0.44},"bytes": {"count": 0,"percent": 0.00},"method": "HEAD","protocol": "HTTP/1.1","data": "\/favicon.png"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 6321,"percent": 0.02},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/book.png"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 9096,"percent": 0.03},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/know.png"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 122004,"percent": 0.42},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/thumb1.png"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 159525,"percent": 0.55},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/thumb2.png"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 733893,"percent": 2.55},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/transport.png"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 285,"percent": 0.00},"method": "GET","protocol": "HTTP/1.1","data": "\/robots.txt"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 3,"percent": 0.66},"bytes": {"count": 3033,"percent": 0.01},"method": "GET","protocol": "HTTP/1.1","data": "\/css\/menu.css"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 28222,"percent": 0.10},"method": "GET","protocol": "HTTP/2.0","data": "\/static\/themes\/oscar\/css\/logicodev-dark.min.css"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 2,"percent": 0.44},"bytes": {"count": 16054,"percent": 0.06},"method": "GET","protocol": "HTTP/1.1","data": "\/static\/themes\/oscar\/css\/leaflet.min.css"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 2,"percent": 0.44},"bytes": {"count": 191572,"percent": 0.67},"method": "GET","protocol": "HTTP/1.1","data": "\/static\/js\/jquery-1.11.1.min.js"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 2,"percent": 0.44},"bytes": {"count": 30438,"percent": 0.11},"method": "GET","protocol": "HTTP/1.1","data": "\/static\/js\/require-2.1.15.min.js"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 2,"percent": 0.44},"bytes": {"count": 63638,"percent": 0.22},"method": "GET","protocol": "HTTP/1.1","data": "\/static\/js\/bootstrap.min.js"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 2,"percent": 0.44},"bytes": {"count": 10734,"percent": 0.04},"method": "GET","protocol": "HTTP/1.1","data": "\/static\/themes\/oscar\/js\/searx.min.js"},{"hits": {"count": 3,"percent": 0.44},"visitors": {"count": 2,"percent": 0.44},"bytes": {"count": 2914,"percent": 0.01},"method": "GET","protocol": "HTTP/1.1","data": "\/static\/plugins\/js\/search_on_category_select.js"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 2,"percent": 0.44},"bytes": {"count": 6374,"percent": 0.02},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/globe.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 2,"percent": 0.44},"bytes": {"count": 5168,"percent": 0.02},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/q.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 327034,"percent": 1.14},"method": "GET","protocol": "HTTP/1.1","data": "\/files\/agit.zip"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 253824,"percent": 0.88},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/yacy.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 326908,"percent": 1.14},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/jitsi.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 158290,"percent": 0.55},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/movim.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 187956,"percent": 0.65},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/searx.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 45412,"percent": 0.16},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/ecosia.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 293896,"percent": 1.02},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/thexyz.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 81336,"percent": 0.28},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/thumb1.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 106350,"percent": 0.37},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/thumb2.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 85798,"percent": 0.30},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/cockmail.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 310232,"percent": 1.08},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/peertube.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 152014,"percent": 0.53},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/mailfence.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 408085,"percent": 1.42},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/transport.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 58884,"percent": 0.20},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/tutanota_w.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 2,"percent": 0.44},"bytes": {"count": 9557,"percent": 0.03},"method": "GET","protocol": "HTTP/2.0","data": "\/static\/themes\/oscar\/img\/logo_searx_a.png"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 2,"percent": 0.44},"bytes": {"count": 1140,"percent": 0.00},"method": "GET","protocol": "HTTP/1.1","data": "\/css\/base.css"},{"hits": {"count": 2,"percent": 0.29},"visitors": {"count": 2,"percent": 0.44},"bytes": {"count": 21342,"percent": 0.07},"method": "GET","protocol": "HTTP/1.1","data": "\/static\/themes\/oscar\/css\/logicodev.min.css"},{"hits": {"count": 1,"percent": 0.15},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 95,"percent": 0.00},"method": "GET","protocol": "HTTP/1.0","data": "\/robots.txt"},{"hits": {"count": 1,"percent": 0.15},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 1853,"percent": 0.01},"method": "GET","protocol": "HTTP/2.0","data": "\/favicon.ico"},{"hits": {"count": 1,"percent": 0.15},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 1853,"percent": 0.01},"method": "GET","protocol": "HTTP/1.1","data": "\/static\/themes\/oscar\/img\/favicon.png"},{"hits": {"count": 1,"percent": 0.15},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 0,"percent": 0.00},"method": "GET","protocol": "HTTP/1.1","data": "\/static\/themes\/oscar\/css\/logicodev-dark.min.css"},{"hits": {"count": 1,"percent": 0.15},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 9557,"percent": 0.03},"method": "GET","protocol": "HTTP/1.1","data": "\/static\/themes\/oscar\/img\/logo_searx_a.png"},{"hits": {"count": 1,"percent": 0.15},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 3960,"percent": 0.01},"method": "GET","protocol": "HTTP/1.1","data": "\/static\/themes\/oscar\/img\/icons\/wikipedia.png"},{"hits": {"count": 1,"percent": 0.15},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 78904,"percent": 0.27},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/tutanota.png"},{"hits": {"count": 1,"percent": 0.15},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 46742,"percent": 0.16},"method": "GET","protocol": "HTTP/1.1","data": "\/banner.gif"},{"hits": {"count": 1,"percent": 0.15},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 135304,"percent": 0.47},"method": "GET","protocol": "HTTP/1.1","data": "\/fonts\/comfortaa.ttf"},{"hits": {"count": 1,"percent": 0.15},"visitors": {"count": 1,"percent": 0.22},"bytes": {"count": 89,"percent": 0.00},"method": "GET","protocol": "HTTP/2.0","data": "\/static\/plugins\/js\/open_results_on_new_tab.js"}]},"not_found": {"metadata": {"bytes": {"count": 17324,"max": 4975,"min": 0},"visitors": {"count": 0,"max": 0,"min": 0},"hits": {"count": 131,"max": 36,"min": 1},"data": {"unique": 18}},"data": [{"hits": {"count": 36,"percent": 27.48},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 4975,"percent": 28.72},"method": "GET","protocol": "HTTP/2.0","data": "\/css\/popup.css"},{"hits": {"count": 28,"percent": 21.37},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 3479,"percent": 20.08},"method": "GET","protocol": "HTTP/1.1","data": "\/robots.txt"},{"hits": {"count": 20,"percent": 15.27},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 2913,"percent": 16.81},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/koshka.jpg"},{"hits": {"count": 9,"percent": 6.87},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 1137,"percent": 6.56},"method": "GET","protocol": "HTTP/2.0","data": "\/images\/posteo.jpg"},{"hits": {"count": 7,"percent": 5.34},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 925,"percent": 5.34},"method": "GET","protocol": "HTTP/2.0","data": "\/favicon.ico"},{"hits": {"count": 6,"percent": 4.58},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 1068,"percent": 6.16},"method": "GET","protocol": "HTTP/1.1","data": "\/css\/popup.css"},{"hits": {"count": 6,"percent": 4.58},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 702,"percent": 4.05},"method": "GET","protocol": "HTTP/1.1","data": "\/favicon.ico"},{"hits": {"count": 3,"percent": 2.29},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 351,"percent": 2.03},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/koshka.jpg"},{"hits": {"count": 3,"percent": 2.29},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 318,"percent": 1.84},"method": "GET","protocol": "HTTP/2.0","data": "\/robots.txt"},{"hits": {"count": 2,"percent": 1.53},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 292,"percent": 1.69},"method": "GET","protocol": "HTTP/1.0","data": "\/robots.txt"},{"hits": {"count": 2,"percent": 1.53},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 0,"percent": 0.00},"method": "HEAD","protocol": "HTTP/1.1","data": "\/favicon.ico"},{"hits": {"count": 2,"percent": 1.53},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 234,"percent": 1.35},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/posteo.jpg"},{"hits": {"count": 2,"percent": 1.53},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 234,"percent": 1.35},"method": "GET","protocol": "HTTP/1.1","data": "\/images\/mastodon.png"},{"hits": {"count": 1,"percent": 0.76},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 167,"percent": 0.96},"method": "GET","protocol": "HTTP/2.0","data": "\/apple-touch-icon.png"},{"hits": {"count": 1,"percent": 0.76},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 178,"percent": 1.03},"method": "GET","protocol": "HTTP/1.1","data": "\/banner.gif\/a"},{"hits": {"count": 1,"percent": 0.76},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.68},"method": "GET","protocol": "HTTP/1.1","data": "\/wp-login.php"},{"hits": {"count": 1,"percent": 0.76},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.68},"method": "GET","protocol": "HTTP/1.1","data": "\/humans.txt"},{"hits": {"count": 1,"percent": 0.76},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.68},"method": "GET","protocol": "HTTP/1.1","data": "\/ads.txt"}]},"hosts": {"metadata": {"bytes": {"count": 31609001,"max": 3589888,"min": 95},"visitors": {"count": 201,"max": 106,"min": 1},"hits": {"count": 1134,"max": 140,"min": 1},"data": {"unique": 107}},"data": [{"hits": {"count": 140,"percent": 12.35},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 961026,"percent": 3.04},"data": "95.188.64.218","country": "RU Russian Federation"},{"hits": {"count": 121,"percent": 10.67},"visitors": {"count": 106,"percent": 52.74},"bytes": {"count": 1866178,"percent": 5.90},"data": "109.102.111.32","country": "RO Romania"},{"hits": {"count": 60,"percent": 5.29},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 2352545,"percent": 7.44},"data": "5.16.126.82","country": "RU Russian Federation"},{"hits": {"count": 58,"percent": 5.11},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2830113,"percent": 8.95},"data": "188.243.113.179","country": "RU Russian Federation"},{"hits": {"count": 57,"percent": 5.03},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3589888,"percent": 11.36},"data": "216.18.204.197","country": "US United States"},{"hits": {"count": 56,"percent": 4.94},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 892875,"percent": 2.82},"data": "82.208.112.74","country": "RU Russian Federation"},{"hits": {"count": 52,"percent": 4.59},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 1971752,"percent": 6.24},"data": "81.177.127.135","country": "RU Russian Federation"},{"hits": {"count": 48,"percent": 4.23},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 1958994,"percent": 6.20},"data": "95.24.23.19","country": "RU Russian Federation"},{"hits": {"count": 43,"percent": 3.79},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 1453778,"percent": 4.60},"data": "109.60.187.30","country": "RU Russian Federation"},{"hits": {"count": 39,"percent": 3.44},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 1682269,"percent": 5.32},"data": "217.144.173.165","country": "RU Russian Federation"},{"hits": {"count": 36,"percent": 3.17},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 987484,"percent": 3.12},"data": "82.145.208.45","country": "EU Europe"},{"hits": {"count": 28,"percent": 2.47},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 176,"percent": 0.00},"data": "5.165.137.122","country": "RU Russian Federation"},{"hits": {"count": 27,"percent": 2.38},"visitors": {"count": 3,"percent": 1.49},"bytes": {"count": 1285370,"percent": 4.07},"data": "31.29.192.200","country": "RU Russian Federation"},{"hits": {"count": 24,"percent": 2.12},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 358287,"percent": 1.13},"data": "89.188.125.202","country": "RU Russian Federation"},{"hits": {"count": 24,"percent": 2.12},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 1239753,"percent": 3.92},"data": "195.60.231.136","country": "UA Ukraine"},{"hits": {"count": 21,"percent": 1.85},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 1034431,"percent": 3.27},"data": "88.155.12.64","country": "UA Ukraine"},{"hits": {"count": 19,"percent": 1.68},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 478539,"percent": 1.51},"data": "5.45.207.170","country": "RU Russian Federation"},{"hits": {"count": 18,"percent": 1.59},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 390245,"percent": 1.23},"data": "94.25.167.44","country": "RU Russian Federation"},{"hits": {"count": 17,"percent": 1.50},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 819057,"percent": 2.59},"data": "217.66.152.139","country": "RU Russian Federation"},{"hits": {"count": 14,"percent": 1.23},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 166271,"percent": 0.53},"data": "217.66.154.67","country": "RU Russian Federation"},{"hits": {"count": 14,"percent": 1.23},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 645856,"percent": 2.04},"data": "185.220.100.254","country": "DE Germany"},{"hits": {"count": 14,"percent": 1.23},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 333769,"percent": 1.06},"data": "178.163.65.43","country": "RU Russian Federation"},{"hits": {"count": 13,"percent": 1.15},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 599114,"percent": 1.90},"data": "31.29.192.22","country": "RU Russian Federation"},{"hits": {"count": 13,"percent": 1.15},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 645750,"percent": 2.04},"data": "51.75.144.43","country": "DE Germany"},{"hits": {"count": 13,"percent": 1.15},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 645811,"percent": 2.04},"data": "92.126.198.67","country": "RU Russian Federation"},{"hits": {"count": 13,"percent": 1.15},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 584004,"percent": 1.85},"data": "92.100.251.63","country": "RU Russian Federation"},{"hits": {"count": 12,"percent": 1.06},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 755521,"percent": 2.39},"data": "95.181.23.188","country": "RU Russian Federation"},{"hits": {"count": 12,"percent": 1.06},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 633969,"percent": 2.01},"data": "213.227.154.108","country": "NL Netherlands"},{"hits": {"count": 7,"percent": 0.62},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 9974,"percent": 0.03},"data": "159.65.221.53","country": "US United States"},{"hits": {"count": 5,"percent": 0.44},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 4677,"percent": 0.01},"data": "66.249.75.231","country": "US United States"},{"hits": {"count": 4,"percent": 0.35},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17802,"percent": 0.06},"data": "62.231.95.186","country": "RO Romania"},{"hits": {"count": 4,"percent": 0.35},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 468,"percent": 0.00},"data": "176.59.46.28","country": "RU Russian Federation"},{"hits": {"count": 4,"percent": 0.35},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 16172,"percent": 0.05},"data": "216.18.204.202","country": "US United States"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 10701,"percent": 0.03},"data": "113.31.115.156","country": "CN China"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 10701,"percent": 0.03},"data": "66.249.69.83","country": "US United States"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 9507,"percent": 0.03},"data": "5.255.253.107","country": "RU Russian Federation"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 3929,"percent": 0.01},"data": "66.249.72.61","country": "US United States"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 14640,"percent": 0.05},"data": "94.25.167.86","country": "RU Russian Federation"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3035,"percent": 0.01},"data": "66.249.69.73","country": "US United States"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 4809,"percent": 0.02},"data": "195.211.23.206","country": "RU Russian Federation"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 234,"percent": 0.00},"data": "185.191.171.23","country": "NL Netherlands"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2598,"percent": 0.01},"data": "185.191.171.6","country": "NL Netherlands"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 234,"percent": 0.00},"data": "157.55.39.36","country": "US United States"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 5542,"percent": 0.02},"data": "5.255.253.117","country": "RU Russian Federation"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 14582,"percent": 0.05},"data": "66.102.9.89","country": "US United States"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 2801,"percent": 0.01},"data": "150.95.142.171","country": "JP Japan"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 292,"percent": 0.00},"data": "216.244.66.240","country": "US United States"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 5420,"percent": 0.02},"data": "66.249.93.203","country": "RE Reunion"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 356,"percent": 0.00},"data": "66.249.75.233","country": "US United States"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 6590,"percent": 0.02},"data": "176.126.240.158","country": "GB United Kingdom"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2918,"percent": 0.01},"data": "66.249.72.57","country": "US United States"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2979,"percent": 0.01},"data": "66.249.72.59","country": "US United States"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 234,"percent": 0.00},"data": "176.59.46.134","country": "RU Russian Federation"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 234,"percent": 0.00},"data": "207.46.13.220","country": "US United States"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 10080,"percent": 0.03},"data": "66.249.69.71","country": "US United States"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 21318,"percent": 0.07},"data": "173.231.58.194","country": "US United States"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3622,"percent": 0.01},"data": "199.16.157.182","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 11781,"percent": 0.04},"data": "195.211.23.207","country": "RU Russian Federation"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 11781,"percent": 0.04},"data": "95.142.197.130","country": "RU Russian Federation"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2811,"percent": 0.01},"data": "185.191.171.4","country": "NL Netherlands"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "185.191.171.22","country": "NL Netherlands"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3476,"percent": 0.01},"data": "185.191.171.1","country": "NL Netherlands"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "185.191.171.18","country": "NL Netherlands"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "17.58.100.126","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2801,"percent": 0.01},"data": "17.58.97.44","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 7070,"percent": 0.02},"data": "122.226.102.227","country": "CN China"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3676,"percent": 0.01},"data": "207.46.13.106","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 106,"percent": 0.00},"data": "54.36.148.210","country": "FR France"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2789,"percent": 0.01},"data": "54.36.149.19","country": "FR France"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 1853,"percent": 0.01},"data": "159.224.202.50","country": "UA Ukraine"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 8038,"percent": 0.03},"data": "196.244.192.14","country": "SC Seychelles"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 106,"percent": 0.00},"data": "54.36.148.199","country": "FR France"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 95,"percent": 0.00},"data": "35.239.58.193","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "114.119.140.70","country": "CN China"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "114.119.156.114","country": "CN China"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "114.119.155.200","country": "CN China"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 10491,"percent": 0.03},"data": "52.12.191.171","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2789,"percent": 0.01},"data": "54.36.149.84","country": "FR France"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 10491,"percent": 0.03},"data": "209.17.96.242","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2469,"percent": 0.01},"data": "54.36.148.68","country": "FR France"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 15552,"percent": 0.05},"data": "35.227.62.178","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "66.220.149.35","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3476,"percent": 0.01},"data": "31.13.127.10","country": "IE Ireland"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3476,"percent": 0.01},"data": "31.13.127.14","country": "IE Ireland"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 15552,"percent": 0.05},"data": "35.196.132.85","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 146,"percent": 0.00},"data": "95.163.255.232","country": "RU Russian Federation"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 78904,"percent": 0.25},"data": "95.163.255.201","country": "RU Russian Federation"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2801,"percent": 0.01},"data": "66.249.69.75","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2801,"percent": 0.01},"data": "66.102.9.74","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 11781,"percent": 0.04},"data": "66.102.9.71","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "31.13.115.10","country": "IE Ireland"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2355,"percent": 0.01},"data": "185.253.96.16","country": "NL Netherlands"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 7070,"percent": 0.02},"data": "62.152.55.125","country": "RU Russian Federation"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "134.209.165.92","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 106,"percent": 0.00},"data": "54.36.148.108","country": "FR France"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2355,"percent": 0.01},"data": "185.191.171.11","country": "NL Netherlands"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 4679,"percent": 0.01},"data": "54.36.149.107","country": "FR France"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 7070,"percent": 0.02},"data": "209.17.96.106","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "185.191.171.34","country": "NL Netherlands"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 4692,"percent": 0.01},"data": "185.191.171.5","country": "NL Netherlands"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "192.71.2.171","country": "SE Sweden"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "192.71.3.26","country": "SE Sweden"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "192.71.126.175","country": "SE Sweden"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2801,"percent": 0.01},"data": "192.71.44.44","country": "SE Sweden"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 95,"percent": 0.00},"data": "66.249.69.81","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 7070,"percent": 0.02},"data": "209.17.96.186","country": "US United States"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2801,"percent": 0.01},"data": "185.191.171.25","country": "NL Netherlands"}]},"os": {"metadata": {"bytes": {"count": 31609001,"max": 15016069,"min": 2801},"visitors": {"count": 201,"max": 42,"min": 1},"hits": {"count": 1134,"max": 480,"min": 1},"data": {"unique": 35}},"data": [{"hits": {"count": 678,"percent": 59.79},"visitors": {"count": 91,"percent": 45.27},"bytes": {"count": 19794234,"percent": 62.62},"data": "Windows","items": [{"hits": {"count": 480,"percent": 42.33},"visitors": {"count": 19,"percent": 9.45},"bytes": {"count": 15016069,"percent": 47.51},"data": "Windows 10"},{"hits": {"count": 121,"percent": 10.67},"visitors": {"count": 42,"percent": 20.90},"bytes": {"count": 3612728,"percent": 11.43},"data": "Windows 7"},{"hits": {"count": 45,"percent": 3.97},"visitors": {"count": 17,"percent": 8.46},"bytes": {"count": 286118,"percent": 0.91},"data": "Windows 8.1"},{"hits": {"count": 20,"percent": 1.76},"visitors": {"count": 7,"percent": 3.48},"bytes": {"count": 753592,"percent": 2.38},"data": "Windows XP"},{"hits": {"count": 5,"percent": 0.44},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 4144,"percent": 0.01},"data": "bingbot\/2.0"},{"hits": {"count": 5,"percent": 0.44},"visitors": {"count": 4,"percent": 1.99},"bytes": {"count": 86845,"percent": 0.27},"data": "Windows 8"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 34738,"percent": 0.11},"data": "Windows Vista"}]},{"hits": {"count": 142,"percent": 12.52},"visitors": {"count": 37,"percent": 18.41},"bytes": {"count": 4267740,"percent": 13.50},"data": "Unknown","items": [{"hits": {"count": 142,"percent": 12.52},"visitors": {"count": 37,"percent": 18.41},"bytes": {"count": 4267740,"percent": 13.50},"data": "Unknown"}]},{"hits": {"count": 124,"percent": 10.93},"visitors": {"count": 23,"percent": 11.44},"bytes": {"count": 3578613,"percent": 11.32},"data": "Android","items": [{"hits": {"count": 74,"percent": 6.53},"visitors": {"count": 6,"percent": 2.99},"bytes": {"count": 2625966,"percent": 8.31},"data": "Android 9"},{"hits": {"count": 17,"percent": 1.50},"visitors": {"count": 5,"percent": 2.49},"bytes": {"count": 700726,"percent": 2.22},"data": "KitKat 4.4"},{"hits": {"count": 16,"percent": 1.41},"visitors": {"count": 5,"percent": 2.49},"bytes": {"count": 18354,"percent": 0.06},"data": "Marshmallow 6.0.1"},{"hits": {"count": 10,"percent": 0.88},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 154156,"percent": 0.49},"data": "Android 10"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 7134,"percent": 0.02},"data": "Marshmallow 6.0"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 34738,"percent": 0.11},"data": "Lollipop 5.1"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 34738,"percent": 0.11},"data": "Lollipop 5.0"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2801,"percent": 0.01},"data": "Android"}]},{"hits": {"count": 120,"percent": 10.58},"visitors": {"count": 13,"percent": 6.47},"bytes": {"count": 2423401,"percent": 7.67},"data": "Linux","items": [{"hits": {"count": 69,"percent": 6.08},"visitors": {"count": 10,"percent": 4.98},"bytes": {"count": 1542165,"percent": 4.88},"data": "Linux"},{"hits": {"count": 51,"percent": 4.50},"visitors": {"count": 3,"percent": 1.49},"bytes": {"count": 881236,"percent": 2.79},"data": "Ubuntu"}]},{"hits": {"count": 44,"percent": 3.88},"visitors": {"count": 20,"percent": 9.95},"bytes": {"count": 1343580,"percent": 4.25},"data": "Macintosh","items": [{"hits": {"count": 22,"percent": 1.94},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 1037998,"percent": 3.28},"data": "OS X El Capitan"},{"hits": {"count": 11,"percent": 0.97},"visitors": {"count": 10,"percent": 4.98},"bytes": {"count": 177257,"percent": 0.56},"data": "OS X Yosemite"},{"hits": {"count": 4,"percent": 0.35},"visitors": {"count": 3,"percent": 1.49},"bytes": {"count": 38562,"percent": 0.12},"data": "OS X Mavericks"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2918,"percent": 0.01},"data": "OS X Puma"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 34738,"percent": 0.11},"data": "OS X Mountain Lion"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 34738,"percent": 0.11},"data": "OS X Snow Leopard"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "OS X Lion"}]},{"hits": {"count": 14,"percent": 1.23},"visitors": {"count": 7,"percent": 3.48},"bytes": {"count": 23919,"percent": 0.08},"data": "Unix-like","items": [{"hits": {"count": 14,"percent": 1.23},"visitors": {"count": 7,"percent": 3.48},"bytes": {"count": 23919,"percent": 0.08},"data": "Googlebot\/2.1"}]},{"hits": {"count": 12,"percent": 1.06},"visitors": {"count": 10,"percent": 4.98},"bytes": {"count": 177514,"percent": 0.56},"data": "iOS","items": [{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 52107,"percent": 0.16},"data": "iPad OS 8.1.38.1.3"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3824,"percent": 0.01},"data": "iPad OS 6.0.16.0.1"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "iPhone OS 8.0"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "iPad OS 8.4.18.4.1"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "iPad OS 5.1.1"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "iPad OS 7.1.27.1.2"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "iPad OS 8.1"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "iPad OS 7.0.27.0.2"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "iPhone OS 8.4.1"}]}]},"browsers": {"metadata": {"bytes": {"count": 31609001,"max": 5820496,"min": 117},"visitors": {"count": 201,"max": 17,"min": 1},"hits": {"count": 1134,"max": 301,"min": 1},"data": {"unique": 93}},"data": [{"hits": {"count": 495,"percent": 43.65},"visitors": {"count": 27,"percent": 13.43},"bytes": {"count": 12723678,"percent": 40.25},"data": "Firefox","items": [{"hits": {"count": 301,"percent": 26.54},"visitors": {"count": 7,"percent": 3.48},"bytes": {"count": 5820496,"percent": 18.41},"data": "Firefox\/80.0"},{"hits": {"count": 71,"percent": 6.26},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 3429227,"percent": 10.85},"data": "Firefox\/78.0"},{"hits": {"count": 55,"percent": 4.85},"visitors": {"count": 4,"percent": 1.99},"bytes": {"count": 1809986,"percent": 5.73},"data": "Firefox\/68.0"},{"hits": {"count": 24,"percent": 2.12},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 358287,"percent": 1.13},"data": "Firefox\/68.9"},{"hits": {"count": 18,"percent": 1.59},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 474615,"percent": 1.50},"data": "Firefox\/76.0"},{"hits": {"count": 12,"percent": 1.06},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 633969,"percent": 2.01},"data": "Firefox\/77.0"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 38305,"percent": 0.12},"data": "Firefox\/41.0"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 34738,"percent": 0.11},"data": "Firefox\/29.0"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 34738,"percent": 0.11},"data": "Firefox\/39.0"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Firefox\/37.0"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Firefox\/40.0"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Firefox\/35.0"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Firefox\/27.0"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Firefox\/36.0"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2355,"percent": 0.01},"data": "Firefox\/17.0"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "Firefox\/62.0"}]},{"hits": {"count": 202,"percent": 17.81},"visitors": {"count": 24,"percent": 11.94},"bytes": {"count": 8348875,"percent": 26.41},"data": "Others","items": [{"hits": {"count": 81,"percent": 7.14},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 3560199,"percent": 11.26},"data": "YaBrowser\/20.8.2.95"},{"hits": {"count": 76,"percent": 6.70},"visitors": {"count": 15,"percent": 7.46},"bytes": {"count": 3773138,"percent": 11.94},"data": "Mozilla\/5.0"},{"hits": {"count": 17,"percent": 1.50},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 819057,"percent": 2.59},"data": "YaBrowser\/20.8.0.161.00"},{"hits": {"count": 14,"percent": 1.23},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 166271,"percent": 0.53},"data": "YaBrowser\/20.8.0.174.00"},{"hits": {"count": 8,"percent": 0.71},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 7836,"percent": 0.02},"data": "Dalvik\/2.1.0"},{"hits": {"count": 4,"percent": 0.35},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3152,"percent": 0.01},"data": "Go-http-client\/1.1"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 1853,"percent": 0.01},"data": "YaBrowser\/20.3.2.238"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "SeaMonkey\/2.35"}]},{"hits": {"count": 199,"percent": 17.55},"visitors": {"count": 63,"percent": 31.34},"bytes": {"count": 6925976,"percent": 21.91},"data": "Chrome","items": [{"hits": {"count": 73,"percent": 6.44},"visitors": {"count": 3,"percent": 1.49},"bytes": {"count": 3298519,"percent": 10.44},"data": "Chrome\/85.0.4183.102"},{"hits": {"count": 21,"percent": 1.85},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 1034431,"percent": 3.27},"data": "Chrome\/84.0.4147.89"},{"hits": {"count": 14,"percent": 1.23},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 333769,"percent": 1.06},"data": "Chrome\/84.0.4147.135"},{"hits": {"count": 13,"percent": 1.15},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 645811,"percent": 2.04},"data": "Chrome\/49.0.2623.112"},{"hits": {"count": 13,"percent": 1.15},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 645811,"percent": 2.04},"data": "Chrome\/81.0.4044.138"},{"hits": {"count": 7,"percent": 0.62},"visitors": {"count": 6,"percent": 2.99},"bytes": {"count": 121583,"percent": 0.38},"data": "Chrome\/44.0.2403.155"},{"hits": {"count": 4,"percent": 0.35},"visitors": {"count": 3,"percent": 1.49},"bytes": {"count": 38562,"percent": 0.12},"data": "Chrome\/45.0.2454.85"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 52107,"percent": 0.16},"data": "Chrome\/40.0.2214.93"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 3,"percent": 1.49},"bytes": {"count": 52107,"percent": 0.16},"data": "Chrome\/38.0.2125.102"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 3,"percent": 1.49},"bytes": {"count": 52107,"percent": 0.16},"data": "Chrome\/30.0.1599.101"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 52107,"percent": 0.16},"data": "Chrome\/38.0.2125.122"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 21193,"percent": 0.07},"data": "Chrome\/42.0.2311.135"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 21193,"percent": 0.07},"data": "Chrome\/42.0.2311.152"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 20177,"percent": 0.06},"data": "Chrome\/45.0.2454.84"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3824,"percent": 0.01},"data": "Chrome\/43.0.2357.132"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 34738,"percent": 0.11},"data": "Chrome\/37.0.2062.94"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 34738,"percent": 0.11},"data": "CriOS\/45.0.2454.68"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 34738,"percent": 0.11},"data": "Chrome\/44.0.2403.130"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 34738,"percent": 0.11},"data": "Chrome\/44.0.2403.128"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 34738,"percent": 0.11},"data": "Chrome\/40.0.2214.111"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 34738,"percent": 0.11},"data": "Chrome\/46.0.2490.13"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3567,"percent": 0.01},"data": "Chrome\/47.0.2526.106"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 8038,"percent": 0.03},"data": "Chrome\/66.0.3359.181"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/41.0.2272.101"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/37.0.2062.103"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/47.0.2503.0"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "CriOS\/19.0.1084.60"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/44.0.2403.157"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/41.0.2272.118"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/31.0.1650.63"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/42.0.2311.90"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/40.0.2214.91"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/38.0.2125.104"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/43.0.2357.134"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/35.0.1916.153"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/39.0.2171.65"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/39.0.2171.93"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/32.0.1700.107"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/36.0.1985.143"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/44.0.2403.125"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Chrome\/31.0.1650.59"}]},{"hits": {"count": 89,"percent": 7.85},"visitors": {"count": 4,"percent": 1.99},"bytes": {"count": 2230980,"percent": 7.06},"data": "Opera","items": [{"hits": {"count": 36,"percent": 3.17},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 987484,"percent": 3.12},"data": "Opera\/59.1.2926.54067"},{"hits": {"count": 28,"percent": 2.47},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 176,"percent": 0.00},"data": "Opera\/70.0.3728.178 (Edition Yx)"},{"hits": {"count": 24,"percent": 2.12},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 1239753,"percent": 3.92},"data": "Opera\/70.0.3728.178"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3567,"percent": 0.01},"data": "Opera\/31.0.1889.174"}]},{"hits": {"count": 88,"percent": 7.76},"visitors": {"count": 36,"percent": 17.91},"bytes": {"count": 696399,"percent": 2.20},"data": "Crawlers","items": [{"hits": {"count": 24,"percent": 2.12},"visitors": {"count": 12,"percent": 5.97},"bytes": {"count": 41571,"percent": 0.13},"data": "Googlebot\/2.1"},{"hits": {"count": 17,"percent": 1.50},"visitors": {"count": 3,"percent": 1.49},"bytes": {"count": 34336,"percent": 0.11},"data": "YandexBot\/3.0"},{"hits": {"count": 12,"percent": 1.06},"visitors": {"count": 6,"percent": 2.99},"bytes": {"count": 19318,"percent": 0.06},"data": "SemrushBot\/6~bl"},{"hits": {"count": 7,"percent": 0.62},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 459252,"percent": 1.45},"data": "Images\/3.0"},{"hits": {"count": 6,"percent": 0.53},"visitors": {"count": 4,"percent": 1.99},"bytes": {"count": 34584,"percent": 0.11},"data": "Google"},{"hits": {"count": 5,"percent": 0.44},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 4144,"percent": 0.01},"data": "bingbot\/2.0"},{"hits": {"count": 4,"percent": 0.35},"visitors": {"count": 4,"percent": 1.99},"bytes": {"count": 12726,"percent": 0.04},"data": "AhrefsBot\/7.0"},{"hits": {"count": 4,"percent": 0.35},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 7186,"percent": 0.02},"data": "facebookexternalhit\/1.1"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 318,"percent": 0.00},"data": "AhrefsBot\/6.1"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 292,"percent": 0.00},"data": "DotBot\/1.1"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 79050,"percent": 0.25},"data": "Mail.RU_Bot\/2.0"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3622,"percent": 0.01},"data": "Twitterbot\/1.0"}]},{"hits": {"count": 32,"percent": 2.82},"visitors": {"count": 29,"percent": 14.43},"bytes": {"count": 514595,"percent": 1.63},"data": "MSIE","items": [{"hits": {"count": 19,"percent": 1.68},"visitors": {"count": 17,"percent": 8.46},"bytes": {"count": 330011,"percent": 1.04},"data": "MSIE\/11.0"},{"hits": {"count": 5,"percent": 0.44},"visitors": {"count": 4,"percent": 1.99},"bytes": {"count": 55931,"percent": 0.18},"data": "MSIE\/7.0"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 3,"percent": 1.49},"bytes": {"count": 41808,"percent": 0.13},"data": "MSIE\/9.0"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 3,"percent": 1.49},"bytes": {"count": 52107,"percent": 0.16},"data": "MSIE\/10.0"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 34738,"percent": 0.11},"data": "MSIE\/8.0"}]},{"hits": {"count": 18,"percent": 1.59},"visitors": {"count": 9,"percent": 4.48},"bytes": {"count": 40173,"percent": 0.13},"data": "Unknown","items": [{"hits": {"count": 18,"percent": 1.59},"visitors": {"count": 9,"percent": 4.48},"bytes": {"count": 40173,"percent": 0.13},"data": "Unknown"}]},{"hits": {"count": 11,"percent": 0.97},"visitors": {"count": 9,"percent": 4.48},"bytes": {"count": 128325,"percent": 0.41},"data": "Safari","items": [{"hits": {"count": 4,"percent": 0.35},"visitors": {"count": 4,"percent": 1.99},"bytes": {"count": 69476,"percent": 0.22},"data": "Safari\/600.1.4"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 2918,"percent": 0.01},"data": "Safari\/605.1.15"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3824,"percent": 0.01},"data": "Safari\/8536.25"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Safari\/537.36"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Safari\/537.75.14"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 17369,"percent": 0.05},"data": "Safari\/9537.53"}]}]},"visit_time": {"metadata": {"bytes": {"count": 31609001,"max": 5693384,"min": 117},"visitors": {"count": 228,"max": 111,"min": 1},"hits": {"count": 1134,"max": 156,"min": 1},"data": {"unique": 24}},"data": [{"hits": {"count": 96,"percent": 8.47},"visitors": {"count": 10,"percent": 4.39},"bytes": {"count": 2650362,"percent": 8.38},"data": "00"},{"hits": {"count": 22,"percent": 1.94},"visitors": {"count": 4,"percent": 1.75},"bytes": {"count": 841685,"percent": 2.66},"data": "01"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 2,"percent": 0.88},"bytes": {"count": 9988,"percent": 0.03},"data": "02"},{"hits": {"count": 15,"percent": 1.32},"visitors": {"count": 7,"percent": 3.07},"bytes": {"count": 471785,"percent": 1.49},"data": "03"},{"hits": {"count": 5,"percent": 0.44},"visitors": {"count": 2,"percent": 0.88},"bytes": {"count": 21369,"percent": 0.07},"data": "04"},{"hits": {"count": 92,"percent": 8.11},"visitors": {"count": 7,"percent": 3.07},"bytes": {"count": 2858642,"percent": 9.04},"data": "05"},{"hits": {"count": 30,"percent": 2.65},"visitors": {"count": 5,"percent": 2.19},"bytes": {"count": 1229333,"percent": 3.89},"data": "06"},{"hits": {"count": 14,"percent": 1.23},"visitors": {"count": 2,"percent": 0.88},"bytes": {"count": 653788,"percent": 2.07},"data": "07"},{"hits": {"count": 57,"percent": 5.03},"visitors": {"count": 3,"percent": 1.32},"bytes": {"count": 1388219,"percent": 4.39},"data": "08"},{"hits": {"count": 45,"percent": 3.97},"visitors": {"count": 3,"percent": 1.32},"bytes": {"count": 1688124,"percent": 5.34},"data": "09"},{"hits": {"count": 51,"percent": 4.50},"visitors": {"count": 9,"percent": 3.95},"bytes": {"count": 1261760,"percent": 3.99},"data": "10"},{"hits": {"count": 18,"percent": 1.59},"visitors": {"count": 2,"percent": 0.88},"bytes": {"count": 24011,"percent": 0.08},"data": "11"},{"hits": {"count": 60,"percent": 5.29},"visitors": {"count": 4,"percent": 1.75},"bytes": {"count": 426611,"percent": 1.35},"data": "12"},{"hits": {"count": 156,"percent": 13.76},"visitors": {"count": 111,"percent": 48.68},"bytes": {"count": 3062217,"percent": 9.69},"data": "13"},{"hits": {"count": 148,"percent": 13.05},"visitors": {"count": 14,"percent": 6.14},"bytes": {"count": 5693384,"percent": 18.01},"data": "14"},{"hits": {"count": 105,"percent": 9.26},"visitors": {"count": 14,"percent": 6.14},"bytes": {"count": 2519960,"percent": 7.97},"data": "15"},{"hits": {"count": 25,"percent": 2.20},"visitors": {"count": 2,"percent": 0.88},"bytes": {"count": 365357,"percent": 1.16},"data": "16"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 117,"percent": 0.00},"data": "17"},{"hits": {"count": 94,"percent": 8.29},"visitors": {"count": 7,"percent": 3.07},"bytes": {"count": 3124279,"percent": 9.88},"data": "18"},{"hits": {"count": 27,"percent": 2.38},"visitors": {"count": 6,"percent": 2.63},"bytes": {"count": 681198,"percent": 2.16},"data": "19"},{"hits": {"count": 37,"percent": 3.26},"visitors": {"count": 4,"percent": 1.75},"bytes": {"count": 1989968,"percent": 6.30},"data": "20"},{"hits": {"count": 21,"percent": 1.85},"visitors": {"count": 4,"percent": 1.75},"bytes": {"count": 613283,"percent": 1.94},"data": "21"},{"hits": {"count": 5,"percent": 0.44},"visitors": {"count": 1,"percent": 0.44},"bytes": {"count": 16289,"percent": 0.05},"data": "22"},{"hits": {"count": 7,"percent": 0.62},"visitors": {"count": 5,"percent": 2.19},"bytes": {"count": 17272,"percent": 0.05},"data": "23"}]},"referring_sites": {"metadata": {"bytes": {"count": 26052394,"max": 14282316,"min": 2789},"visitors": {"count": 47,"max": 16,"min": 1},"hits": {"count": 604,"max": 337,"min": 1},"data": {"unique": 11}},"data": [{"hits": {"count": 337,"percent": 55.79},"visitors": {"count": 16,"percent": 34.04},"bytes": {"count": 14282316,"percent": 54.82},"data": "switch.phreedom.tk"},{"hits": {"count": 166,"percent": 27.48},"visitors": {"count": 10,"percent": 21.28},"bytes": {"count": 8982506,"percent": 34.48},"data": "fedi.life"},{"hits": {"count": 53,"percent": 8.77},"visitors": {"count": 4,"percent": 8.51},"bytes": {"count": 2377491,"percent": 9.13},"data": "www.fedi.life"},{"hits": {"count": 34,"percent": 5.63},"visitors": {"count": 6,"percent": 12.77},"bytes": {"count": 357867,"percent": 1.37},"data": "search.fedi.life"},{"hits": {"count": 4,"percent": 0.66},"visitors": {"count": 4,"percent": 8.51},"bytes": {"count": 16826,"percent": 0.06},"data": "away.vk.com"},{"hits": {"count": 4,"percent": 0.66},"visitors": {"count": 1,"percent": 2.13},"bytes": {"count": 14363,"percent": 0.06},"data": "services.phreedom.tk"},{"hits": {"count": 2,"percent": 0.33},"visitors": {"count": 2,"percent": 4.26},"bytes": {"count": 5578,"percent": 0.02},"data": "www.youtube.com"},{"hits": {"count": 1,"percent": 0.17},"visitors": {"count": 1,"percent": 2.13},"bytes": {"count": 7070,"percent": 0.03},"data": "www.google.com"},{"hits": {"count": 1,"percent": 0.17},"visitors": {"count": 1,"percent": 2.13},"bytes": {"count": 2789,"percent": 0.01},"data": "4pda.ru"},{"hits": {"count": 1,"percent": 0.17},"visitors": {"count": 1,"percent": 2.13},"bytes": {"count": 2789,"percent": 0.01},"data": "mld-olaeb.com"},{"hits": {"count": 1,"percent": 0.17},"visitors": {"count": 1,"percent": 2.13},"bytes": {"count": 2799,"percent": 0.01},"data": "www.linux.org.ru"}]},"status_codes": {"metadata": {"bytes": {"count": 31609001,"max": 31578097,"min": 0},"visitors": {"count": 216,"max": 200,"min": 1},"hits": {"count": 1134,"max": 895,"min": 1},"data": {"unique": 6}},"data": [{"hits": {"count": 896,"percent": 79.01},"visitors": {"count": 201,"percent": 93.06},"bytes": {"count": 31589878,"percent": 99.94},"data": "2xx Success","items": [{"hits": {"count": 895,"percent": 78.92},"visitors": {"count": 200,"percent": 92.59},"bytes": {"count": 31578097,"percent": 99.90},"data": "200 - OK: The request sent by the client was successful"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.46},"bytes": {"count": 11781,"percent": 0.04},"data": "206 - Partial Content: The partial GET has been successful"}]},{"hits": {"count": 183,"percent": 16.14},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 17324,"percent": 0.05},"data": "4xx Client Error","items": [{"hits": {"count": 131,"percent": 11.55},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 17324,"percent": 0.05},"data": "404 - Not Found: Requested resource could not be found"},{"hits": {"count": 52,"percent": 4.59},"visitors": {"count": 0,"percent": 0.00},"bytes": {"count": 0,"percent": 0.00},"data": "499 - (Nginx) Connection closed by client while processing request"}]},{"hits": {"count": 55,"percent": 4.85},"visitors": {"count": 15,"percent": 6.94},"bytes": {"count": 1799,"percent": 0.01},"data": "3xx Redirection","items": [{"hits": {"count": 48,"percent": 4.23},"visitors": {"count": 8,"percent": 3.70},"bytes": {"count": 0,"percent": 0.00},"data": "304 - Not Modified: Resource has not been modified"},{"hits": {"count": 7,"percent": 0.62},"visitors": {"count": 7,"percent": 3.24},"bytes": {"count": 1799,"percent": 0.01},"data": "302 - Moved Temporarily (redirect)"}]}]},"geolocation": {"metadata": {"bytes": {"count": 31609001,"max": 20664398,"min": 2801},"visitors": {"count": 201,"max": 107,"min": 1},"hits": {"count": 1134,"max": 729,"min": 1},"data": {"unique": 15}},"data": [{"hits": {"count": 1004,"percent": 88.54},"visitors": {"count": 164,"percent": 81.59},"bytes": {"count": 27789002,"percent": 87.91},"data": "EU Europe","items": [{"hits": {"count": 729,"percent": 64.29},"visitors": {"count": 35,"percent": 17.41},"bytes": {"count": 20664398,"percent": 65.38},"data": "RU Russian Federation"},{"hits": {"count": 125,"percent": 11.02},"visitors": {"count": 107,"percent": 53.23},"bytes": {"count": 1883980,"percent": 5.96},"data": "RO Romania"},{"hits": {"count": 46,"percent": 4.06},"visitors": {"count": 3,"percent": 1.49},"bytes": {"count": 2276037,"percent": 7.20},"data": "UA Ukraine"},{"hits": {"count": 36,"percent": 3.17},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 987484,"percent": 3.12},"data": "EU Europe"},{"hits": {"count": 27,"percent": 2.38},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 1291606,"percent": 4.09},"data": "DE Germany"},{"hits": {"count": 25,"percent": 2.20},"visitors": {"count": 8,"percent": 3.98},"bytes": {"count": 655642,"percent": 2.07},"data": "NL Netherlands"},{"hits": {"count": 7,"percent": 0.62},"visitors": {"count": 4,"percent": 1.99},"bytes": {"count": 13044,"percent": 0.04},"data": "FR France"},{"hits": {"count": 4,"percent": 0.35},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 3152,"percent": 0.01},"data": "SE Sweden"},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 7069,"percent": 0.02},"data": "IE Ireland"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 6590,"percent": 0.02},"data": "GB United Kingdom"}]},{"hits": {"count": 118,"percent": 10.41},"visitors": {"count": 30,"percent": 14.93},"bytes": {"count": 3785618,"percent": 11.98},"data": "NA North America","items": [{"hits": {"count": 118,"percent": 10.41},"visitors": {"count": 30,"percent": 14.93},"bytes": {"count": 3785618,"percent": 11.98},"data": "US United States"}]},{"hits": {"count": 9,"percent": 0.79},"visitors": {"count": 5,"percent": 2.49},"bytes": {"count": 20923,"percent": 0.07},"data": "AS Asia","items": [{"hits": {"count": 7,"percent": 0.62},"visitors": {"count": 3,"percent": 1.49},"bytes": {"count": 18122,"percent": 0.06},"data": "CN China"},{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 2801,"percent": 0.01},"data": "JP Japan"}]},{"hits": {"count": 3,"percent": 0.26},"visitors": {"count": 2,"percent": 1.00},"bytes": {"count": 13458,"percent": 0.04},"data": "AF Africa","items": [{"hits": {"count": 2,"percent": 0.18},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 5420,"percent": 0.02},"data": "RE Reunion"},{"hits": {"count": 1,"percent": 0.09},"visitors": {"count": 1,"percent": 0.50},"bytes": {"count": 8038,"percent": 0.03},"data": "SC Seychelles"}]}]}}</script><script>!function(){var d3={version:"3.5.16"};var d3_arraySlice=[].slice,d3_array=function(list){return d3_arraySlice.call(list)};var d3_document=this.document;function d3_documentElement(node){return node&&(node.ownerDocument||node.document||node).documentElement}function d3_window(node){return node&&(node.ownerDocument&&node.ownerDocument.defaultView||node.document&&node||node.defaultView)}if(d3_document){try{d3_array(d3_document.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}}}if(!Date.now)Date.now=function(){return+new Date};if(d3_document){try{d3_document.createElement("DIV").style.setProperty("opacity",0,"")}catch(error){var d3_element_prototype=this.Element.prototype,d3_element_setAttribute=d3_element_prototype.setAttribute,d3_element_setAttributeNS=d3_element_prototype.setAttributeNS,d3_style_prototype=this.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=d3_ascending;function d3_ascending(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)if((b=array[i])!=null&&b>=b){a=b;break}while(++i<n)if((b=array[i])!=null&&a>b)a=b}else{while(++i<n)if((b=f.call(array,array[i],i))!=null&&b>=b){a=b;break}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)if((b=array[i])!=null&&b>=b){a=b;break}while(++i<n)if((b=array[i])!=null&&b>a)a=b}else{while(++i<n)if((b=f.call(array,array[i],i))!=null&&b>=b){a=b;break}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)if((b=array[i])!=null&&b>=b){a=c=b;break}while(++i<n)if((b=array[i])!=null){if(a>b)a=b;if(c<b)c=b}}else{while(++i<n)if((b=f.call(array,array[i],i))!=null&&b>=b){a=c=b;break}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]};function d3_number(x){return x===null?NaN:+x}function d3_numeric(x){return!isNaN(x)}d3.sum=function(array,f){var s=0,n=array.length,a,i=-1;if(arguments.length===1){while(++i<n)if(d3_numeric(a=+array[i]))s+=a}else{while(++i<n)if(d3_numeric(a=+f.call(array,array[i],i)))s+=a}return s};d3.mean=function(array,f){var s=0,n=array.length,a,i=-1,j=n;if(arguments.length===1){while(++i<n)if(d3_numeric(a=d3_number(array[i])))s+=a;else--j}else{while(++i<n)if(d3_numeric(a=d3_number(f.call(array,array[i],i))))s+=a;else--j}if(j)return s/j};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){var numbers=[],n=array.length,a,i=-1;if(arguments.length===1){while(++i<n)if(d3_numeric(a=d3_number(array[i])))numbers.push(a)}else{while(++i<n)if(d3_numeric(a=d3_number(f.call(array,array[i],i))))numbers.push(a)}if(numbers.length)return d3.quantile(numbers.sort(d3_ascending),.5)};d3.variance=function(array,f){var n=array.length,m=0,a,d,s=0,i=-1,j=0;if(arguments.length===1){while(++i<n){if(d3_numeric(a=d3_number(array[i]))){d=a-m;m+=d/++j;s+=d*(a-m)}}}else{while(++i<n){if(d3_numeric(a=d3_number(f.call(array,array[i],i)))){d=a-m;m+=d/++j;s+=d*(a-m)}}}if(j>1)return s/(j-1)};d3.deviation=function(){var v=d3.variance.apply(this,arguments);return v?Math.sqrt(v):v};function d3_bisector(compare){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(compare(a[mid],x)<0)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(compare(a[mid],x)>0)hi=mid;else lo=mid+1}return lo}}}var d3_bisect=d3_bisector(d3_ascending);d3.bisectLeft=d3_bisect.left;d3.bisect=d3.bisectRight=d3_bisect.right;d3.bisector=function(f){return d3_bisector(f.length===1?function(d,x){return d3_ascending(f(d),x)}:f)};d3.shuffle=function(array,i0,i1){if((m=arguments.length)<3){i1=array.length;if(m<2)i0=0}var m=i1-i0,t,i;while(m){i=Math.random()*m--|0;t=array[m+i0],array[m+i0]=array[i+i0],array[i+i0]=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.transpose=function(matrix){if(!(n=matrix.length))return[];for(var i=-1,m=d3.min(matrix,d3_transposeLength),transpose=new Array(m);++i<m;){for(var j=-1,n,row=transpose[i]=new Array(n);++j<n;){row[j]=matrix[j][i]}}return transpose};function d3_transposeLength(d){return d.length}d3.zip=function(){return d3.transpose(arguments)};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){var n=arrays.length,m,i=-1,j=0,merged,array;while(++i<n)j+=arrays[i].length;merged=new Array(j);while(--n>=0){array=arrays[n];m=array.length;while(--m>=0){merged[--j]=array[m]}}return merged};var abs=Math.abs;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(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){for(var key in properties){Object.defineProperty(ctor.prototype,key,{value:properties[key],enumerable:false})}}d3.map=function(object,f){var map=new d3_Map;if(object instanceof d3_Map){object.forEach(function(key,value){map.set(key,value)})}else if(Array.isArray(object)){var i=-1,n=object.length,o;if(arguments.length===1)while(++i<n)map.set(i,object[i]);else while(++i<n)map.set(f.call(object,o=object[i],i),o)}else{for(var key in object)map.set(key,object[key])}return map};function d3_Map(){this._=Object.create(null)}var d3_map_proto="__proto__",d3_map_zero="\0";d3_class(d3_Map,{has:d3_map_has,get:function(key){return this._[d3_map_escape(key)]},set:function(key,value){return this._[d3_map_escape(key)]=value},remove:d3_map_remove,keys:d3_map_keys,values:function(){var values=[];for(var key in this._)values.push(this._[key]);return values},entries:function(){var entries=[];for(var key in this._)entries.push({key:d3_map_unescape(key),value:this._[key]});return entries},size:d3_map_size,empty:d3_map_empty,forEach:function(f){for(var key in this._)f.call(this,d3_map_unescape(key),this._[key])}});function d3_map_escape(key){return(key+="")===d3_map_proto||key[0]===d3_map_zero?d3_map_zero+key:key}function d3_map_unescape(key){return(key+="")[0]===d3_map_zero?key.slice(1):key}function d3_map_has(key){return d3_map_escape(key)in this._}function d3_map_remove(key){return(key=d3_map_escape(key))in this._&&delete this._[key]}function d3_map_keys(){var keys=[];for(var key in this._)keys.push(d3_map_unescape(key));return keys}function d3_map_size(){var size=0;for(var key in this._)++size;return size}function d3_map_empty(){for(var key in this._)return false;return true}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(){this._=Object.create(null)}d3_class(d3_Set,{has:d3_map_has,add:function(key){this._[d3_map_escape(key+="")]=true;return key},remove:d3_map_remove,values:d3_map_keys,size:d3_map_size,empty:d3_map_empty,forEach:function(f){for(var key in this._)f.call(this,d3_map_unescape(key))}});d3.behavior={};function d3_identity(d){return d}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.slice(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.slice(i+1);type=type.slice(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_selectMatches=function(n,s){var d3_selectMatcher=n.matches||n[d3_vendorSymbol(n,"matchesSelector")];d3_selectMatches=function(n,s){return d3_selectMatcher.call(n,s)};return d3_selectMatches(n,s)};if(typeof Sizzle==="function"){d3_select=function(s,n){return Sizzle(s,n)[0]||null};d3_selectAll=Sizzle;d3_selectMatches=Sizzle.matchesSelector}d3.selection=function(){return d3.select(d3_document.documentElement)};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_nsXhtml="http://www.w3.org/1999/xhtml";var d3_nsPrefix={svg:"http://www.w3.org/2000/svg",xhtml:d3_nsXhtml,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.slice(0,i))!=="xmlns")name=name.slice(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=d3_selection_classes(name)).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_classes(name){return(name+"").trim().split(/^|\s+/)}function d3_selection_classed(name,value){name=d3_selection_classes(name).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){var node=this.node();return d3_window(node).getComputedStyle(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){function create(){var document=this.ownerDocument,namespace=this.namespaceURI;return namespace===d3_nsXhtml&&document.documentElement.namespaceURI===d3_nsXhtml?document.createElement(name):document.createElementNS(namespace,name)}function createNS(){return this.ownerDocument.createElementNS(name.space,name.local)}return typeof name==="function"?name:(name=d3.ns.qualify(name)).local?createNS:create}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)||null)})};d3_selectionPrototype.remove=function(){return this.each(d3_selectionRemove)};function d3_selectionRemove(){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,keyValues=new Array(n),keyValue;for(i=-1;++i<n;){if(node=group[i]){if(nodeByKeyValue.has(keyValue=key.call(node,node.__data__,i))){exitNodes[i]=node}else{nodeByKeyValue.set(keyValue,node)}keyValues[i]=keyValue}}for(i=-1;++i<m;){if(!(node=nodeByKeyValue.get(keyValue=key.call(groupData,nodeData=groupData[i],i)))){enterNodes[i]=d3_selection_dataNode(nodeData)}else if(node!==true){updateNodes[i]=node;node.__data__=nodeData}nodeByKeyValue.set(keyValue,true)}for(i=-1;++i<n;){if(i in keyValues&&nodeByKeyValue.get(keyValues[i])!==true){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,j)){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;d3_selection_each(this,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.select=function(node){var group;if(typeof node==="string"){group=[d3_select(node,d3_document)];group.parentNode=d3_document.documentElement}else{group=[node];group.parentNode=d3_documentElement(node)}return d3_selection([group])};d3.selectAll=function(nodes){var group;if(typeof nodes==="string"){group=d3_array(d3_selectAll(nodes,d3_document));group.parentNode=d3_document.documentElement}else{group=d3_array(nodes);group.parentNode=null}return d3_selection([group])};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.slice(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"});if(d3_document){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_event_dragId=0;function d3_event_dragSuppress(node){var name=".dragsuppress-"+ ++d3_event_dragId,click="click"+name,w=d3.select(d3_window(node)).on("touchmove"+name,d3_eventPreventDefault).on("dragstart"+name,d3_eventPreventDefault).on("selectstart"+name,d3_eventPreventDefault);if(d3_event_dragSelect==null){d3_event_dragSelect="onselectstart"in node?false:d3_vendorSymbol(node.style,"userSelect")}if(d3_event_dragSelect){var style=d3_documentElement(node).style,select=style[d3_event_dragSelect];style[d3_event_dragSelect]="none"}return function(suppressClick){w.on(name,null);if(d3_event_dragSelect)style[d3_event_dragSelect]=select;if(suppressClick){var off=function(){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=this.navigator&&/WebKit/.test(this.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){var window=d3_window(container);if(window.scrollX||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.touch=function(container,touches,identifier){if(arguments.length<3)identifier=touches,touches=d3_eventSource().changedTouches;if(touches)for(var i=0,n=touches.length,touch;i<n;++i){if((touch=touches[i]).identifier===identifier){return d3_mousePoint(container,touch)}}};d3.behavior.drag=function(){var event=d3_eventDispatch(drag,"drag","dragstart","dragend"),origin=null,mousedown=dragstart(d3_noop,d3.mouse,d3_window,"mousemove","mouseup"),touchstart=dragstart(d3_behavior_dragTouchId,d3.touch,d3_identity,"touchmove","touchend");function drag(){this.on("mousedown.drag",mousedown).on("touchstart.drag",touchstart)}function dragstart(id,position,subject,move,end){return function(){var that=this,target=d3.event.target.correspondingElement||d3.event.target,parent=that.parentNode,dispatch=event.of(that,arguments),dragged=0,dragId=id(),dragName=".drag"+(dragId==null?"":"-"+dragId),dragOffset,dragSubject=d3.select(subject(target)).on(move+dragName,moved).on(end+dragName,ended),dragRestore=d3_event_dragSuppress(target),position0=position(parent,dragId);if(origin){dragOffset=origin.apply(that,arguments);dragOffset=[dragOffset.x-position0[0],dragOffset.y-position0[1]]}else{dragOffset=[0,0]}dispatch({type:"dragstart"});function moved(){var position1=position(parent,dragId),dx,dy;if(!position1)return;dx=position1[0]-position0[0];dy=position1[1]-position0[1];dragged|=dx|dy;position0=position1;dispatch({type:"drag",x:position1[0]+dragOffset[0],y:position1[1]+dragOffset[1],dx:dx,dy:dy})}function ended(){if(!position(parent,dragId))return;dragSubject.on(move+dragName,null).on(end+dragName,null);dragRestore(dragged);dispatch({type:"dragend"})}}}drag.origin=function(x){if(!arguments.length)return origin;origin=x;return drag};return d3.rebind(drag,event,"on")};function d3_behavior_dragTouchId(){return d3.event.changedTouches[0].identifier}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}):[]};var ε=1e-6,ε2=ε*ε,π=Math.PI,τ=2*π,τε=τ-ε,halfπ=π/2,d3_radians=π/180,d3_degrees=180/π;function d3_sgn(x){return x>0?1:x<0?-1:0}function d3_cross2d(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(b[1]-a[1])*(c[0]-a[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],dx=ux1-ux0,dy=uy1-uy0,d2=dx*dx+dy*dy,i,S;if(d2<ε2){S=Math.log(w1/w0)/ρ;i=function(t){return[ux0+t*dx,uy0+t*dy,w0*Math.exp(ρ*t*S)]}}else{var 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);
|
||
S=(r1-r0)/ρ;i=function(t){var s=t*S,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)]}}i.duration=S*1e3;return i};d3.behavior.zoom=function(){var view={x:0,y:0,k:1},translate0,center0,center,size=[960,500],scaleExtent=d3_behavior_zoomInfinity,duration=250,zooming=0,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;if(!d3_behavior_zoomWheel){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 zoom(g){g.on(mousedown,mousedowned).on(d3_behavior_zoomWheel+".zoom",mousewheeled).on("dblclick.zoom",dblclicked).on(touchstart,touchstarted)}zoom.event=function(g){g.each(function(){var dispatch=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(dispatch)}).tween("zoom:zoom",function(){var dx=size[0],dy=size[1],cx=center0?center0[0]:dx/2,cy=center0?center0[1]: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(dispatch)}}).each("interrupt.zoom",function(){zoomended(dispatch)}).each("end.zoom",function(){zoomended(dispatch)})}else{this.__chart__=view;zoomstarted(dispatch);zoomed(dispatch);zoomended(dispatch)}})};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:null};scaleTo(+_);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.duration=function(_){if(!arguments.length)return duration;duration=+_;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 zoomTo(that,p,l,k){that.__chart__={x:view.x,y:view.y,k:view.k};scaleTo(Math.pow(2,k));translateTo(center0=p,l);that=d3.select(that);if(duration>0)that=that.transition().duration(duration);that.call(zoom.event)}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(dispatch){if(!zooming++)dispatch({type:"zoomstart"})}function zoomed(dispatch){rescale();dispatch({type:"zoom",scale:view.k,translate:[view.x,view.y]})}function zoomended(dispatch){if(!--zooming)dispatch({type:"zoomend"}),center0=null}function mousedowned(){var that=this,dispatch=event.of(that,arguments),dragged=0,subject=d3.select(d3_window(that)).on(mousemove,moved).on(mouseup,ended),location0=location(d3.mouse(that)),dragRestore=d3_event_dragSuppress(that);d3_selection_interrupt.call(that);zoomstarted(dispatch);function moved(){dragged=1;translateTo(d3.mouse(that),location0);zoomed(dispatch)}function ended(){subject.on(mousemove,null).on(mouseup,null);dragRestore(dragged);zoomended(dispatch)}}function touchstarted(){var that=this,dispatch=event.of(that,arguments),locations0={},distance0=0,scale0,zoomName=".zoom-"+d3.event.changedTouches[0].identifier,touchmove="touchmove"+zoomName,touchend="touchend"+zoomName,targets=[],subject=d3.select(that),dragRestore=d3_event_dragSuppress(that);started();zoomstarted(dispatch);subject.on(mousedown,null).on(touchstart,started);function relocate(){var touches=d3.touches(that);scale0=view.k;touches.forEach(function(t){if(t.identifier in locations0)locations0[t.identifier]=location(t)});return touches}function started(){var target=d3.event.target;d3.select(target).on(touchmove,moved).on(touchend,ended);targets.push(target);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];zoomTo(that,p,locations0[p.identifier],Math.floor(Math.log(view.k)/Math.LN2)+1);d3_eventPreventDefault()}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(that),p0,l0,p1,l1;d3_selection_interrupt.call(that);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(dispatch)}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()}}d3.selectAll(targets).on(zoomName,null);subject.on(mousedown,mousedowned).on(touchstart,touchstarted);dragRestore();zoomended(dispatch)}}function mousewheeled(){var dispatch=event.of(this,arguments);if(mousewheelTimer)clearTimeout(mousewheelTimer);else d3_selection_interrupt.call(this),translate0=location(center0=center||d3.mouse(this)),zoomstarted(dispatch);mousewheelTimer=setTimeout(function(){mousewheelTimer=null;zoomended(dispatch)},50);d3_eventPreventDefault();scaleTo(Math.pow(2,d3_behavior_zoomDelta()*.002)*view.k);translateTo(center0,translate0);zoomed(dispatch)}function dblclicked(){var p=d3.mouse(this),k=Math.log(view.k)/Math.LN2;zoomTo(this,p,location(p),d3.event.shiftKey?Math.ceil(k)-1:Math.floor(k)+1)}return d3.rebind(zoom,event,"on")};var d3_behavior_zoomInfinity=[0,Infinity],d3_behavior_zoomDelta,d3_behavior_zoomWheel;d3.color=d3_color;function d3_color(){}d3_color.prototype.toString=function(){return this.rgb()+""};d3.hsl=d3_hsl;function d3_hsl(h,s,l){return this instanceof d3_hsl?void(this.h=+h,this.s=+s,this.l=+l):arguments.length<2?h instanceof d3_hsl?new d3_hsl(h.h,h.s,h.l):d3_rgb_parse(""+h,d3_rgb_hsl,d3_hsl):new d3_hsl(h,s,l)}var d3_hslPrototype=d3_hsl.prototype=new d3_color;d3_hslPrototype.brighter=function(k){k=Math.pow(.7,arguments.length?k:1);return new d3_hsl(this.h,this.s,this.l/k)};d3_hslPrototype.darker=function(k){k=Math.pow(.7,arguments.length?k:1);return new 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 new d3_rgb(vv(h+120),vv(h),vv(h-120))}d3.hcl=d3_hcl;function d3_hcl(h,c,l){return this instanceof d3_hcl?void(this.h=+h,this.c=+c,this.l=+l):arguments.length<2?h instanceof d3_hcl?new 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):new d3_hcl(h,c,l)}var d3_hclPrototype=d3_hcl.prototype=new d3_color;d3_hclPrototype.brighter=function(k){return new d3_hcl(this.h,this.c,Math.min(100,this.l+d3_lab_K*(arguments.length?k:1)))};d3_hclPrototype.darker=function(k){return new 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 new d3_lab(l,Math.cos(h*=d3_radians)*c,Math.sin(h)*c)}d3.lab=d3_lab;function d3_lab(l,a,b){return this instanceof d3_lab?void(this.l=+l,this.a=+a,this.b=+b):arguments.length<2?l instanceof d3_lab?new d3_lab(l.l,l.a,l.b):l instanceof d3_hcl?d3_hcl_lab(l.h,l.c,l.l):d3_rgb_lab((l=d3_rgb(l)).r,l.g,l.b):new d3_lab(l,a,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 new d3_lab(Math.min(100,this.l+d3_lab_K*(arguments.length?k:1)),this.a,this.b)};d3_labPrototype.darker=function(k){return new 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 new 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?new d3_hcl(Math.atan2(b,a)*d3_degrees,Math.sqrt(a*a+b*b),l):new 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=d3_rgb;function d3_rgb(r,g,b){return this instanceof d3_rgb?void(this.r=~~r,this.g=~~g,this.b=~~b):arguments.length<2?r instanceof d3_rgb?new d3_rgb(r.r,r.g,r.b):d3_rgb_parse(""+r,d3_rgb,d3_hsl_rgb):new d3_rgb(r,g,b)}function d3_rgbNumber(value){return new d3_rgb(value>>16,value>>8&255,value&255)}function d3_rgbString(value){return d3_rgbNumber(value)+""}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 new d3_rgb(i,i,i);if(r&&r<i)r=i;if(g&&g<i)g=i;if(b&&b<i)b=i;return new 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 new 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,color;m1=/([a-z]+)\((.*)\)/.exec(format=format.toLowerCase());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(color=d3_rgb_names.get(format)){return rgb(color.r,color.g,color.b)}if(format!=null&&format.charAt(0)==="#"&&!isNaN(color=parseInt(format.slice(1),16))){if(format.length===4){r=(color&3840)>>4;r=r>>4|r;g=color&240;g=g>>4|g;b=color&15;b=b<<4|b}else if(format.length===7){r=(color&16711680)>>16;g=(color&65280)>>8;b=color&255}}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 new 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,rebeccapurple:6697881,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;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(this.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&&d3_xhrHasResponse(request)||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}function d3_xhrHasResponse(request){var type=request.responseType;return type&&type!=="text"?request.response:request.responseText}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,row==null?response:typedResponse(row),callback);xhr.row=function(_){return arguments.length?xhr.response((row=_)==null?response:typedResponse(_)):row};return xhr}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.slice(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.slice(j,I-k)}return text.slice(j)}while((t=token())!==EOF){var a=[];while(t!==EOL&&t!==EOF){a.push(t);t=token()}if(f&&(a=f(a,n++))==null)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("\t","text/tab-separated-values");var d3_timer_queueHead,d3_timer_queueTail,d3_timer_interval,d3_timer_timeout,d3_timer_frame=this[d3_vendorSymbol(this,"requestAnimationFrame")]||function(callback){setTimeout(callback,17)};d3.timer=function(){d3_timer.apply(this,arguments)};function d3_timer(callback,delay,then){var n=arguments.length;if(n<2)delay=0;if(n<3)then=Date.now();var time=then+delay,timer={c:callback,t:time,n:null};if(d3_timer_queueTail)d3_timer_queueTail.n=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)}return timer}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_mark(){var now=Date.now(),timer=d3_timer_queueHead;while(timer){if(now>=timer.t&&timer.c(now-timer.t))timer.c=null;timer=timer.n}return now}function d3_timer_sweep(){var t0,t1=d3_timer_queueHead,time=Infinity;while(t1){if(t1.c){if(t1.t<time)time=t1.t;t1=(t0=t1).n}else{t1=t0?t0.n=t1.n:d3_timer_queueHead=t1.n}}d3_timer_queueTail=t0;return time}function d3_format_precision(x,p){return p-(x?Math.ceil(Math.log(x)/Math.LN10):1)}d3.round=function(x,n){return n?Math.round(x*(n=Math.pow(10,n)))/n:Math.round(x)};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=+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-1)/3)*3))}return d3_formatPrefixes[8+i/3]};function d3_formatPrefix(d,i){var k=Math.pow(10,abs(8-i)*3);return{scale:i>8?function(d){return d/k}:function(d){return d*k},symbol:d}}function d3_locale_numberFormat(locale){var locale_decimal=locale.decimal,locale_thousands=locale.thousands,locale_grouping=locale.grouping,locale_currency=locale.currency,formatGroup=locale_grouping&&locale_thousands?function(value,width){var i=value.length,t=[],j=0,g=locale_grouping[0],length=0;while(i>0&&g>0){if(length+g+1>width)g=Math.max(1,width-length);t.push(value.substring(i-=g,i+g));if((length+=g+1)>width)break;g=locale_grouping[j=(j+1)%locale_grouping.length]}return t.reverse().join(locale_thousands)}:d3_identity;return 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,prefix="",suffix="",integer=false,exponent=true;if(precision)precision=+precision.substring(1);if(zfill||fill==="0"&&align==="="){zfill=fill="0";align="="}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==="#")prefix="0"+type.toLowerCase();case"c":exponent=false;case"d":integer=true;precision=0;break;case"s":scale=-1;type="r";break}if(symbol==="$")prefix=locale_currency[0],suffix=locale_currency[1];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&,return function(value){var fullSuffix=suffix;if(integer&&value%1)return"";var negative=value<0||value===0&&1/value<0?(value=-value,"-"):sign==="-"?"":sign;if(scale<0){var unit=d3.formatPrefix(value,precision);value=unit.scale(value);fullSuffix=unit.symbol+suffix}else{value*=scale}value=type(value,precision);var i=value.lastIndexOf("."),before,after;if(i<0){var j=exponent?value.lastIndexOf("e"):-1;if(j<0)before=value,after="";else before=value.substring(0,j),after=value.substring(j)}else{before=value.substring(0,i);after=locale_decimal+value.substring(i+1)}if(!zfill&&comma)before=formatGroup(before,Infinity);var length=prefix.length+before.length+after.length+(zcomma?0:negative.length),padding=length<width?new Array(length=width-length+1).join(fill):"";if(zcomma)before=formatGroup(padding+before,padding.length?width-after.length:Infinity);negative+=prefix;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))+fullSuffix}}}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_typeDefault(x){return x+""}var d3_time=d3.time={},d3_date=Date;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;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)};["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(day,i){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;function d3_locale_timeFormat(locale){var locale_dateTime=locale.dateTime,locale_date=locale.date,locale_time=locale.time,locale_periods=locale.periods,locale_days=locale.days,locale_shortDays=locale.shortDays,locale_months=locale.months,locale_shortMonths=locale.shortMonths;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.slice(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.slice(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||"U"in d){if(!("w"in d))d.w="W"in d?1:0;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+(d.Z/100|0),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}d3_time_format.utc=function(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};d3_time_format.multi=d3_time_format.utc.multi=d3_time_formatMulti;var d3_time_periodLookup=d3.map(),d3_time_dayRe=d3_time_formatRe(locale_days),d3_time_dayLookup=d3_time_formatLookup(locale_days),d3_time_dayAbbrevRe=d3_time_formatRe(locale_shortDays),d3_time_dayAbbrevLookup=d3_time_formatLookup(locale_shortDays),d3_time_monthRe=d3_time_formatRe(locale_months),d3_time_monthLookup=d3_time_formatLookup(locale_months),d3_time_monthAbbrevRe=d3_time_formatRe(locale_shortMonths),d3_time_monthAbbrevLookup=d3_time_formatLookup(locale_shortMonths);
|
||
locale_periods.forEach(function(p,i){d3_time_periodLookup.set(p.toLowerCase(),i)});var d3_time_formats={a:function(d){return locale_shortDays[d.getDay()]},A:function(d){return locale_days[d.getDay()]},b:function(d){return locale_shortMonths[d.getMonth()]},B:function(d){return locale_months[d.getMonth()]},c:d3_time_format(locale_dateTime),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 locale_periods[+(d.getHours()>=12)]},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(locale_date),X:d3_time_format(locale_time),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.slice(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.slice(i));return n?(date.w=d3_time_dayLookup.get(n[0].toLowerCase()),i+n[0].length):-1}function d3_time_parseMonthAbbrev(date,string,i){d3_time_monthAbbrevRe.lastIndex=0;var n=d3_time_monthAbbrevRe.exec(string.slice(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.slice(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_parseAmPm(date,string,i){var n=d3_time_periodLookup.get(string.slice(i,i+=2).toLowerCase());return n==null?-1:(date.p=n,i)}return d3_time_format}var d3_time_formatPads={"-":"",_:" ",0:"0"},d3_time_numberRe=/^\s*\d+/,d3_time_percentRe=/^%/;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)}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_parseWeekdayNumber(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.slice(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.slice(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.slice(i));return n?(date.W=+n[0],i+n[0].length):-1}function d3_time_parseFullYear(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.slice(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.slice(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.slice(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.slice(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.slice(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.slice(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.slice(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.slice(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.slice(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.slice(i,i+3));return n?(date.L=+n[0],i+n[0].length):-1}function d3_time_zone(d){var z=d.getTimezoneOffset(),zs=z>0?"-":"+",zh=abs(z)/60|0,zm=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.slice(i,i+1));return n?i+n[0].length:-1}function d3_time_formatMulti(formats){var n=formats.length,i=-1;while(++i<n)formats[i][0]=this(formats[i][0]);return function(date){var i=0,f=formats[i];while(!f[1](date))f=formats[++i];return f[0](date)}}d3.locale=function(locale){return{numberFormat:d3_locale_numberFormat(locale),timeFormat:d3_locale_timeFormat(locale)}};var d3_locale_enUS=d3.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});d3.format=d3_locale_enUS.numberFormat;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,sdλ=dλ>=0?1:-1,adλ=sdλ*dλ,cosφ=Math.cos(φ),sinφ=Math.sin(φ),k=sinφ0*sinφ,u=cosφ0*cosφ+k*Math.cos(adλ),v=k*sdλ*Math.sin(adλ);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 abs(a[0]-b[0])<ε&&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=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+=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(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_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_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=new d3_geo_clipPolygonIntersection(p0,segment,null,true),b=new d3_geo_clipPolygonIntersection(p0,null,a,false);a.o=b;subject.push(a);clip.push(b);a=new d3_geo_clipPolygonIntersection(p1,segment,null,false);b=new d3_geo_clipPolygonIntersection(p1,null,a,true);a.o=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].e=entry=!entry}var start=subject[0],points,point;while(1){var current=start,isSubject=true;while(current.v)if((current=current.n)===start)return;points=current.z;listener.lineStart();do{current.v=current.o.v=true;if(current.e){if(isSubject){for(var i=0,n=points.length;i<n;++i)listener.point((point=points[i])[0],point[1])}else{interpolate(current.x,current.n.x,1,listener)}current=current.n}else{if(isSubject){points=current.p.z;for(var i=points.length-1;i>=0;--i)listener.point((point=points[i])[0],point[1])}else{interpolate(current.x,current.p.x,-1,listener)}current=current.p}current=current.o;points=current.z;isSubject=!isSubject}while(!current.v);listener.lineEnd()}}function d3_geo_clipPolygonLinkCircular(array){if(!(n=array.length))return;var n,i=0,a=array[0],b;while(++i<n){a.n=b=array[i];b.p=a;a=b}a.n=b=array[0];b.p=a}function d3_geo_clipPolygonIntersection(point,points,other,entry){this.x=point;this.z=points;this.o=other;this.e=entry;this.v=false;this.n=this.p=null}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=[]},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){if(!polygonStarted)listener.polygonStart(),polygonStarted=true;d3_geo_clipPolygon(segments,d3_geo_clipSort,clipStartInside,interpolate,listener)}else if(clipStartInside){if(!polygonStarted)listener.polygonStart(),polygonStarted=true;listener.lineStart();interpolate(null,null,1,listener);listener.lineEnd()}if(polygonStarted)listener.polygonEnd(),polygonStarted=false;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),polygonStarted=false,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;if(n>0){if(!polygonStarted)listener.polygonStart(),polygonStarted=true;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.x)[0]<0?a[1]-halfπ-ε:halfπ-a[1])-((b=b.x)[0]<0?b[1]-halfπ-ε:halfπ-b[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λ=abs(λ1-λ0);if(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(abs(λ0-sλ0)<ε)λ0-=sλ0*ε;if(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 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(abs(from[0]-to[0])>ε){var s=from[0]<to[0]?π:-π;φ=direction*s/2;listener.point(-s,φ);listener.point(0,φ);listener.point(s,φ)}else{listener.point(to[0],to[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,sdλ=dλ>=0?1:-1,adλ=sdλ*dλ,antimeridian=adλ>π,k=sinφ0*sinφ;d3_geo_areaRingSum.add(Math.atan2(k*sdλ*Math.sin(adλ),cosφ0*cosφ+k*Math.cos(adλ)));polarAngle+=antimeridian?dλ+sdλ*τ: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<-ε)^winding&1}function d3_geo_clipCircle(radius){var cr=Math.cos(radius),smallRadius=cr>0,notHemisphere=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=abs(δλ-π)<ε,meridian=polar||δλ<ε;if(!polar&&φ1<φ0)z=φ0,φ0=φ1,φ1=z;if(meridian?polar?φ0+φ1>0^q[1]<(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}}function d3_geom_clipLine(x0,y0,x1,y1){return function(line){var a=line.a,b=line.b,ax=a.x,ay=a.y,bx=b.x,by=b.y,t0=0,t1=1,dx=bx-ax,dy=by-ay,r;r=x0-ax;if(!dx&&r>0)return;r/=dx;if(dx<0){if(r<t0)return;if(r<t1)t1=r}else if(dx>0){if(r>t1)return;if(r>t0)t0=r}r=x1-ax;if(!dx&&r<0)return;r/=dx;if(dx<0){if(r>t1)return;if(r>t0)t0=r}else if(dx>0){if(r<t0)return;if(r<t1)t1=r}r=y0-ay;if(!dy&&r>0)return;r/=dy;if(dy<0){if(r<t0)return;if(r<t1)t1=r}else if(dy>0){if(r>t1)return;if(r>t0)t0=r}r=y1-ay;if(!dy&&r<0)return;r/=dy;if(dy<0){if(r>t1)return;if(r>t0)t0=r}else if(dy>0){if(r<t0)return;if(r<t1)t1=r}if(t0>0)line.a={x:ax+t0*dx,y:ay+t0*dy};if(t1<1)line.b={x:ax+t1*dx,y:ay+t1*dy};return line}}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(),clipLine=d3_geom_clipLine(x0,y0,x1,y1),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&&d3_cross2d(a,b,p)>0)++wn}else{if(b[1]<=y&&d3_cross2d(a,b,p)<0)--wn}a=b}}return wn!==0}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 l={a:{x:x_,y:y_},b:{x:x,y:y}};if(clipLine(l)){if(!v_){listener.lineStart();listener.point(l.a.x,l.a.y)}listener.point(l.b.x,l.b.y);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 abs(p[0]-x0)<ε?direction>0?0:3:abs(p[0]-x1)<ε?direction>0?2:1:abs(p[1]-y0)<ε?direction>0?1:0:direction>0?3:2}function compare(a,b){return comparePoints(a.x,b.x)}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 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+=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+pointRadius,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){return(maxDepth?resampleRecursive:resampleNone)(stream)}function resampleNone(stream){return d3_geo_transformPoint(stream,function(x,y){x=project(x,y);stream.point(x[0],x[1])})}function resampleRecursive(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=abs(abs(c)-1)<ε||abs(λ0-λ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||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.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){return d3_geo_projectionRadians(resample(stream))}}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()}};function d3_geo_transformPoint(stream,point){return{point:point,sphere:function(){stream.sphere()},lineStart:function(){stream.lineStart()},lineEnd:function(){stream.lineEnd()},polygonStart:function(){stream.polygonStart()},polygonEnd:function(){stream.polygonEnd()}}}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){return d3_geo_transformPoint(stream,function(x,y){stream.point(x*d3_radians,y*d3_radians)})}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 abs(x%DX)>ε}).map(x)).concat(d3.range(Math.ceil(y0/dy)*dy,y1,dy).filter(function(y){return 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=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(λ,φ){if(F>0){if(φ<-halfπ+ε)φ=-halfπ+ε}else{if(φ>halfπ-ε)φ=halfπ-ε}var ρ=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(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(λ,φ){return[Math.log(Math.tan(π/4+φ/2)),-λ]}d3_geo_transverseMercator.invert=function(x,y){return[-y,2*Math.atan(Math.exp(x))-halfπ]};(d3.geo.transverseMercator=function(){var projection=d3_geo_mercatorProjection(d3_geo_transverseMercator),center=projection.center,rotate=projection.rotate;projection.center=function(_){return _?center([-_[1],_[0]]):(_=center(),[_[1],-_[0]])};projection.rotate=function(_){return _?rotate([_[0],_[1],_.length>2?_[2]+90:90]):(_=rotate(),[_[0],_[1],_[2]-90])};return rotate([0,0,90])}).raw=d3_geo_transverseMercator;d3.geom={};function d3_geom_pointX(d){return d[0]}function d3_geom_pointY(d){return d[1]}d3.geom.hull=function(vertices){var x=d3_geom_pointX,y=d3_geom_pointY;if(arguments.length)return hull(vertices);function hull(data){if(data.length<3)return[];var fx=d3_functor(x),fy=d3_functor(y),i,n=data.length,points=[],flippedPoints=[];for(i=0;i<n;i++){points.push([+fx.call(this,data[i],i),+fy.call(this,data[i],i),i])}points.sort(d3_geom_hullOrder);for(i=0;i<n;i++)flippedPoints.push([points[i][0],-points[i][1]]);var upper=d3_geom_hullUpper(points),lower=d3_geom_hullUpper(flippedPoints);var skipLeft=lower[0]===upper[0],skipRight=lower[lower.length-1]===upper[upper.length-1],polygon=[];for(i=upper.length-1;i>=0;--i)polygon.push(data[points[upper[i]][2]]);for(i=+skipLeft;i<lower.length-skipRight;++i)polygon.push(data[points[lower[i]][2]]);return polygon}hull.x=function(_){return arguments.length?(x=_,hull):x};hull.y=function(_){return arguments.length?(y=_,hull):y};return hull};function d3_geom_hullUpper(points){var n=points.length,hull=[0,1],hs=2;for(var i=2;i<n;i++){while(hs>1&&d3_cross2d(points[hull[hs-2]],points[hull[hs-1]],points[i])<=0)--hs;hull[hs++]=i}return hull.slice(0,hs)}function d3_geom_hullOrder(a,b){return a[0]-b[0]||a[1]-b[1]}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])}var d3_geom_voronoiEdges,d3_geom_voronoiCells,d3_geom_voronoiBeaches,d3_geom_voronoiBeachPool=[],d3_geom_voronoiFirstCircle,d3_geom_voronoiCircles,d3_geom_voronoiCirclePool=[];function d3_geom_voronoiBeach(){d3_geom_voronoiRedBlackNode(this);this.edge=this.site=this.circle=null}function d3_geom_voronoiCreateBeach(site){var beach=d3_geom_voronoiBeachPool.pop()||new d3_geom_voronoiBeach;beach.site=site;return beach}function d3_geom_voronoiDetachBeach(beach){d3_geom_voronoiDetachCircle(beach);d3_geom_voronoiBeaches.remove(beach);d3_geom_voronoiBeachPool.push(beach);d3_geom_voronoiRedBlackNode(beach)}function d3_geom_voronoiRemoveBeach(beach){var circle=beach.circle,x=circle.x,y=circle.cy,vertex={x:x,y:y},previous=beach.P,next=beach.N,disappearing=[beach];d3_geom_voronoiDetachBeach(beach);var lArc=previous;while(lArc.circle&&abs(x-lArc.circle.x)<ε&&abs(y-lArc.circle.cy)<ε){previous=lArc.P;disappearing.unshift(lArc);d3_geom_voronoiDetachBeach(lArc);lArc=previous}disappearing.unshift(lArc);d3_geom_voronoiDetachCircle(lArc);var rArc=next;while(rArc.circle&&abs(x-rArc.circle.x)<ε&&abs(y-rArc.circle.cy)<ε){next=rArc.N;disappearing.push(rArc);d3_geom_voronoiDetachBeach(rArc);rArc=next}disappearing.push(rArc);d3_geom_voronoiDetachCircle(rArc);var nArcs=disappearing.length,iArc;for(iArc=1;iArc<nArcs;++iArc){rArc=disappearing[iArc];lArc=disappearing[iArc-1];d3_geom_voronoiSetEdgeEnd(rArc.edge,lArc.site,rArc.site,vertex)}lArc=disappearing[0];rArc=disappearing[nArcs-1];rArc.edge=d3_geom_voronoiCreateEdge(lArc.site,rArc.site,null,vertex);d3_geom_voronoiAttachCircle(lArc);d3_geom_voronoiAttachCircle(rArc)}function d3_geom_voronoiAddBeach(site){var x=site.x,directrix=site.y,lArc,rArc,dxl,dxr,node=d3_geom_voronoiBeaches._;while(node){dxl=d3_geom_voronoiLeftBreakPoint(node,directrix)-x;if(dxl>ε)node=node.L;else{dxr=x-d3_geom_voronoiRightBreakPoint(node,directrix);if(dxr>ε){if(!node.R){lArc=node;break}node=node.R}else{if(dxl>-ε){lArc=node.P;rArc=node}else if(dxr>-ε){lArc=node;rArc=node.N}else{lArc=rArc=node}break}}}var newArc=d3_geom_voronoiCreateBeach(site);d3_geom_voronoiBeaches.insert(lArc,newArc);if(!lArc&&!rArc)return;if(lArc===rArc){d3_geom_voronoiDetachCircle(lArc);rArc=d3_geom_voronoiCreateBeach(lArc.site);d3_geom_voronoiBeaches.insert(newArc,rArc);newArc.edge=rArc.edge=d3_geom_voronoiCreateEdge(lArc.site,newArc.site);d3_geom_voronoiAttachCircle(lArc);d3_geom_voronoiAttachCircle(rArc);return}if(!rArc){newArc.edge=d3_geom_voronoiCreateEdge(lArc.site,newArc.site);return}d3_geom_voronoiDetachCircle(lArc);d3_geom_voronoiDetachCircle(rArc);var lSite=lArc.site,ax=lSite.x,ay=lSite.y,bx=site.x-ax,by=site.y-ay,rSite=rArc.site,cx=rSite.x-ax,cy=rSite.y-ay,d=2*(bx*cy-by*cx),hb=bx*bx+by*by,hc=cx*cx+cy*cy,vertex={x:(cy*hb-by*hc)/d+ax,y:(bx*hc-cx*hb)/d+ay};d3_geom_voronoiSetEdgeEnd(rArc.edge,lSite,rSite,vertex);newArc.edge=d3_geom_voronoiCreateEdge(lSite,site,null,vertex);rArc.edge=d3_geom_voronoiCreateEdge(site,rSite,null,vertex);d3_geom_voronoiAttachCircle(lArc);d3_geom_voronoiAttachCircle(rArc)}function d3_geom_voronoiLeftBreakPoint(arc,directrix){var site=arc.site,rfocx=site.x,rfocy=site.y,pby2=rfocy-directrix;if(!pby2)return rfocx;var lArc=arc.P;if(!lArc)return-Infinity;site=lArc.site;var lfocx=site.x,lfocy=site.y,plby2=lfocy-directrix;if(!plby2)return lfocx;var hl=lfocx-rfocx,aby2=1/pby2-1/plby2,b=hl/plby2;if(aby2)return(-b+Math.sqrt(b*b-2*aby2*(hl*hl/(-2*plby2)-lfocy+plby2/2+rfocy-pby2/2)))/aby2+rfocx;
|
||
return(rfocx+lfocx)/2}function d3_geom_voronoiRightBreakPoint(arc,directrix){var rArc=arc.N;if(rArc)return d3_geom_voronoiLeftBreakPoint(rArc,directrix);var site=arc.site;return site.y===directrix?site.x:Infinity}function d3_geom_voronoiCell(site){this.site=site;this.edges=[]}d3_geom_voronoiCell.prototype.prepare=function(){var halfEdges=this.edges,iHalfEdge=halfEdges.length,edge;while(iHalfEdge--){edge=halfEdges[iHalfEdge].edge;if(!edge.b||!edge.a)halfEdges.splice(iHalfEdge,1)}halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);return halfEdges.length};function d3_geom_voronoiCloseCells(extent){var x0=extent[0][0],x1=extent[1][0],y0=extent[0][1],y1=extent[1][1],x2,y2,x3,y3,cells=d3_geom_voronoiCells,iCell=cells.length,cell,iHalfEdge,halfEdges,nHalfEdges,start,end;while(iCell--){cell=cells[iCell];if(!cell||!cell.prepare())continue;halfEdges=cell.edges;nHalfEdges=halfEdges.length;iHalfEdge=0;while(iHalfEdge<nHalfEdges){end=halfEdges[iHalfEdge].end(),x3=end.x,y3=end.y;start=halfEdges[++iHalfEdge%nHalfEdges].start(),x2=start.x,y2=start.y;if(abs(x3-x2)>ε||abs(y3-y2)>ε){halfEdges.splice(iHalfEdge,0,new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site,end,abs(x3-x0)<ε&&y1-y3>ε?{x:x0,y:abs(x2-x0)<ε?y2:y1}:abs(y3-y1)<ε&&x1-x3>ε?{x:abs(y2-y1)<ε?x2:x1,y:y1}:abs(x3-x1)<ε&&y3-y0>ε?{x:x1,y:abs(x2-x1)<ε?y2:y0}:abs(y3-y0)<ε&&x3-x0>ε?{x:abs(y2-y0)<ε?x2:x0,y:y0}:null),cell.site,null));++nHalfEdges}}}}function d3_geom_voronoiHalfEdgeOrder(a,b){return b.angle-a.angle}function d3_geom_voronoiCircle(){d3_geom_voronoiRedBlackNode(this);this.x=this.y=this.arc=this.site=this.cy=null}function d3_geom_voronoiAttachCircle(arc){var lArc=arc.P,rArc=arc.N;if(!lArc||!rArc)return;var lSite=lArc.site,cSite=arc.site,rSite=rArc.site;if(lSite===rSite)return;var bx=cSite.x,by=cSite.y,ax=lSite.x-bx,ay=lSite.y-by,cx=rSite.x-bx,cy=rSite.y-by;var d=2*(ax*cy-ay*cx);if(d>=-ε2)return;var ha=ax*ax+ay*ay,hc=cx*cx+cy*cy,x=(cy*ha-ay*hc)/d,y=(ax*hc-cx*ha)/d,cy=y+by;var circle=d3_geom_voronoiCirclePool.pop()||new d3_geom_voronoiCircle;circle.arc=arc;circle.site=cSite;circle.x=x+bx;circle.y=cy+Math.sqrt(x*x+y*y);circle.cy=cy;arc.circle=circle;var before=null,node=d3_geom_voronoiCircles._;while(node){if(circle.y<node.y||circle.y===node.y&&circle.x<=node.x){if(node.L)node=node.L;else{before=node.P;break}}else{if(node.R)node=node.R;else{before=node;break}}}d3_geom_voronoiCircles.insert(before,circle);if(!before)d3_geom_voronoiFirstCircle=circle}function d3_geom_voronoiDetachCircle(arc){var circle=arc.circle;if(circle){if(!circle.P)d3_geom_voronoiFirstCircle=circle.N;d3_geom_voronoiCircles.remove(circle);d3_geom_voronoiCirclePool.push(circle);d3_geom_voronoiRedBlackNode(circle);arc.circle=null}}function d3_geom_voronoiClipEdges(extent){var edges=d3_geom_voronoiEdges,clip=d3_geom_clipLine(extent[0][0],extent[0][1],extent[1][0],extent[1][1]),i=edges.length,e;while(i--){e=edges[i];if(!d3_geom_voronoiConnectEdge(e,extent)||!clip(e)||abs(e.a.x-e.b.x)<ε&&abs(e.a.y-e.b.y)<ε){e.a=e.b=null;edges.splice(i,1)}}}function d3_geom_voronoiConnectEdge(edge,extent){var vb=edge.b;if(vb)return true;var va=edge.a,x0=extent[0][0],x1=extent[1][0],y0=extent[0][1],y1=extent[1][1],lSite=edge.l,rSite=edge.r,lx=lSite.x,ly=lSite.y,rx=rSite.x,ry=rSite.y,fx=(lx+rx)/2,fy=(ly+ry)/2,fm,fb;if(ry===ly){if(fx<x0||fx>=x1)return;if(lx>rx){if(!va)va={x:fx,y:y0};else if(va.y>=y1)return;vb={x:fx,y:y1}}else{if(!va)va={x:fx,y:y1};else if(va.y<y0)return;vb={x:fx,y:y0}}}else{fm=(lx-rx)/(ry-ly);fb=fy-fm*fx;if(fm<-1||fm>1){if(lx>rx){if(!va)va={x:(y0-fb)/fm,y:y0};else if(va.y>=y1)return;vb={x:(y1-fb)/fm,y:y1}}else{if(!va)va={x:(y1-fb)/fm,y:y1};else if(va.y<y0)return;vb={x:(y0-fb)/fm,y:y0}}}else{if(ly<ry){if(!va)va={x:x0,y:fm*x0+fb};else if(va.x>=x1)return;vb={x:x1,y:fm*x1+fb}}else{if(!va)va={x:x1,y:fm*x1+fb};else if(va.x<x0)return;vb={x:x0,y:fm*x0+fb}}}}edge.a=va;edge.b=vb;return true}function d3_geom_voronoiEdge(lSite,rSite){this.l=lSite;this.r=rSite;this.a=this.b=null}function d3_geom_voronoiCreateEdge(lSite,rSite,va,vb){var edge=new d3_geom_voronoiEdge(lSite,rSite);d3_geom_voronoiEdges.push(edge);if(va)d3_geom_voronoiSetEdgeEnd(edge,lSite,rSite,va);if(vb)d3_geom_voronoiSetEdgeEnd(edge,rSite,lSite,vb);d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge,lSite,rSite));d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge,rSite,lSite));return edge}function d3_geom_voronoiCreateBorderEdge(lSite,va,vb){var edge=new d3_geom_voronoiEdge(lSite,null);edge.a=va;edge.b=vb;d3_geom_voronoiEdges.push(edge);return edge}function d3_geom_voronoiSetEdgeEnd(edge,lSite,rSite,vertex){if(!edge.a&&!edge.b){edge.a=vertex;edge.l=lSite;edge.r=rSite}else if(edge.l===rSite){edge.b=vertex}else{edge.a=vertex}}function d3_geom_voronoiHalfEdge(edge,lSite,rSite){var va=edge.a,vb=edge.b;this.edge=edge;this.site=lSite;this.angle=rSite?Math.atan2(rSite.y-lSite.y,rSite.x-lSite.x):edge.l===lSite?Math.atan2(vb.x-va.x,va.y-vb.y):Math.atan2(va.x-vb.x,vb.y-va.y)}d3_geom_voronoiHalfEdge.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}};function d3_geom_voronoiRedBlackTree(){this._=null}function d3_geom_voronoiRedBlackNode(node){node.U=node.C=node.L=node.R=node.P=node.N=null}d3_geom_voronoiRedBlackTree.prototype={insert:function(after,node){var parent,grandpa,uncle;if(after){node.P=after;node.N=after.N;if(after.N)after.N.P=node;after.N=node;if(after.R){after=after.R;while(after.L)after=after.L;after.L=node}else{after.R=node}parent=after}else if(this._){after=d3_geom_voronoiRedBlackFirst(this._);node.P=null;node.N=after;after.P=after.L=node;parent=after}else{node.P=node.N=null;this._=node;parent=null}node.L=node.R=null;node.U=parent;node.C=true;after=node;while(parent&&parent.C){grandpa=parent.U;if(parent===grandpa.L){uncle=grandpa.R;if(uncle&&uncle.C){parent.C=uncle.C=false;grandpa.C=true;after=grandpa}else{if(after===parent.R){d3_geom_voronoiRedBlackRotateLeft(this,parent);after=parent;parent=after.U}parent.C=false;grandpa.C=true;d3_geom_voronoiRedBlackRotateRight(this,grandpa)}}else{uncle=grandpa.L;if(uncle&&uncle.C){parent.C=uncle.C=false;grandpa.C=true;after=grandpa}else{if(after===parent.L){d3_geom_voronoiRedBlackRotateRight(this,parent);after=parent;parent=after.U}parent.C=false;grandpa.C=true;d3_geom_voronoiRedBlackRotateLeft(this,grandpa)}}parent=after.U}this._.C=false},remove:function(node){if(node.N)node.N.P=node.P;if(node.P)node.P.N=node.N;node.N=node.P=null;var parent=node.U,sibling,left=node.L,right=node.R,next,red;if(!left)next=right;else if(!right)next=left;else next=d3_geom_voronoiRedBlackFirst(right);if(parent){if(parent.L===node)parent.L=next;else parent.R=next}else{this._=next}if(left&&right){red=next.C;next.C=node.C;next.L=left;left.U=next;if(next!==right){parent=next.U;next.U=node.U;node=next.R;parent.L=node;next.R=right;right.U=next}else{next.U=parent;parent=next;node=next.R}}else{red=node.C;node=next}if(node)node.U=parent;if(red)return;if(node&&node.C){node.C=false;return}do{if(node===this._)break;if(node===parent.L){sibling=parent.R;if(sibling.C){sibling.C=false;parent.C=true;d3_geom_voronoiRedBlackRotateLeft(this,parent);sibling=parent.R}if(sibling.L&&sibling.L.C||sibling.R&&sibling.R.C){if(!sibling.R||!sibling.R.C){sibling.L.C=false;sibling.C=true;d3_geom_voronoiRedBlackRotateRight(this,sibling);sibling=parent.R}sibling.C=parent.C;parent.C=sibling.R.C=false;d3_geom_voronoiRedBlackRotateLeft(this,parent);node=this._;break}}else{sibling=parent.L;if(sibling.C){sibling.C=false;parent.C=true;d3_geom_voronoiRedBlackRotateRight(this,parent);sibling=parent.L}if(sibling.L&&sibling.L.C||sibling.R&&sibling.R.C){if(!sibling.L||!sibling.L.C){sibling.R.C=false;sibling.C=true;d3_geom_voronoiRedBlackRotateLeft(this,sibling);sibling=parent.L}sibling.C=parent.C;parent.C=sibling.L.C=false;d3_geom_voronoiRedBlackRotateRight(this,parent);node=this._;break}}sibling.C=true;node=parent;parent=parent.U}while(!node.C);if(node)node.C=false}};function d3_geom_voronoiRedBlackRotateLeft(tree,node){var p=node,q=node.R,parent=p.U;if(parent){if(parent.L===p)parent.L=q;else parent.R=q}else{tree._=q}q.U=parent;p.U=q;p.R=q.L;if(p.R)p.R.U=p;q.L=p}function d3_geom_voronoiRedBlackRotateRight(tree,node){var p=node,q=node.L,parent=p.U;if(parent){if(parent.L===p)parent.L=q;else parent.R=q}else{tree._=q}q.U=parent;p.U=q;p.L=q.R;if(p.L)p.L.U=p;q.R=p}function d3_geom_voronoiRedBlackFirst(node){while(node.L)node=node.L;return node}function d3_geom_voronoi(sites,bbox){var site=sites.sort(d3_geom_voronoiVertexOrder).pop(),x0,y0,circle;d3_geom_voronoiEdges=[];d3_geom_voronoiCells=new Array(sites.length);d3_geom_voronoiBeaches=new d3_geom_voronoiRedBlackTree;d3_geom_voronoiCircles=new d3_geom_voronoiRedBlackTree;while(true){circle=d3_geom_voronoiFirstCircle;if(site&&(!circle||site.y<circle.y||site.y===circle.y&&site.x<circle.x)){if(site.x!==x0||site.y!==y0){d3_geom_voronoiCells[site.i]=new d3_geom_voronoiCell(site);d3_geom_voronoiAddBeach(site);x0=site.x,y0=site.y}site=sites.pop()}else if(circle){d3_geom_voronoiRemoveBeach(circle.arc)}else{break}}if(bbox)d3_geom_voronoiClipEdges(bbox),d3_geom_voronoiCloseCells(bbox);var diagram={cells:d3_geom_voronoiCells,edges:d3_geom_voronoiEdges};d3_geom_voronoiBeaches=d3_geom_voronoiCircles=d3_geom_voronoiEdges=d3_geom_voronoiCells=null;return diagram}function d3_geom_voronoiVertexOrder(a,b){return b.y-a.y||b.x-a.x}d3.geom.voronoi=function(points){var x=d3_geom_pointX,y=d3_geom_pointY,fx=x,fy=y,clipExtent=d3_geom_voronoiClipExtent;if(points)return voronoi(points);function voronoi(data){var polygons=new Array(data.length),x0=clipExtent[0][0],y0=clipExtent[0][1],x1=clipExtent[1][0],y1=clipExtent[1][1];d3_geom_voronoi(sites(data),clipExtent).cells.forEach(function(cell,i){var edges=cell.edges,site=cell.site,polygon=polygons[i]=edges.length?edges.map(function(e){var s=e.start();return[s.x,s.y]}):site.x>=x0&&site.x<=x1&&site.y>=y0&&site.y<=y1?[[x0,y1],[x1,y1],[x1,y0],[x0,y0]]:[];polygon.point=data[i]});return polygons}function sites(data){return data.map(function(d,i){return{x:Math.round(fx(d,i)/ε)*ε,y:Math.round(fy(d,i)/ε)*ε,i:i}})}voronoi.links=function(data){return d3_geom_voronoi(sites(data)).edges.filter(function(edge){return edge.l&&edge.r}).map(function(edge){return{source:data[edge.l.i],target:data[edge.r.i]}})};voronoi.triangles=function(data){var triangles=[];d3_geom_voronoi(sites(data)).cells.forEach(function(cell,i){var site=cell.site,edges=cell.edges.sort(d3_geom_voronoiHalfEdgeOrder),j=-1,m=edges.length,e0,s0,e1=edges[m-1].edge,s1=e1.l===site?e1.r:e1.l;while(++j<m){e0=e1;s0=s1;e1=edges[j].edge;s1=e1.l===site?e1.r:e1.l;if(i<s0.i&&i<s1.i&&d3_geom_voronoiTriangleArea(site,s0,s1)<0){triangles.push([data[i],data[s0.i],data[s1.i]])}}});return triangles};voronoi.x=function(_){return arguments.length?(fx=d3_functor(x=_),voronoi):x};voronoi.y=function(_){return arguments.length?(fy=d3_functor(y=_),voronoi):y};voronoi.clipExtent=function(_){if(!arguments.length)return clipExtent===d3_geom_voronoiClipExtent?null:clipExtent;clipExtent=_==null?d3_geom_voronoiClipExtent:_;return voronoi};voronoi.size=function(_){if(!arguments.length)return clipExtent===d3_geom_voronoiClipExtent?null:clipExtent&&clipExtent[1];return voronoi.clipExtent(_&&[[0,0],_])};return voronoi};var d3_geom_voronoiClipExtent=[[-1e6,-1e6],[1e6,1e6]];function d3_geom_voronoiTriangleArea(a,b,c){return(a.x-c.x)*(b.y-a.y)-(a.x-b.x)*(c.y-a.y)}d3.geom.delaunay=function(vertices){return d3.geom.voronoi().triangles(vertices)};d3.geom.quadtree=function(points,x1,y1,x2,y2){var x=d3_geom_pointX,y=d3_geom_pointY,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(abs(nx-x)+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 xm=(x1+x2)*.5,ym=(y1+y2)*.5,right=x>=xm,below=y>=ym,i=below<<1|right;n.leaf=false;n=n.nodes[i]||(n.nodes[i]=d3_geom_quadtreeNode());if(right)x1=xm;else x2=xm;if(below)y1=ym;else y2=ym;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_)};root.find=function(point){return d3_geom_quadtreeFind(root,point[0],point[1],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)}}function d3_geom_quadtreeFind(root,x,y,x0,y0,x3,y3){var minDistance2=Infinity,closestPoint;(function find(node,x1,y1,x2,y2){if(x1>x3||y1>y3||x2<x0||y2<y0)return;if(point=node.point){var point,dx=x-node.x,dy=y-node.y,distance2=dx*dx+dy*dy;if(distance2<minDistance2){var distance=Math.sqrt(minDistance2=distance2);x0=x-distance,y0=y-distance;x3=x+distance,y3=y+distance;closestPoint=point}}var children=node.nodes,xm=(x1+x2)*.5,ym=(y1+y2)*.5,right=x>=xm,below=y>=ym;for(var i=below<<1|right,j=i+4;i<j;++i){if(node=children[i&3])switch(i&3){case 0:find(node,x1,y1,xm,ym);break;case 1:find(node,xm,y1,x2,ym);break;case 2:find(node,x1,ym,xm,y2);break;case 3:find(node,xm,ym,x2,y2);break}}})(root,x0,y0,x3,y3);return closestPoint}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){a=+a,b=+b;return function(t){return a*(1-t)+b*t}}d3.interpolateString=d3_interpolateString;function d3_interpolateString(a,b){var bi=d3_interpolate_numberA.lastIndex=d3_interpolate_numberB.lastIndex=0,am,bm,bs,i=-1,s=[],q=[];a=a+"",b=b+"";while((am=d3_interpolate_numberA.exec(a))&&(bm=d3_interpolate_numberB.exec(b))){if((bs=bm.index)>bi){bs=b.slice(bi,bs);if(s[i])s[i]+=bs;else s[++i]=bs}if((am=am[0])===(bm=bm[0])){if(s[i])s[i]+=bm;else s[++i]=bm}else{s[++i]=null;q.push({i:i,x:d3_interpolateNumber(am,bm)})}bi=d3_interpolate_numberB.lastIndex}if(bi<b.length){bs=b.slice(bi);if(s[i])s[i]+=bs;else s[++i]=bs}return s.length<2?q[0]?(b=q[0].x,function(t){return b(t)+""}):function(){return b}:(b=q.length,function(t){for(var i=0,o;i<b;++i)s[(o=q[i]).i]=o.x(t);return s.join("")})}var d3_interpolate_numberA=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,d3_interpolate_numberB=new RegExp(d3_interpolate_numberA.source,"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.toLowerCase())||/^(#|rgb\(|hsl\()/i.test(b)?d3_interpolateRgb:d3_interpolateString:b instanceof d3_color?d3_interpolateRgb:Array.isArray(b)?d3_interpolateArray:t==="object"&&isNaN(b)?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.slice(0,i):name,m=i>=0?name.slice(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,d3_arraySlice.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_interpolateTransformPop(s){return s.length?s.pop()+",":""}function d3_interpolateTranslate(ta,tb,s,q){if(ta[0]!==tb[0]||ta[1]!==tb[1]){var i=s.push("translate(",null,",",null,")");q.push({i:i-4,x:d3_interpolateNumber(ta[0],tb[0])},{i:i-2,x:d3_interpolateNumber(ta[1],tb[1])})}else if(tb[0]||tb[1]){s.push("translate("+tb+")")}}function d3_interpolateRotate(ra,rb,s,q){if(ra!==rb){if(ra-rb>180)rb+=360;else if(rb-ra>180)ra+=360;q.push({i:s.push(d3_interpolateTransformPop(s)+"rotate(",null,")")-2,x:d3_interpolateNumber(ra,rb)})}else if(rb){s.push(d3_interpolateTransformPop(s)+"rotate("+rb+")")}}function d3_interpolateSkew(wa,wb,s,q){if(wa!==wb){q.push({i:s.push(d3_interpolateTransformPop(s)+"skewX(",null,")")-2,x:d3_interpolateNumber(wa,wb)})}else if(wb){s.push(d3_interpolateTransformPop(s)+"skewX("+wb+")")}}function d3_interpolateScale(ka,kb,s,q){if(ka[0]!==kb[0]||ka[1]!==kb[1]){var i=s.push(d3_interpolateTransformPop(s)+"scale(",null,",",null,")");q.push({i:i-4,x:d3_interpolateNumber(ka[0],kb[0])},{i:i-2,x:d3_interpolateNumber(ka[1],kb[1])})}else if(kb[0]!==1||kb[1]!==1){s.push(d3_interpolateTransformPop(s)+"scale("+kb+")")}}function d3_interpolateTransform(a,b){var s=[],q=[];a=d3.transform(a),b=d3.transform(b);d3_interpolateTranslate(a.translate,b.translate,s,q);d3_interpolateRotate(a.rotate,b.rotate,s,q);d3_interpolateSkew(a.skew,b.skew,s,q);d3_interpolateScale(a.scale,b.scale,s,q);a=b=null;return function(t){var i=-1,n=q.length,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;return function(x){return(x-a)/b}}function d3_uninterpolateClamp(a,b){b=(b-=a=+a)||1/b;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:groupSums[di]};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"),timer,size=[1,1],drag,alpha,friction=.9,linkDistance=d3_layout_forceLinkDistance,linkStrength=d3_layout_forceLinkStrength,charge=-30,chargeDistance2=d3_layout_forceChargeDistance2,gravity=.1,theta2=.64,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,dw=x2-x1,dn=dx*dx+dy*dy;if(dw*dw/theta2<dn){if(dn<chargeDistance2){var k=quad.charge/dn;node.px-=dx*k;node.py-=dy*k}return true}if(quad.point&&dn&&dn<chargeDistance2){var k=quad.pointCharge/dn;node.px-=dx*k;node.py-=dy*k}}return!quad.charge}}force.tick=function(){if((alpha*=.99)<.005){timer=null;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/(s.weight+t.weight):.5);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.chargeDistance=function(x){if(!arguments.length)return Math.sqrt(chargeDistance2);chargeDistance2=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 Math.sqrt(theta2);theta2=x*x;return force};force.alpha=function(x){if(!arguments.length)return alpha;x=+x;if(alpha){if(x>0){alpha=x}else{timer.c=null,timer.t=NaN,timer=null;event.end({type:"end",alpha:alpha=0})}}else if(x>0){event.start({type:"start",alpha:alpha=x});timer=d3_timer(force.tick)}return force};force.start=function(){var i,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){if(!neighbors){neighbors=new Array(n);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)}}var candidates=neighbors[i],j=-1,l=candidates.length,x;while(++j<l)if(!isNaN(x=candidates[j][dimension]))return x;return Math.random()*size}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_forceChargeDistance2=Infinity;d3.layout.hierarchy=function(){var sort=d3_layout_hierarchySort,children=d3_layout_hierarchyChildren,value=d3_layout_hierarchyValue;function hierarchy(root){var stack=[root],nodes=[],node;root.depth=0;while((node=stack.pop())!=null){nodes.push(node);if((childs=children.call(hierarchy,node,node.depth))&&(n=childs.length)){var n,childs,child;while(--n>=0){stack.push(child=childs[n]);child.parent=node;child.depth=node.depth+1}if(value)node.value=0;node.children=childs}else{if(value)node.value=+value.call(hierarchy,node,node.depth)||0;
|
||
delete node.children}}d3_layout_hierarchyVisitAfter(root,function(node){var childs,parent;if(sort&&(childs=node.children))childs.sort(sort);if(value&&(parent=node.parent))parent.value+=node.value});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){if(value){d3_layout_hierarchyVisitBefore(root,function(node){if(node.children)node.value=0});d3_layout_hierarchyVisitAfter(root,function(node){var parent;if(!node.children)node.value=+value.call(hierarchy,node,node.depth)||0;if(parent=node.parent)parent.value+=node.value})}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_hierarchyVisitBefore(node,callback){var nodes=[node];while((node=nodes.pop())!=null){callback(node);if((children=node.children)&&(n=children.length)){var n,children;while(--n>=0)nodes.push(children[n])}}}function d3_layout_hierarchyVisitAfter(node,callback){var nodes=[node],nodes2=[];while((node=nodes.pop())!=null){nodes2.push(node);if((children=node.children)&&(n=children.length)){var i=-1,n,children;while(++i<n)nodes.push(children[i])}}while((node=nodes2.pop())!=null){callback(node)}}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=τ,padAngle=0;function pie(data){var n=data.length,values=data.map(function(d,i){return+value.call(pie,d,i)}),a=+(typeof startAngle==="function"?startAngle.apply(this,arguments):startAngle),da=(typeof endAngle==="function"?endAngle.apply(this,arguments):endAngle)-a,p=Math.min(Math.abs(da)/n,+(typeof padAngle==="function"?padAngle.apply(this,arguments):padAngle)),pa=p*(da<0?-1:1),sum=d3.sum(values),k=sum?(da-n*pa)/sum:0,index=d3.range(n),arcs=[],v;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])});index.forEach(function(i){arcs[i]={data:data[i],value:v=values[i],startAngle:a,endAngle:a+=v*k+pa,padAngle:p}});return arcs}pie.value=function(_){if(!arguments.length)return value;value=_;return pie};pie.sort=function(_){if(!arguments.length)return sort;sort=_;return pie};pie.startAngle=function(_){if(!arguments.length)return startAngle;startAngle=_;return pie};pie.endAngle=function(_){if(!arguments.length)return endAngle;endAngle=_;return pie};pie.padAngle=function(_){if(!arguments.length)return padAngle;padAngle=_;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){if(!(n=data.length))return data;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 m=series[0].length,n,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.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_hierarchyVisitAfter(root,function(d){d.r=+r(d.value)});d3_layout_hierarchyVisitAfter(root,d3_layout_packSiblings);if(padding){var dr=padding*(radius?1:Math.max(2*root.r/w,2*root.r/h))/2;d3_layout_hierarchyVisitAfter(root,function(d){d.r+=dr});d3_layout_hierarchyVisitAfter(root,d3_layout_packSiblings);d3_layout_hierarchyVisitAfter(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.tree=function(){var hierarchy=d3.layout.hierarchy().sort(null).value(null),separation=d3_layout_treeSeparation,size=[1,1],nodeSize=null;function tree(d,i){var nodes=hierarchy.call(this,d,i),root0=nodes[0],root1=wrapTree(root0);d3_layout_hierarchyVisitAfter(root1,firstWalk),root1.parent.m=-root1.z;d3_layout_hierarchyVisitBefore(root1,secondWalk);if(nodeSize)d3_layout_hierarchyVisitBefore(root0,sizeNode);else{var left=root0,right=root0,bottom=root0;d3_layout_hierarchyVisitBefore(root0,function(node){if(node.x<left.x)left=node;if(node.x>right.x)right=node;if(node.depth>bottom.depth)bottom=node});var tx=separation(left,right)/2-left.x,kx=size[0]/(right.x+separation(right,left)/2+tx),ky=size[1]/(bottom.depth||1);d3_layout_hierarchyVisitBefore(root0,function(node){node.x=(node.x+tx)*kx;node.y=node.depth*ky})}return nodes}function wrapTree(root0){var root1={A:null,children:[root0]},queue=[root1],node1;while((node1=queue.pop())!=null){for(var children=node1.children,child,i=0,n=children.length;i<n;++i){queue.push((children[i]=child={_:children[i],parent:node1,children:(child=children[i].children)&&child.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:i}).a=child)}}return root1.children[0]}function firstWalk(v){var children=v.children,siblings=v.parent.children,w=v.i?siblings[v.i-1]:null;if(children.length){d3_layout_treeShift(v);var midpoint=(children[0].z+children[children.length-1].z)/2;if(w){v.z=w.z+separation(v._,w._);v.m=v.z-midpoint}else{v.z=midpoint}}else if(w){v.z=w.z+separation(v._,w._)}v.parent.A=apportion(v,w,v.parent.A||siblings[0])}function secondWalk(v){v._.x=v.z+v.parent.m;v.m+=v.parent.m}function apportion(v,w,ancestor){if(w){var vip=v,vop=v,vim=w,vom=vip.parent.children[0],sip=vip.m,sop=vop.m,sim=vim.m,som=vom.m,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.a=v;shift=vim.z+sim-vip.z-sip+separation(vim._,vip._);if(shift>0){d3_layout_treeMove(d3_layout_treeAncestor(vim,v,ancestor),v,shift);sip+=shift;sop+=shift}sim+=vim.m;sip+=vip.m;som+=vom.m;sop+=vop.m}if(vim&&!d3_layout_treeRight(vop)){vop.t=vim;vop.m+=sim-sop}if(vip&&!d3_layout_treeLeft(vom)){vom.t=vip;vom.m+=sip-som;ancestor=v}}return ancestor}function sizeNode(node){node.x*=size[0];node.y=node.depth*size[1]}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?sizeNode:null;return tree};tree.nodeSize=function(x){if(!arguments.length)return nodeSize?size:null;nodeSize=(size=x)==null?null:sizeNode;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(v){var children=v.children;return children.length?children[0]:v.t}function d3_layout_treeRight(v){var children=v.children,n;return(n=children.length)?children[n-1]:v.t}function d3_layout_treeMove(wm,wp,shift){var change=shift/(wp.i-wm.i);wp.c-=change;wp.s+=shift;wm.c+=change;wp.z+=shift;wp.m+=shift}function d3_layout_treeShift(v){var shift=0,change=0,children=v.children,i=children.length,w;while(--i>=0){w=children[i];w.z+=shift;w.m+=shift;shift+=w.s+(change+=w.c)}}function d3_layout_treeAncestor(vim,v,ancestor){return vim.a.parent===v.parent?vim.a:ancestor}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_hierarchyVisitAfter(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_hierarchyVisitAfter(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=root.y=0;if(root.value)root.dx=size[0],root.dy=size[1];else root.dx=root.dy=0;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())}},bates:function(m){var random=d3.random.irwinHall(m);return function(){return random()/m}},irwinHall:function(m){return function(){for(var s=0,j=0;j<m;j++)s+=Math.random();return s}}};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){d3_scale_nice(domain,d3_scale_niceStep(d3_scale_linearTickRange(domain,m)[2]));d3_scale_nice(domain,d3_scale_niceStep(d3_scale_linearTickRange(domain,m)[2]));return domain}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 range=d3_scale_linearTickRange(domain,m);if(format){var match=d3_format_re.exec(format);match.shift();if(match[8]==="s"){var prefix=d3.formatPrefix(Math.max(abs(range[0]),abs(range[1])));if(!match[7])match[7]="."+d3_scale_linearPrecision(prefix.scale(range[2]));match[8]="f";format=d3.format(match.join(""));return function(d){return format(prefix.scale(d))+prefix.symbol}}if(!match[7])match[7]="."+d3_scale_linearFormatPrecision(match[8],range);format=match.join("")}else{format=",."+d3_scale_linearPrecision(range[2])+"f"}return d3.format(format)}var d3_scale_linearFormatSignificant={s:1,g:1,p:1,r:1,e:1};function d3_scale_linearPrecision(value){return-Math.floor(Math.log(value)/Math.LN10+.01)}function d3_scale_linearFormatPrecision(type,range){var p=d3_scale_linearPrecision(range[2]);return type in d3_scale_linearFormatSignificant?Math.abs(p-d3_scale_linearPrecision(Math.max(abs(range[0]),abs(range[1]))))+ +(type!=="e"):p-(type==="%")*2}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,base*n/scale.ticks().length);return function(d){var i=d/pow(Math.round(log(d)));if(i*base<base-.5)i*=base;return i<=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)):NaN))-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=domain.length<2?(start=(start+stop)/2,0):(stop-start)/(domain.length-1+padding);range=steps(start+step*padding/2,step);rangeBand=0;ranger={t:"rangePoints",a:arguments};return scale};scale.rangeRoundPoints=function(x,padding){if(arguments.length<2)padding=0;var start=x[0],stop=x[1],step=domain.length<2?(start=stop=Math.round((start+stop)/2),0):(stop-start)/(domain.length-1+padding)|0;range=steps(start+Math.round(step*padding/2+(stop-start-(domain.length-1+padding)*step)/2),step);rangeBand=0;ranger={t:"rangeRoundPoints",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));range=steps(start+Math.round((stop-start-(domain.length-padding)*step)/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.map(d3_number).filter(d3_numeric).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={};function d3_zero(){return 0}d3.svg.arc=function(){var innerRadius=d3_svg_arcInnerRadius,outerRadius=d3_svg_arcOuterRadius,cornerRadius=d3_zero,padRadius=d3_svg_arcAuto,startAngle=d3_svg_arcStartAngle,endAngle=d3_svg_arcEndAngle,padAngle=d3_svg_arcPadAngle;function arc(){var r0=Math.max(0,+innerRadius.apply(this,arguments)),r1=Math.max(0,+outerRadius.apply(this,arguments)),a0=startAngle.apply(this,arguments)-halfπ,a1=endAngle.apply(this,arguments)-halfπ,da=Math.abs(a1-a0),cw=a0>a1?0:1;if(r1<r0)rc=r1,r1=r0,r0=rc;if(da>=τε)return circleSegment(r1,cw)+(r0?circleSegment(r0,1-cw):"")+"Z";var rc,cr,rp,ap,p0=0,p1=0,x0,y0,x1,y1,x2,y2,x3,y3,path=[];if(ap=(+padAngle.apply(this,arguments)||0)/2){rp=padRadius===d3_svg_arcAuto?Math.sqrt(r0*r0+r1*r1):+padRadius.apply(this,arguments);if(!cw)p1*=-1;if(r1)p1=d3_asin(rp/r1*Math.sin(ap));if(r0)p0=d3_asin(rp/r0*Math.sin(ap))}if(r1){x0=r1*Math.cos(a0+p1);y0=r1*Math.sin(a0+p1);x1=r1*Math.cos(a1-p1);y1=r1*Math.sin(a1-p1);var l1=Math.abs(a1-a0-2*p1)<=π?0:1;if(p1&&d3_svg_arcSweep(x0,y0,x1,y1)===cw^l1){var h1=(a0+a1)/2;x0=r1*Math.cos(h1);y0=r1*Math.sin(h1);x1=y1=null}}else{x0=y0=0}if(r0){x2=r0*Math.cos(a1-p0);y2=r0*Math.sin(a1-p0);x3=r0*Math.cos(a0+p0);y3=r0*Math.sin(a0+p0);var l0=Math.abs(a0-a1+2*p0)<=π?0:1;if(p0&&d3_svg_arcSweep(x2,y2,x3,y3)===1-cw^l0){var h0=(a0+a1)/2;x2=r0*Math.cos(h0);y2=r0*Math.sin(h0);x3=y3=null}}else{x2=y2=0}if(da>ε&&(rc=Math.min(Math.abs(r1-r0)/2,+cornerRadius.apply(this,arguments)))>.001){cr=r0<r1^cw?0:1;var rc1=rc,rc0=rc;if(da<π){var oc=x3==null?[x2,y2]:x1==null?[x0,y0]:d3_geom_polygonIntersect([x0,y0],[x3,y3],[x1,y1],[x2,y2]),ax=x0-oc[0],ay=y0-oc[1],bx=x1-oc[0],by=y1-oc[1],kc=1/Math.sin(Math.acos((ax*bx+ay*by)/(Math.sqrt(ax*ax+ay*ay)*Math.sqrt(bx*bx+by*by)))/2),lc=Math.sqrt(oc[0]*oc[0]+oc[1]*oc[1]);rc0=Math.min(rc,(r0-lc)/(kc-1));rc1=Math.min(rc,(r1-lc)/(kc+1))}if(x1!=null){var t30=d3_svg_arcCornerTangents(x3==null?[x2,y2]:[x3,y3],[x0,y0],r1,rc1,cw),t12=d3_svg_arcCornerTangents([x1,y1],[x2,y2],r1,rc1,cw);if(rc===rc1){path.push("M",t30[0],"A",rc1,",",rc1," 0 0,",cr," ",t30[1],"A",r1,",",r1," 0 ",1-cw^d3_svg_arcSweep(t30[1][0],t30[1][1],t12[1][0],t12[1][1]),",",cw," ",t12[1],"A",rc1,",",rc1," 0 0,",cr," ",t12[0])}else{path.push("M",t30[0],"A",rc1,",",rc1," 0 1,",cr," ",t12[0])}}else{path.push("M",x0,",",y0)}if(x3!=null){var t03=d3_svg_arcCornerTangents([x0,y0],[x3,y3],r0,-rc0,cw),t21=d3_svg_arcCornerTangents([x2,y2],x1==null?[x0,y0]:[x1,y1],r0,-rc0,cw);if(rc===rc0){path.push("L",t21[0],"A",rc0,",",rc0," 0 0,",cr," ",t21[1],"A",r0,",",r0," 0 ",cw^d3_svg_arcSweep(t21[1][0],t21[1][1],t03[1][0],t03[1][1]),",",1-cw," ",t03[1],"A",rc0,",",rc0," 0 0,",cr," ",t03[0])}else{path.push("L",t21[0],"A",rc0,",",rc0," 0 0,",cr," ",t03[0])}}else{path.push("L",x2,",",y2)}}else{path.push("M",x0,",",y0);if(x1!=null)path.push("A",r1,",",r1," 0 ",l1,",",cw," ",x1,",",y1);path.push("L",x2,",",y2);if(x3!=null)path.push("A",r0,",",r0," 0 ",l0,",",1-cw," ",x3,",",y3)}path.push("Z");return path.join("")}function circleSegment(r1,cw){return"M0,"+r1+"A"+r1+","+r1+" 0 1,"+cw+" 0,"+-r1+"A"+r1+","+r1+" 0 1,"+cw+" 0,"+r1}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.cornerRadius=function(v){if(!arguments.length)return cornerRadius;cornerRadius=d3_functor(v);return arc};arc.padRadius=function(v){if(!arguments.length)return padRadius;padRadius=v==d3_svg_arcAuto?d3_svg_arcAuto: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.padAngle=function(v){if(!arguments.length)return padAngle;padAngle=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-halfπ;return[Math.cos(a)*r,Math.sin(a)*r]};return arc};var d3_svg_arcAuto="auto";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}function d3_svg_arcPadAngle(d){return d&&d.padAngle}function d3_svg_arcSweep(x0,y0,x1,y1){return(x0-x1)*y0-(y0-y1)*x0>0?0:1}function d3_svg_arcCornerTangents(p0,p1,r1,rc,cw){var x01=p0[0]-p1[0],y01=p0[1]-p1[1],lo=(cw?rc:-rc)/Math.sqrt(x01*x01+y01*y01),ox=lo*y01,oy=-lo*x01,x1=p0[0]+ox,y1=p0[1]+oy,x2=p1[0]+ox,y2=p1[1]+oy,x3=(x1+x2)/2,y3=(y1+y2)/2,dx=x2-x1,dy=y2-y1,d2=dx*dx+dy*dy,r=r1-rc,D=x1*y2-x2*y1,d=(dy<0?-1:1)*Math.sqrt(Math.max(0,r*r*d2-D*D)),cx0=(D*dy-dx*d)/d2,cy0=(-D*dx-dy*d)/d2,cx1=(D*dy+dx*d)/d2,cy1=(-D*dx+dy*d)/d2,dx0=cx0-x3,dy0=cy0-y3,dx1=cx1-x3,dy1=cy1-y3;if(dx0*dx0+dy0*dy0>dx1*dx1+dy1*dy1)cx0=cx1,cy0=cy1;return[[cx0-ox,cy0-oy],[cx0*r1/r,cy0*r1/r]]}function d3_svg_line(projection){var x=d3_geom_pointX,y=d3_geom_pointY,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)};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.length>1?points.join("L"):points+"Z"}function d3_svg_lineLinearClosed(points){return points.join("L")+"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,-1),d3_svg_lineCardinalTangents(points,tension))}function d3_svg_lineCardinalClosed(points,tension){return points.length<3?d3_svg_lineLinearClosed(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(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.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]-halfπ;point[0]=r*Math.cos(a);point[1]=r*Math.sin(a)}return points}function d3_svg_area(projection){var x0=d3_geom_pointX,x1=d3_geom_pointX,y0=0,y1=d3_geom_pointY,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)-halfπ,a1=endAngle.call(self,subgroup,i)-halfπ;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]-halfπ;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);d3_selectionPrototype.transition=function(name){var id=d3_transitionInheritId||++d3_transitionId,ns=d3_transitionNamespace(name),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,ns,id,transition);subgroup.push(node)}}return d3_transition(subgroups,ns,id)};d3_selectionPrototype.interrupt=function(name){return this.each(name==null?d3_selection_interrupt:d3_selection_interruptNS(d3_transitionNamespace(name)))};var d3_selection_interrupt=d3_selection_interruptNS(d3_transitionNamespace());function d3_selection_interruptNS(ns){return function(){var lock,activeId,active;if((lock=this[ns])&&(active=lock[activeId=lock.active])){active.timer.c=null;active.timer.t=NaN;if(--lock.count)delete lock[activeId];else delete this[ns];lock.active+=.5;active.event&&active.event.interrupt.call(this,this.__data__,active.index)}}}function d3_transition(groups,ns,id){d3_subclass(groups,d3_transitionPrototype);groups.namespace=ns;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,name){return selection&&selection.transition?d3_transitionInheritId?selection.transition(name):selection:d3.selection().transition(selection)};d3.transition.prototype=d3_transitionPrototype;d3_transitionPrototype.select=function(selector){var id=this.id,ns=this.namespace,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,ns,id,node[ns][id]);subgroup.push(subnode)}else{subgroup.push(null)}}}return d3_transition(subgroups,ns,id)};d3_transitionPrototype.selectAll=function(selector){var id=this.id,ns=this.namespace,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[ns][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,ns,id,transition);subgroup.push(subnode)}}}}return d3_transition(subgroups,ns,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,j)){subgroup.push(node)}}}return d3_transition(subgroups,this.namespace,this.id)};d3_transitionPrototype.tween=function(name,tween){var id=this.id,ns=this.namespace;if(arguments.length<2)return this.node()[ns][id].tween.get(name);return d3_selection_each(this,tween==null?function(node){node[ns][id].tween.remove(name)}:function(node){node[ns][id].tween.set(name,tween)})};function d3_transition_tween(groups,name,value,tween){var id=groups.id,ns=groups.namespace;return d3_selection_each(groups,typeof value==="function"?function(node,i,j){node[ns][id].tween.set(name,tween(value.call(node,node.__data__,i,j)))}:(value=tween(value),function(node){node[ns][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(this).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(this).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(){var ns=this.namespace;return this.each("end.transition",function(){var p;if(this[ns].count<2&&(p=this.parentNode))p.removeChild(this)})};d3_transitionPrototype.ease=function(value){var id=this.id,ns=this.namespace;if(arguments.length<1)return this.node()[ns][id].ease;if(typeof value!=="function")value=d3.ease.apply(d3,arguments);return d3_selection_each(this,function(node){node[ns][id].ease=value})};d3_transitionPrototype.delay=function(value){var id=this.id,ns=this.namespace;if(arguments.length<1)return this.node()[ns][id].delay;return d3_selection_each(this,typeof value==="function"?function(node,i,j){node[ns][id].delay=+value.call(node,node.__data__,i,j)}:(value=+value,function(node){node[ns][id].delay=value}))};d3_transitionPrototype.duration=function(value){var id=this.id,ns=this.namespace;if(arguments.length<1)return this.node()[ns][id].duration;return d3_selection_each(this,typeof value==="function"?function(node,i,j){node[ns][id].duration=Math.max(1,value.call(node,node.__data__,i,j))}:(value=Math.max(1,value),function(node){node[ns][id].duration=value}))};d3_transitionPrototype.each=function(type,listener){var id=this.id,ns=this.namespace;if(arguments.length<2){var inherit=d3_transitionInherit,inheritId=d3_transitionInheritId;try{d3_transitionInheritId=id;d3_selection_each(this,function(node,i,j){d3_transitionInherit=node[ns][id];type.call(node,node.__data__,i,j)})}finally{d3_transitionInherit=inherit;d3_transitionInheritId=inheritId}}else{d3_selection_each(this,function(node){var transition=node[ns][id];(transition.event||(transition.event=d3.dispatch("start","end","interrupt"))).on(type,listener)})}return this};d3_transitionPrototype.transition=function(){var id0=this.id,id1=++d3_transitionId,ns=this.namespace,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=node[ns][id0];d3_transitionNode(node,i,ns,id1,{time:transition.time,ease:transition.ease,delay:transition.delay+transition.duration,duration:transition.duration})}subgroup.push(node)}}return d3_transition(subgroups,ns,id1)};function d3_transitionNamespace(name){return name==null?"__transition__":"__transition_"+name+"__"}function d3_transitionNode(node,i,ns,id,inherit){var lock=node[ns]||(node[ns]={active:0,count:0}),transition=lock[id],time,timer,duration,ease,tweens;function schedule(elapsed){var delay=transition.delay;timer.t=delay+time;if(delay<=elapsed)return start(elapsed-delay);timer.c=start}function start(elapsed){var activeId=lock.active,active=lock[activeId];if(active){active.timer.c=null;active.timer.t=NaN;--lock.count;delete lock[activeId];active.event&&active.event.interrupt.call(node,node.__data__,active.index)}for(var cancelId in lock){if(+cancelId<id){var cancel=lock[cancelId];cancel.timer.c=null;cancel.timer.t=NaN;--lock.count;delete lock[cancelId]}}timer.c=tick;d3_timer(function(){if(timer.c&&tick(elapsed||1)){timer.c=null;timer.t=NaN}return 1},0,time);lock.active=id;transition.event&&transition.event.start.call(node,node.__data__,i);tweens=[];transition.tween.forEach(function(key,value){if(value=value.call(node,node.__data__,i)){tweens.push(value)}});ease=transition.ease;duration=transition.duration}function tick(elapsed){var t=elapsed/duration,e=ease(t),n=tweens.length;while(n>0){tweens[--n].call(node,e)}if(t>=1){transition.event&&transition.event.end.call(node,node.__data__,i);if(--lock.count)delete lock[id];else delete node[ns];return 1}}if(!transition){time=inherit.time;timer=d3_timer(schedule,0,time);transition=lock[id]={tween:new d3_Map,time:time,timer:timer,delay:inherit.delay,duration:inherit.duration,ease:inherit.ease,index:i};inherit=null;++lock.count}}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.order()).style("opacity",1),tickSpacing=Math.max(innerTickSize,0)+tickPadding,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"),sign=orient==="top"||orient==="left"?-1:1,x1,x2,y1,y2;if(orient==="bottom"||orient==="top"){tickTransform=d3_svg_axisX,x1="x",y1="y",x2="x2",y2="y2";text.attr("dy",sign<0?"0em":".71em").style("text-anchor","middle");pathUpdate.attr("d","M"+range[0]+","+sign*outerTickSize+"V0H"+range[1]+"V"+sign*outerTickSize)}else{tickTransform=d3_svg_axisY,x1="y",y1="x",x2="y2",y2="x2";text.attr("dy",".32em").style("text-anchor",sign<0?"end":"start");pathUpdate.attr("d","M"+sign*outerTickSize+","+range[0]+"H0V"+range[1]+"H"+sign*outerTickSize)}lineEnter.attr(y2,sign*innerTickSize);textEnter.attr(y1,sign*tickSpacing);lineUpdate.attr(x2,0).attr(y2,sign*innerTickSize);textUpdate.attr(x1,0).attr(y1,sign*tickSpacing);if(scale1.rangeBand){var x=scale1,dx=x.rangeBand()/2;scale0=scale1=function(d){return x(d)+dx}}else if(scale0.rangeBand){scale0=scale1}else{tickExit.call(tickTransform,scale1,scale0)}tickEnter.call(tickTransform,scale0,scale1);tickUpdate.call(tickTransform,scale1,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_=d3_array(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,x0,x1){selection.attr("transform",function(d){var v0=x0(d);return"translate("+(isFinite(v0)?v0:x1(d))+",0)"})}function d3_svg_axisY(selection,y0,y1){selection.attr("transform",function(d){var v0=y0(d);return"translate(0,"+(isFinite(v0)?v0:y1(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(target),center,origin=d3.mouse(target),offset;var w=d3.select(d3_window(target)).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_format=d3_time.format=d3_locale_enUS.timeFormat;var d3_time_formatUtc=d3_time_format.utc;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)}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_scaleLocalFormat=d3_time_format.multi([[".%L",function(d){return d.getMilliseconds()}],[":%S",function(d){return d.getSeconds()}],["%I:%M",function(d){return d.getMinutes()}],["%I %p",function(d){return d.getHours()}],["%a %d",function(d){return d.getDay()&&d.getDate()!=1}],["%b %d",function(d){return d.getDate()!=1}],["%B",function(d){return d.getMonth()}],["%Y",d3_true]]);var d3_time_scaleMilliseconds={range:function(start,stop,step){return d3.range(Math.ceil(start/step)*step,+stop,step).map(d3_time_scaleDate)},floor:d3_identity,ceil:d3_identity};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_scaleUtcMethods=d3_time_scaleLocalMethods.map(function(m){return[m[0].utc,m[1]]});var d3_time_scaleUtcFormat=d3_time_formatUtc.multi([[".%L",function(d){return d.getUTCMilliseconds()}],[":%S",function(d){return d.getUTCSeconds()}],["%I:%M",function(d){return d.getUTCMinutes()}],["%I %p",function(d){return d.getUTCHours()}],["%a %d",function(d){return d.getUTCDay()&&d.getUTCDate()!=1}],["%b %d",function(d){return d.getUTCDate()!=1}],["%B",function(d){return d.getUTCMonth()}],["%Y",d3_true]]);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});if(typeof define==="function"&&define.amd)this.d3=d3,define(d3);else if(typeof module==="object"&&module.exports)module.exports=d3;else this.d3=d3}();
|
||
</script><script>/*
|
||
* Copyright 2011 Twitter, Inc.
|
||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
* you may not use this file except in compliance with the License.
|
||
* You may obtain a copy of the License at
|
||
*
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Unless required by applicable law or agreed to in writing, software
|
||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
* See the License for the specific language governing permissions and
|
||
* limitations under the License.
|
||
*/
|
||
|
||
|
||
|
||
var Hogan = {};
|
||
|
||
(function (Hogan, useArrayBuffer) {
|
||
Hogan.Template = function (renderFunc, text, compiler, options) {
|
||
this.r = renderFunc || this.r;
|
||
this.c = compiler;
|
||
this.options = options;
|
||
this.text = text || '';
|
||
this.buf = (useArrayBuffer) ? [] : '';
|
||
}
|
||
|
||
Hogan.Template.prototype = {
|
||
// render: replaced by generated code.
|
||
r: function (context, partials, indent) { return ''; },
|
||
|
||
// variable escaping
|
||
v: hoganEscape,
|
||
|
||
// triple stache
|
||
t: coerceToString,
|
||
|
||
render: function render(context, partials, indent) {
|
||
return this.ri([context], partials || {}, indent);
|
||
},
|
||
|
||
// render internal -- a hook for overrides that catches partials too
|
||
ri: function (context, partials, indent) {
|
||
return this.r(context, partials, indent);
|
||
},
|
||
|
||
// tries to find a partial in the curent scope and render it
|
||
rp: function(name, context, partials, indent) {
|
||
var partial = partials[name];
|
||
|
||
if (!partial) {
|
||
return '';
|
||
}
|
||
|
||
if (this.c && typeof partial == 'string') {
|
||
partial = this.c.compile(partial, this.options);
|
||
}
|
||
|
||
return partial.ri(context, partials, indent);
|
||
},
|
||
|
||
// render a section
|
||
rs: function(context, partials, section) {
|
||
var tail = context[context.length - 1];
|
||
|
||
if (!isArray(tail)) {
|
||
section(context, partials, this);
|
||
return;
|
||
}
|
||
|
||
for (var i = 0; i < tail.length; i++) {
|
||
context.push(tail[i]);
|
||
section(context, partials, this);
|
||
context.pop();
|
||
}
|
||
},
|
||
|
||
// maybe start a section
|
||
s: function(val, ctx, partials, inverted, start, end, tags) {
|
||
var pass;
|
||
|
||
if (isArray(val) && val.length === 0) {
|
||
return false;
|
||
}
|
||
|
||
if (typeof val == 'function') {
|
||
val = this.ls(val, ctx, partials, inverted, start, end, tags);
|
||
}
|
||
|
||
pass = (val === '') || !!val;
|
||
|
||
if (!inverted && pass && ctx) {
|
||
ctx.push((typeof val == 'object') ? val : ctx[ctx.length - 1]);
|
||
}
|
||
|
||
return pass;
|
||
},
|
||
|
||
// find values with dotted names
|
||
d: function(key, ctx, partials, returnFound) {
|
||
var names = key.split('.'),
|
||
val = this.f(names[0], ctx, partials, returnFound),
|
||
cx = null;
|
||
|
||
if (key === '.' && isArray(ctx[ctx.length - 2])) {
|
||
return ctx[ctx.length - 1];
|
||
}
|
||
|
||
for (var i = 1; i < names.length; i++) {
|
||
if (val && typeof val == 'object' && names[i] in val) {
|
||
cx = val;
|
||
val = val[names[i]];
|
||
} else {
|
||
val = '';
|
||
}
|
||
}
|
||
|
||
if (returnFound && !val) {
|
||
return false;
|
||
}
|
||
|
||
if (!returnFound && typeof val == 'function') {
|
||
ctx.push(cx);
|
||
val = this.lv(val, ctx, partials);
|
||
ctx.pop();
|
||
}
|
||
|
||
return val;
|
||
},
|
||
|
||
// find values with normal names
|
||
f: function(key, ctx, partials, returnFound) {
|
||
var val = false,
|
||
v = null,
|
||
found = false;
|
||
|
||
for (var i = ctx.length - 1; i >= 0; i--) {
|
||
v = ctx[i];
|
||
if (v && typeof v == 'object' && key in v) {
|
||
val = v[key];
|
||
found = true;
|
||
break;
|
||
}
|
||
}
|
||
|
||
if (!found) {
|
||
return (returnFound) ? false : "";
|
||
}
|
||
|
||
if (!returnFound && typeof val == 'function') {
|
||
val = this.lv(val, ctx, partials);
|
||
}
|
||
|
||
return val;
|
||
},
|
||
|
||
// higher order templates
|
||
ho: function(val, cx, partials, text, tags) {
|
||
var compiler = this.c;
|
||
var options = this.options;
|
||
options.delimiters = tags;
|
||
var text = val.call(cx, text);
|
||
text = (text == null) ? String(text) : text.toString();
|
||
this.b(compiler.compile(text, options).render(cx, partials));
|
||
return false;
|
||
},
|
||
|
||
// template result buffering
|
||
b: (useArrayBuffer) ? function(s) { this.buf.push(s); } :
|
||
function(s) { this.buf += s; },
|
||
fl: (useArrayBuffer) ? function() { var r = this.buf.join(''); this.buf = []; return r; } :
|
||
function() { var r = this.buf; this.buf = ''; return r; },
|
||
|
||
// lambda replace section
|
||
ls: function(val, ctx, partials, inverted, start, end, tags) {
|
||
var cx = ctx[ctx.length - 1],
|
||
t = null;
|
||
|
||
if (!inverted && this.c && val.length > 0) {
|
||
return this.ho(val, cx, partials, this.text.substring(start, end), tags);
|
||
}
|
||
|
||
t = val.call(cx);
|
||
|
||
if (typeof t == 'function') {
|
||
if (inverted) {
|
||
return true;
|
||
} else if (this.c) {
|
||
return this.ho(t, cx, partials, this.text.substring(start, end), tags);
|
||
}
|
||
}
|
||
|
||
return t;
|
||
},
|
||
|
||
// lambda replace variable
|
||
lv: function(val, ctx, partials) {
|
||
var cx = ctx[ctx.length - 1];
|
||
var result = val.call(cx);
|
||
|
||
if (typeof result == 'function') {
|
||
result = coerceToString(result.call(cx));
|
||
if (this.c && ~result.indexOf("{\u007B")) {
|
||
return this.c.compile(result, this.options).render(cx, partials);
|
||
}
|
||
}
|
||
|
||
return coerceToString(result);
|
||
}
|
||
|
||
};
|
||
|
||
var rAmp = /&/g,
|
||
rLt = /</g,
|
||
rGt = />/g,
|
||
rApos =/\'/g,
|
||
rQuot = /\"/g,
|
||
hChars =/[&<>\"\']/;
|
||
|
||
|
||
function coerceToString(val) {
|
||
return String((val === null || val === undefined) ? '' : val);
|
||
}
|
||
|
||
function hoganEscape(str) {
|
||
str = coerceToString(str);
|
||
return hChars.test(str) ?
|
||
str
|
||
.replace(rAmp,'&')
|
||
.replace(rLt,'<')
|
||
.replace(rGt,'>')
|
||
.replace(rApos,''')
|
||
.replace(rQuot, '"') :
|
||
str;
|
||
}
|
||
|
||
var isArray = Array.isArray || function(a) {
|
||
return Object.prototype.toString.call(a) === '[object Array]';
|
||
};
|
||
|
||
})(typeof exports !== 'undefined' ? exports : Hogan);
|
||
|
||
|
||
|
||
|
||
(function (Hogan) {
|
||
// Setup regex assignments
|
||
// remove whitespace according to Mustache spec
|
||
var rIsWhitespace = /\S/,
|
||
rQuot = /\"/g,
|
||
rNewline = /\n/g,
|
||
rCr = /\r/g,
|
||
rSlash = /\\/g,
|
||
tagTypes = {
|
||
'#': 1, '^': 2, '/': 3, '!': 4, '>': 5,
|
||
'<': 6, '=': 7, '_v': 8, '{': 9, '&': 10
|
||
};
|
||
|
||
Hogan.scan = function scan(text, delimiters) {
|
||
var len = text.length,
|
||
IN_TEXT = 0,
|
||
IN_TAG_TYPE = 1,
|
||
IN_TAG = 2,
|
||
state = IN_TEXT,
|
||
tagType = null,
|
||
tag = null,
|
||
buf = '',
|
||
tokens = [],
|
||
seenTag = false,
|
||
i = 0,
|
||
lineStart = 0,
|
||
otag = '{{',
|
||
ctag = '}}';
|
||
|
||
function addBuf() {
|
||
if (buf.length > 0) {
|
||
tokens.push(new String(buf));
|
||
buf = '';
|
||
}
|
||
}
|
||
|
||
function lineIsWhitespace() {
|
||
var isAllWhitespace = true;
|
||
for (var j = lineStart; j < tokens.length; j++) {
|
||
isAllWhitespace =
|
||
(tokens[j].tag && tagTypes[tokens[j].tag] < tagTypes['_v']) ||
|
||
(!tokens[j].tag && tokens[j].match(rIsWhitespace) === null);
|
||
if (!isAllWhitespace) {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
return isAllWhitespace;
|
||
}
|
||
|
||
function filterLine(haveSeenTag, noNewLine) {
|
||
addBuf();
|
||
|
||
if (haveSeenTag && lineIsWhitespace()) {
|
||
for (var j = lineStart, next; j < tokens.length; j++) {
|
||
if (!tokens[j].tag) {
|
||
if ((next = tokens[j+1]) && next.tag == '>') {
|
||
// set indent to token value
|
||
next.indent = tokens[j].toString()
|
||
}
|
||
tokens.splice(j, 1);
|
||
}
|
||
}
|
||
} else if (!noNewLine) {
|
||
tokens.push({tag:'\n'});
|
||
}
|
||
|
||
seenTag = false;
|
||
lineStart = tokens.length;
|
||
}
|
||
|
||
function changeDelimiters(text, index) {
|
||
var close = '=' + ctag,
|
||
closeIndex = text.indexOf(close, index),
|
||
delimiters = trim(
|
||
text.substring(text.indexOf('=', index) + 1, closeIndex)
|
||
).split(' ');
|
||
|
||
otag = delimiters[0];
|
||
ctag = delimiters[1];
|
||
|
||
return closeIndex + close.length - 1;
|
||
}
|
||
|
||
if (delimiters) {
|
||
delimiters = delimiters.split(' ');
|
||
otag = delimiters[0];
|
||
ctag = delimiters[1];
|
||
}
|
||
|
||
for (i = 0; i < len; i++) {
|
||
if (state == IN_TEXT) {
|
||
if (tagChange(otag, text, i)) {
|
||
--i;
|
||
addBuf();
|
||
state = IN_TAG_TYPE;
|
||
} else {
|
||
if (text.charAt(i) == '\n') {
|
||
filterLine(seenTag);
|
||
} else {
|
||
buf += text.charAt(i);
|
||
}
|
||
}
|
||
} else if (state == IN_TAG_TYPE) {
|
||
i += otag.length - 1;
|
||
tag = tagTypes[text.charAt(i + 1)];
|
||
tagType = tag ? text.charAt(i + 1) : '_v';
|
||
if (tagType == '=') {
|
||
i = changeDelimiters(text, i);
|
||
state = IN_TEXT;
|
||
} else {
|
||
if (tag) {
|
||
i++;
|
||
}
|
||
state = IN_TAG;
|
||
}
|
||
seenTag = i;
|
||
} else {
|
||
if (tagChange(ctag, text, i)) {
|
||
tokens.push({tag: tagType, n: trim(buf), otag: otag, ctag: ctag,
|
||
i: (tagType == '/') ? seenTag - ctag.length : i + otag.length});
|
||
buf = '';
|
||
i += ctag.length - 1;
|
||
state = IN_TEXT;
|
||
if (tagType == '{') {
|
||
if (ctag == '}}') {
|
||
i++;
|
||
} else {
|
||
cleanTripleStache(tokens[tokens.length - 1]);
|
||
}
|
||
}
|
||
} else {
|
||
buf += text.charAt(i);
|
||
}
|
||
}
|
||
}
|
||
|
||
filterLine(seenTag, true);
|
||
|
||
return tokens;
|
||
}
|
||
|
||
function cleanTripleStache(token) {
|
||
if (token.n.substr(token.n.length - 1) === '}') {
|
||
token.n = token.n.substring(0, token.n.length - 1);
|
||
}
|
||
}
|
||
|
||
function trim(s) {
|
||
if (s.trim) {
|
||
return s.trim();
|
||
}
|
||
|
||
return s.replace(/^\s*|\s*$/g, '');
|
||
}
|
||
|
||
function tagChange(tag, text, index) {
|
||
if (text.charAt(index) != tag.charAt(0)) {
|
||
return false;
|
||
}
|
||
|
||
for (var i = 1, l = tag.length; i < l; i++) {
|
||
if (text.charAt(index + i) != tag.charAt(i)) {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
return true;
|
||
}
|
||
|
||
function buildTree(tokens, kind, stack, customTags) {
|
||
var instructions = [],
|
||
opener = null,
|
||
token = null;
|
||
|
||
while (tokens.length > 0) {
|
||
token = tokens.shift();
|
||
if (token.tag == '#' || token.tag == '^' || isOpener(token, customTags)) {
|
||
stack.push(token);
|
||
token.nodes = buildTree(tokens, token.tag, stack, customTags);
|
||
instructions.push(token);
|
||
} else if (token.tag == '/') {
|
||
if (stack.length === 0) {
|
||
throw new Error('Closing tag without opener: /' + token.n);
|
||
}
|
||
opener = stack.pop();
|
||
if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) {
|
||
throw new Error('Nesting error: ' + opener.n + ' vs. ' + token.n);
|
||
}
|
||
opener.end = token.i;
|
||
return instructions;
|
||
} else {
|
||
instructions.push(token);
|
||
}
|
||
}
|
||
|
||
if (stack.length > 0) {
|
||
throw new Error('missing closing tag: ' + stack.pop().n);
|
||
}
|
||
|
||
return instructions;
|
||
}
|
||
|
||
function isOpener(token, tags) {
|
||
for (var i = 0, l = tags.length; i < l; i++) {
|
||
if (tags[i].o == token.n) {
|
||
token.tag = '#';
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
|
||
function isCloser(close, open, tags) {
|
||
for (var i = 0, l = tags.length; i < l; i++) {
|
||
if (tags[i].c == close && tags[i].o == open) {
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
|
||
Hogan.generate = function (tree, text, options) {
|
||
var code = 'var _=this;_.b(i=i||"");' + walk(tree) + 'return _.fl();';
|
||
if (options.asString) {
|
||
return 'function(c,p,i){' + code + ';}';
|
||
}
|
||
|
||
return new Hogan.Template(new Function('c', 'p', 'i', code), text, Hogan, options);
|
||
}
|
||
|
||
function esc(s) {
|
||
return s.replace(rSlash, '\\\\')
|
||
.replace(rQuot, '\\\"')
|
||
.replace(rNewline, '\\n')
|
||
.replace(rCr, '\\r');
|
||
}
|
||
|
||
function chooseMethod(s) {
|
||
return (~s.indexOf('.')) ? 'd' : 'f';
|
||
}
|
||
|
||
function walk(tree) {
|
||
var code = '';
|
||
for (var i = 0, l = tree.length; i < l; i++) {
|
||
var tag = tree[i].tag;
|
||
if (tag == '#') {
|
||
code += section(tree[i].nodes, tree[i].n, chooseMethod(tree[i].n),
|
||
tree[i].i, tree[i].end, tree[i].otag + " " + tree[i].ctag);
|
||
} else if (tag == '^') {
|
||
code += invertedSection(tree[i].nodes, tree[i].n,
|
||
chooseMethod(tree[i].n));
|
||
} else if (tag == '<' || tag == '>') {
|
||
code += partial(tree[i]);
|
||
} else if (tag == '{' || tag == '&') {
|
||
code += tripleStache(tree[i].n, chooseMethod(tree[i].n));
|
||
} else if (tag == '\n') {
|
||
code += text('"\\n"' + (tree.length-1 == i ? '' : ' + i'));
|
||
} else if (tag == '_v') {
|
||
code += variable(tree[i].n, chooseMethod(tree[i].n));
|
||
} else if (tag === undefined) {
|
||
code += text('"' + esc(tree[i]) + '"');
|
||
}
|
||
}
|
||
return code;
|
||
}
|
||
|
||
function section(nodes, id, method, start, end, tags) {
|
||
return 'if(_.s(_.' + method + '("' + esc(id) + '",c,p,1),' +
|
||
'c,p,0,' + start + ',' + end + ',"' + tags + '")){' +
|
||
'_.rs(c,p,' +
|
||
'function(c,p,_){' +
|
||
walk(nodes) +
|
||
'});c.pop();}';
|
||
}
|
||
|
||
function invertedSection(nodes, id, method) {
|
||
return 'if(!_.s(_.' + method + '("' + esc(id) + '",c,p,1),c,p,1,0,0,"")){' +
|
||
walk(nodes) +
|
||
'};';
|
||
}
|
||
|
||
function partial(tok) {
|
||
return '_.b(_.rp("' + esc(tok.n) + '",c,p,"' + (tok.indent || '') + '"));';
|
||
}
|
||
|
||
function tripleStache(id, method) {
|
||
return '_.b(_.t(_.' + method + '("' + esc(id) + '",c,p,0)));';
|
||
}
|
||
|
||
function variable(id, method) {
|
||
return '_.b(_.v(_.' + method + '("' + esc(id) + '",c,p,0)));';
|
||
}
|
||
|
||
function text(id) {
|
||
return '_.b(' + id + ');';
|
||
}
|
||
|
||
Hogan.parse = function(tokens, text, options) {
|
||
options = options || {};
|
||
return buildTree(tokens, '', [], options.sectionTags || []);
|
||
},
|
||
|
||
Hogan.cache = {};
|
||
|
||
Hogan.compile = function(text, options) {
|
||
// options
|
||
//
|
||
// asString: false (default)
|
||
//
|
||
// sectionTags: [{o: '_foo', c: 'foo'}]
|
||
// An array of object with o and c fields that indicate names for custom
|
||
// section tags. The example above allows parsing of {{_foo}}{{/foo}}.
|
||
//
|
||
// delimiters: A string that overrides the default delimiters.
|
||
// Example: "<% %>"
|
||
//
|
||
options = options || {};
|
||
|
||
var key = text + '||' + !!options.asString;
|
||
|
||
var t = this.cache[key];
|
||
|
||
if (t) {
|
||
return t;
|
||
}
|
||
|
||
t = this.generate(this.parse(this.scan(text, options.delimiters), text, options), text, options);
|
||
return this.cache[key] = t;
|
||
};
|
||
})(typeof exports !== 'undefined' ? exports : Hogan);
|
||
|
||
</script><script>'use strict';
|
||
|
||
// Syntactic sugar
|
||
function $(selector) {
|
||
return document.querySelector(selector);
|
||
}
|
||
|
||
// Syntactic sugar & execute callback
|
||
function $$(selector, callback) {
|
||
var elems = document.querySelectorAll(selector);
|
||
for (var i = 0; i < elems.length; ++i) {
|
||
if (callback && typeof callback == 'function')
|
||
callback.call(this, elems[i]);
|
||
}
|
||
}
|
||
|
||
var debounce = function (func, wait, now) {
|
||
var timeout;
|
||
return function debounced () {
|
||
var that = this, args = arguments;
|
||
function delayed() {
|
||
if (!now)
|
||
func.apply(that, args);
|
||
timeout = null;
|
||
};
|
||
if (timeout)
|
||
clearTimeout(timeout);
|
||
else if (now)
|
||
func.apply(obj, args);
|
||
timeout = setTimeout(delayed, wait || 250);
|
||
};
|
||
};
|
||
|
||
// global namespace
|
||
window.GoAccess = window.GoAccess || {
|
||
initialize: function (options) {
|
||
this.opts = options;
|
||
|
||
this.AppState = {}; // current state app key-value store
|
||
this.AppTpls = {}; // precompiled templates
|
||
this.AppCharts = {}; // holds all rendered charts
|
||
this.AppUIData = (this.opts || {}).uiData || {}; // holds panel definitions
|
||
this.AppData = (this.opts || {}).panelData || {}; // hold raw data
|
||
this.AppWSConn = (this.opts || {}).wsConnection || {}; // WebSocket connection
|
||
this.AppPrefs = {
|
||
'theme': 'darkBlue',
|
||
'perPage': 7,
|
||
'layout': 'horizontal',
|
||
'autoHideTables': true,
|
||
};
|
||
this.AppPrefs = GoAccess.Util.merge(this.AppPrefs, this.opts.prefs);
|
||
|
||
if (GoAccess.Util.hasLocalStorage()) {
|
||
var ls = JSON.parse(localStorage.getItem('AppPrefs'));
|
||
this.AppPrefs = GoAccess.Util.merge(this.AppPrefs, ls);
|
||
}
|
||
if (Object.keys(this.AppWSConn).length)
|
||
this.setWebSocket(this.AppWSConn);
|
||
|
||
},
|
||
|
||
getPanelUI: function (panel) {
|
||
return panel ? this.AppUIData[panel] : this.AppUIData;
|
||
},
|
||
|
||
getPrefs: function (panel) {
|
||
return panel ? this.AppPrefs[panel] : this.AppPrefs;
|
||
},
|
||
|
||
setPrefs: function () {
|
||
if (GoAccess.Util.hasLocalStorage()) {
|
||
localStorage.setItem('AppPrefs', JSON.stringify(GoAccess.getPrefs()));
|
||
}
|
||
},
|
||
|
||
getPanelData: function (panel) {
|
||
return panel ? this.AppData[panel] : this.AppData;
|
||
},
|
||
|
||
setWebSocket: function (wsConn) {
|
||
var host = null, host = wsConn.url ? wsConn.url : window.location.hostname ? window.location.hostname : "localhost";
|
||
var str = /^(wss?:\/\/)?[^\/]+:[0-9]{1,5}\//.test(host + "/") ? host : String(host + ':' + wsConn.port);
|
||
str = !/^wss?:\/\//i.test(str) ? 'ws://' + str : str;
|
||
|
||
var socket = new WebSocket(str);
|
||
socket.onopen = function (event) {
|
||
GoAccess.Nav.WSOpen();
|
||
}.bind(this);
|
||
|
||
socket.onmessage = function (event) {
|
||
this.AppState['updated'] = true;
|
||
this.AppData = JSON.parse(event.data);
|
||
this.App.renderData();
|
||
}.bind(this);
|
||
|
||
socket.onclose = function (event) {
|
||
GoAccess.Nav.WSClose();
|
||
}.bind(this);
|
||
},
|
||
};
|
||
|
||
// HELPERS
|
||
GoAccess.Util = {
|
||
months: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul","Aug", "Sep", "Oct", "Nov", "Dec"],
|
||
|
||
// Add all attributes of n to o
|
||
merge: function (o, n) {
|
||
var obj = {}, i = 0, il = arguments.length, key;
|
||
for (; i < il; i++) {
|
||
for (key in arguments[i]) {
|
||
if (arguments[i].hasOwnProperty(key)) {
|
||
obj[key] = arguments[i][key];
|
||
}
|
||
}
|
||
}
|
||
return obj;
|
||
},
|
||
|
||
// hash a string
|
||
hashCode: function (s) {
|
||
return (s.split('').reduce(function (a, b) {
|
||
a = ((a << 5) - a) + b.charCodeAt(0);
|
||
return a&a;
|
||
}, 0) >>> 0).toString(16);
|
||
},
|
||
|
||
// Format bytes to human readable
|
||
formatBytes: function (bytes, decimals, numOnly) {
|
||
if (bytes == 0)
|
||
return numOnly ? 0 : '0 Byte';
|
||
var k = 1024;
|
||
var dm = decimals + 1 || 2;
|
||
var sizes = ['B', 'KiB', 'MiB', 'GiB', 'TiB'];
|
||
var i = Math.floor(Math.log(bytes) / Math.log(k));
|
||
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + (numOnly ? '' : (' ' + sizes[i]));
|
||
},
|
||
|
||
// Validate number
|
||
isNumeric: function (n) {
|
||
return !isNaN(parseFloat(n)) && isFinite(n);
|
||
},
|
||
|
||
// Format microseconds to human readable
|
||
utime2str: function (usec) {
|
||
if (usec >= 864E8)
|
||
return ((usec) / 864E8).toFixed(2) + ' d';
|
||
else if (usec >= 36E8)
|
||
return ((usec) / 36E8).toFixed(2) + ' h';
|
||
else if (usec >= 6E7)
|
||
return ((usec) / 6E7).toFixed(2) + ' m';
|
||
else if (usec >= 1E6)
|
||
return ((usec) / 1E6).toFixed(2) + ' s';
|
||
else if (usec >= 1E3)
|
||
return ((usec) / 1E3).toFixed(2) + ' ms';
|
||
return (usec).toFixed(2) + ' us';
|
||
},
|
||
|
||
// Format date from 20120124 to 24/Jan/2012
|
||
formatDate: function (str) {
|
||
var y = str.substr(0,4), m = str.substr(4,2) - 1, d = str.substr(6,2),
|
||
h = str.substr(8,2) || 0, i = str.substr(10, 2) || 0, s = str.substr(12, 2) || 0;
|
||
var date = new Date(y,m,d,h,i,s);
|
||
|
||
var out = ('0' + date.getDate()).slice(-2) + '/' + this.months[date.getMonth()] + '/' + date.getFullYear();
|
||
10 <= str.length && (out += ":" + h);
|
||
12 <= str.length && (out += ":" + i);
|
||
14 <= str.length && (out += ":" + s);
|
||
return out;
|
||
},
|
||
|
||
// Format field value to human readable
|
||
fmtValue: function (value, dataType) {
|
||
var val = 0;
|
||
if (!dataType)
|
||
val = value;
|
||
|
||
switch (dataType) {
|
||
case 'utime':
|
||
val = this.utime2str(value);
|
||
break;
|
||
case 'date':
|
||
val = this.formatDate(value);
|
||
break;
|
||
case 'numeric':
|
||
if (this.isNumeric(value))
|
||
val = value.toLocaleString();
|
||
break;
|
||
case 'bytes':
|
||
val = this.formatBytes(value);
|
||
break;
|
||
case 'percent':
|
||
val = value.toFixed(2) + '%';
|
||
break;
|
||
case 'time':
|
||
if (this.isNumeric(value))
|
||
val = value.toLocaleString();
|
||
break;
|
||
case 'secs':
|
||
val = value + ' secs';
|
||
break;
|
||
default:
|
||
val = value;
|
||
};
|
||
|
||
return value == 0 ? String(val) : val;
|
||
},
|
||
|
||
isPanelValid: function (panel) {
|
||
var data = GoAccess.getPanelData(), ui = GoAccess.getPanelUI();
|
||
return (!ui.hasOwnProperty(panel) || !data.hasOwnProperty(panel) || !ui[panel].id);
|
||
},
|
||
|
||
// Attempts to extract the count from either an object or a scalar.
|
||
// e.g., item = Object {count: 14351, percent: 5.79} OR item = 4824825140
|
||
getCount: function (item) {
|
||
if (this.isObject(item) && 'count' in item)
|
||
return item.count;
|
||
return item;
|
||
},
|
||
|
||
getPercent: function (item) {
|
||
if (this.isObject(item) && 'percent' in item)
|
||
return this.fmtValue(item.percent, 'percent');
|
||
return null;
|
||
},
|
||
|
||
isObject: function (o) {
|
||
return o === Object(o);
|
||
},
|
||
|
||
setProp: function (o, s, v) {
|
||
var schema = o;
|
||
var a = s.split('.');
|
||
for (var i = 0, n = a.length; i < n-1; ++i) {
|
||
var k = a[i];
|
||
if (!schema[k]) schema[k] = {}
|
||
schema = schema[k];
|
||
}
|
||
schema[a[n-1]] = v;
|
||
},
|
||
|
||
getProp: function (o, s) {
|
||
s = s.replace(/\[(\w+)\]/g, '.$1');
|
||
s = s.replace(/^\./, '');
|
||
var a = s.split('.');
|
||
for (var i = 0, n = a.length; i < n; ++i) {
|
||
var k = a[i];
|
||
if (this.isObject(o) && k in o) {
|
||
o = o[k];
|
||
} else {
|
||
return;
|
||
}
|
||
}
|
||
return o;
|
||
},
|
||
|
||
hasLocalStorage: function () {
|
||
try {
|
||
localStorage.setItem('test', 'test');
|
||
localStorage.removeItem('test');
|
||
return true;
|
||
} catch(e) {
|
||
return false;
|
||
}
|
||
},
|
||
|
||
isWithinViewPort: function (el) {
|
||
var elemTop = el.getBoundingClientRect().top;
|
||
var elemBottom = el.getBoundingClientRect().bottom;
|
||
return elemTop < window.innerHeight && elemBottom >= 0;
|
||
},
|
||
};
|
||
|
||
// OVERALL STATS
|
||
GoAccess.OverallStats = {
|
||
// Render general section wrapper
|
||
renderWrapper: function (ui) {
|
||
$('.wrap-general').innerHTML = GoAccess.AppTpls.General.wrap.render(ui);
|
||
},
|
||
|
||
// Render each overall stats box
|
||
renderBox: function (data, ui, row, x, idx) {
|
||
var wrap = $('.wrap-general-items');
|
||
|
||
// create a new bootstrap row every 6 elements
|
||
if (idx % 6 == 0) {
|
||
row = document.createElement('div');
|
||
row.setAttribute('class', 'row');
|
||
wrap.appendChild(row);
|
||
}
|
||
|
||
var box = document.createElement('div');
|
||
box.innerHTML = GoAccess.AppTpls.General.items.render({
|
||
'id': x,
|
||
'className': ui.items[x].className,
|
||
'label': ui.items[x].label,
|
||
'value': GoAccess.Util.fmtValue(data[x], ui.items[x].dataType),
|
||
});
|
||
row.appendChild(box);
|
||
|
||
return row;
|
||
},
|
||
|
||
// Render overall stats
|
||
renderData: function (data, ui) {
|
||
var idx = 0, row = null;
|
||
|
||
$('.last-updated').innerHTML = data.date_time;
|
||
$$('span.from', function (item) {
|
||
item.innerHTML = data.start_date
|
||
});
|
||
$$('span.to', function (item) {
|
||
item.innerHTML = data.end_date
|
||
});
|
||
// Iterate over general data object
|
||
for (var x in data) {
|
||
if (!data.hasOwnProperty(x) || !ui.items.hasOwnProperty(x))
|
||
continue;
|
||
row = this.renderBox(data, ui, row, x, idx);
|
||
idx++;
|
||
}
|
||
},
|
||
|
||
// Render general/overall analyzed requests.
|
||
initialize: function () {
|
||
var ui = GoAccess.getPanelUI('general');
|
||
var data = GoAccess.getPanelData('general'), i = 0;
|
||
|
||
this.renderWrapper(ui);
|
||
this.renderData(data, ui);
|
||
}
|
||
};
|
||
|
||
// RENDER PANELS
|
||
GoAccess.Nav = {
|
||
events: function () {
|
||
$('.nav-bars').onclick = function (e) {
|
||
e.stopPropagation();
|
||
this.renderMenu(e);
|
||
}.bind(this);
|
||
|
||
$('.nav-gears').onclick = function (e) {
|
||
e.stopPropagation();
|
||
this.renderOpts(e);
|
||
}.bind(this);
|
||
|
||
$('.nav-minibars').onclick = function (e) {
|
||
e.stopPropagation();
|
||
this.renderOpts(e);
|
||
}.bind(this);
|
||
|
||
$('body').onclick = function (e) {
|
||
$('nav').classList.remove('active');
|
||
}.bind(this);
|
||
|
||
$$('.export-json', function (item) {
|
||
item.onclick = function (e) {
|
||
this.downloadJSON(e);
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('.theme-bright', function (item) {
|
||
item.onclick = function (e) {
|
||
this.setTheme('bright');
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('.theme-dark-blue', function (item) {
|
||
item.onclick = function (e) {
|
||
this.setTheme('darkBlue');
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('.theme-dark-gray', function (item) {
|
||
item.onclick = function (e) {
|
||
this.setTheme('darkGray');
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('.layout-horizontal', function (item) {
|
||
item.onclick = function (e) {
|
||
this.setLayout('horizontal');
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('.layout-vertical', function (item) {
|
||
item.onclick = function (e) {
|
||
this.setLayout('vertical');
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('[data-perpage]', function (item) {
|
||
item.onclick = function (e) {
|
||
this.setPerPage(e);
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('[data-show-tables]', function (item) {
|
||
item.onclick = function (e) {
|
||
this.toggleTables();
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('[data-autohide-tables]', function (item) {
|
||
item.onclick = function (e) {
|
||
this.toggleAutoHideTables();
|
||
}.bind(this);
|
||
}.bind(this));
|
||
},
|
||
|
||
downloadJSON: function (e) {
|
||
var targ = e.currentTarget;
|
||
var data = "text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(GoAccess.getPanelData()));
|
||
targ.href = 'data:' + data;
|
||
targ.download = 'goaccess-' + +new Date() + '.json';
|
||
},
|
||
|
||
setLayout: function (layout) {
|
||
if ('horizontal' == layout) {
|
||
$('.container').classList.add('container-fluid');
|
||
$('.container').classList.remove('container');
|
||
} else if ('vertical' == layout) {
|
||
$('.container-fluid').classList.add('container');
|
||
$('.container').classList.remove('container-fluid');
|
||
}
|
||
|
||
GoAccess.AppPrefs['layout'] = layout;
|
||
GoAccess.setPrefs();
|
||
|
||
GoAccess.Panels.initialize();
|
||
GoAccess.Charts.initialize();
|
||
GoAccess.Tables.initialize();
|
||
},
|
||
|
||
toggleAutoHideTables: function (e) {
|
||
var autoHideTables = GoAccess.Tables.autoHideTables();
|
||
$$('.table-wrapper', function (item) {
|
||
if (autoHideTables)
|
||
item.classList.remove('hidden-xs');
|
||
else
|
||
item.classList.add('hidden-xs');
|
||
}.bind(this));
|
||
|
||
GoAccess.AppPrefs['autoHideTables'] = !autoHideTables;
|
||
GoAccess.setPrefs();
|
||
},
|
||
|
||
toggleTables: function () {
|
||
var ui = GoAccess.getPanelUI();
|
||
var showTables = GoAccess.Tables.showTables();
|
||
Object.keys(ui).forEach(function (panel, idx) {
|
||
if (!GoAccess.Util.isPanelValid(panel))
|
||
ui[panel]['table'] = !showTables;
|
||
}.bind(this));
|
||
|
||
GoAccess.AppPrefs['showTables'] = !showTables;
|
||
GoAccess.setPrefs();
|
||
|
||
GoAccess.Panels.initialize();
|
||
GoAccess.Charts.initialize();
|
||
GoAccess.Tables.initialize();
|
||
},
|
||
|
||
setTheme: function (theme) {
|
||
if (!theme)
|
||
return;
|
||
|
||
$('html').className = '';
|
||
switch(theme) {
|
||
case 'darkGray':
|
||
$('html').classList.add('dark');
|
||
$('html').classList.add('gray');
|
||
break;
|
||
case 'darkBlue':
|
||
$('html').classList.add('dark');
|
||
$('html').classList.add('blue');
|
||
break;
|
||
}
|
||
GoAccess.AppPrefs['theme'] = theme;
|
||
GoAccess.setPrefs();
|
||
},
|
||
|
||
getIcon: function (key) {
|
||
switch(key) {
|
||
case 'visitors' : return 'users';
|
||
case 'requests' : return 'file';
|
||
case 'static_requests' : return 'file-text';
|
||
case 'not_found' : return 'file-o';
|
||
case 'hosts' : return 'user';
|
||
case 'os' : return 'desktop';
|
||
case 'browsers' : return 'chrome';
|
||
case 'visit_time' : return 'clock-o';
|
||
case 'vhosts' : return 'th-list';
|
||
case 'referrers' : return 'external-link';
|
||
case 'referring_sites' : return 'external-link';
|
||
case 'keyphrases' : return 'google';
|
||
case 'status_codes' : return 'warning';
|
||
case 'remote_user' : return 'users';
|
||
case 'geolocation' : return 'map-marker';
|
||
default : return 'pie-chart';
|
||
}
|
||
},
|
||
|
||
getItems: function () {
|
||
var ui = GoAccess.getPanelUI(), menu = [];
|
||
for (var panel in ui) {
|
||
if (GoAccess.Util.isPanelValid(panel))
|
||
continue;
|
||
// Push valid panels to our navigation array
|
||
menu.push({
|
||
'current': window.location.hash.substr(1) == panel,
|
||
'head': ui[panel].head,
|
||
'key': panel,
|
||
'icon': this.getIcon(panel),
|
||
});
|
||
}
|
||
return menu;
|
||
},
|
||
|
||
setPerPage: function (e) {
|
||
GoAccess.AppPrefs['perPage'] = +e.currentTarget.getAttribute('data-perpage');
|
||
GoAccess.App.renderData();
|
||
GoAccess.setPrefs();
|
||
},
|
||
|
||
getTheme: function () {
|
||
return GoAccess.AppPrefs.theme || 'darkGray';
|
||
},
|
||
|
||
getLayout: function () {
|
||
return GoAccess.AppPrefs.layout || 'horizontal';
|
||
},
|
||
|
||
getPerPage: function () {
|
||
return GoAccess.AppPrefs.perPage || 7;
|
||
},
|
||
|
||
// Render left-hand side navigation options.
|
||
renderOpts: function () {
|
||
var o = {};
|
||
o[this.getLayout()] = true;
|
||
o[this.getTheme()] = true;
|
||
o['perPage' + this.getPerPage()] = true;
|
||
o['autoHideTables'] = GoAccess.Tables.autoHideTables();
|
||
o['showTables'] = GoAccess.Tables.showTables();
|
||
|
||
$('.nav-list').innerHTML = GoAccess.AppTpls.Nav.opts.render(o);
|
||
$('nav').classList.toggle('active');
|
||
this.events();
|
||
},
|
||
|
||
// Render left-hand side navigation given the available panels.
|
||
renderMenu: function (e) {
|
||
$('.nav-list').innerHTML = GoAccess.AppTpls.Nav.menu.render({
|
||
'nav': this.getItems(),
|
||
'overall': window.location.hash.substr(1) == '',
|
||
});
|
||
$('nav').classList.toggle('active');
|
||
this.events();
|
||
},
|
||
|
||
WSStatus: function () {
|
||
if (Object.keys(GoAccess.AppWSConn).length)
|
||
$$('.nav-ws-status', function (item) { item.style.display = 'block' });
|
||
},
|
||
|
||
WSClose: function () {
|
||
$$('.nav-ws-status', function (item) {
|
||
item.classList.remove('connected');
|
||
item.setAttribute('title', 'Disconnected');
|
||
});
|
||
},
|
||
|
||
WSOpen: function () {
|
||
$$('.nav-ws-status', function (item) {
|
||
item.classList.add('connected');
|
||
item.setAttribute('title', 'Connected to ' + GoAccess.AppWSConn.url);
|
||
});
|
||
},
|
||
|
||
// Render left-hand side navigation given the available panels.
|
||
renderWrap: function (nav) {
|
||
$('nav').innerHTML = GoAccess.AppTpls.Nav.wrap.render({});
|
||
},
|
||
|
||
// Iterate over all available panels and render each.
|
||
initialize: function () {
|
||
this.setTheme(GoAccess.AppPrefs.theme);
|
||
this.renderWrap();
|
||
this.WSStatus();
|
||
this.events();
|
||
}
|
||
};
|
||
|
||
// RENDER PANELS
|
||
GoAccess.Panels = {
|
||
events: function () {
|
||
$$('[data-toggle=dropdown]', function (item) {
|
||
item.onclick = function (e) {
|
||
this.openOpts(e.currentTarget);
|
||
}.bind(this);
|
||
item.onblur = function (e) {
|
||
this.closeOpts(e);
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('[data-plot]', function (item) {
|
||
item.onclick = function (e) {
|
||
GoAccess.Charts.redrawChart(e.currentTarget);
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('[data-chart-type]', function (item) {
|
||
item.onclick = function (e) {
|
||
GoAccess.Charts.setChartType(e.currentTarget);
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('[data-metric]', function (item) {
|
||
item.onclick = function (e) {
|
||
GoAccess.Tables.toggleColumn(e.currentTarget);
|
||
}.bind(this);
|
||
}.bind(this));
|
||
},
|
||
|
||
openOpts: function (targ) {
|
||
var panel = targ.getAttribute('data-panel');
|
||
targ.parentElement.classList.toggle('open');
|
||
this.renderOpts(panel);
|
||
},
|
||
|
||
closeOpts: function (e) {
|
||
e.currentTarget.parentElement.classList.remove('open');
|
||
// Trigger the click event on the target if not opening another menu
|
||
if (e.relatedTarget && e.relatedTarget.getAttribute('data-toggle') !== 'dropdown')
|
||
e.relatedTarget.click();
|
||
},
|
||
|
||
setPlotSelection: function (ui, prefs) {
|
||
var chartType = ((prefs || {}).plot || {}).chartType || ui.plot[0].chartType;
|
||
var metric = ((prefs || {}).plot || {}).metric || ui.plot[0].className;
|
||
|
||
ui[chartType] = true;
|
||
for (var i = 0, len = ui.plot.length; i < len; ++i)
|
||
if (ui.plot[i].className == metric)
|
||
ui.plot[i]['selected'] = true;
|
||
},
|
||
|
||
setColSelection: function (items, prefs) {
|
||
var columns = (prefs || {}).columns || {};
|
||
for (var i = 0, len = items.length; i < len; ++i)
|
||
if ((items[i].key in columns) && columns[items[i].key]['hide'])
|
||
items[i]['hide'] = true;
|
||
},
|
||
|
||
setOpts: function (panel) {
|
||
var ui = JSON.parse(JSON.stringify(GoAccess.getPanelUI(panel))), prefs = GoAccess.getPrefs(panel);
|
||
this.setPlotSelection(ui, prefs);
|
||
this.setColSelection(ui.items, prefs);
|
||
return ui;
|
||
},
|
||
|
||
renderOpts: function (panel) {
|
||
$('.panel-opts-' + panel).innerHTML = GoAccess.AppTpls.Panels.opts.render(this.setOpts(panel));
|
||
this.events();
|
||
},
|
||
|
||
enablePrev: function (panel) {
|
||
var $pagination = $('#panel-' + panel + ' .pagination a.panel-prev');
|
||
if ($pagination)
|
||
$pagination.parentNode.classList.remove('disabled');
|
||
},
|
||
|
||
disablePrev: function (panel) {
|
||
var $pagination = $('#panel-' + panel + ' .pagination a.panel-prev');
|
||
if ($pagination)
|
||
$pagination.parentNode.classList.add('disabled');
|
||
},
|
||
|
||
enableNext: function (panel) {
|
||
var $pagination = $('#panel-' + panel + ' .pagination a.panel-next');
|
||
if ($pagination)
|
||
$pagination.parentNode.classList.remove('disabled');
|
||
},
|
||
|
||
disableNext: function (panel) {
|
||
var $pagination = $('#panel-' + panel + ' .pagination a.panel-next');
|
||
if ($pagination)
|
||
$pagination.parentNode.classList.add('disabled');
|
||
},
|
||
|
||
enablePagination: function (panel) {
|
||
this.enablePrev(panel);
|
||
this.enableNext(panel);
|
||
},
|
||
|
||
disablePagination: function (panel) {
|
||
this.disablePrev(panel);
|
||
this.disableNext(panel);
|
||
},
|
||
|
||
hasSubItems: function (ui, data) {
|
||
for (var i = 0, len = data.length; i < len; ++i) {
|
||
if (!data[i].items)
|
||
return (ui['hasSubItems'] = false);
|
||
if (data[i].items.length) {
|
||
return (ui['hasSubItems'] = true);
|
||
}
|
||
}
|
||
return false;
|
||
},
|
||
|
||
// Render the given panel given a user interface definition.
|
||
renderPanel: function (panel, ui, row, idx) {
|
||
var wrap = $('.wrap-panels');
|
||
var every = GoAccess.AppPrefs['layout'] == 'horizontal' ? 2 : 1;
|
||
var perRow = GoAccess.AppPrefs['layout'] == 'horizontal' ? 6 : 12;
|
||
|
||
// create a new bootstrap row every one or two elements depending on
|
||
// the layout
|
||
if (idx % every == 0) {
|
||
row = document.createElement('div');
|
||
row.setAttribute('class', 'row' + (every == 2 ? ' equal' : ''));
|
||
wrap.appendChild(row);
|
||
}
|
||
|
||
var data = GoAccess.getPanelData(panel);
|
||
this.hasSubItems(ui, data.data);
|
||
GoAccess.Tables.hasTables(ui);
|
||
|
||
// set the number of columns based on current layout
|
||
var col = document.createElement('div');
|
||
col.setAttribute('class', 'col-md-' + perRow + ' wrap-panel');
|
||
row.appendChild(col);
|
||
|
||
// per panel wrapper
|
||
var box = document.createElement('div');
|
||
box.id = 'panel-' + panel;
|
||
box.innerHTML = GoAccess.AppTpls.Panels.wrap.render(ui);
|
||
col.appendChild(box);
|
||
|
||
// Remove pagination if not enough data for the given panel
|
||
if (data.data.length <= GoAccess.getPrefs().perPage)
|
||
this.disablePagination(panel);
|
||
GoAccess.Tables.renderThead(panel, ui);
|
||
|
||
return row;
|
||
},
|
||
|
||
// Iterate over all available panels and render each panel
|
||
// structure.
|
||
renderPanels: function () {
|
||
var ui = GoAccess.getPanelUI(), idx = 0, row = null;
|
||
|
||
$('.wrap-panels').innerHTML = '';
|
||
for (var panel in ui) {
|
||
if (GoAccess.Util.isPanelValid(panel))
|
||
continue;
|
||
// Render panel given a user interface definition
|
||
row = this.renderPanel(panel, ui[panel], row, idx++);
|
||
}
|
||
},
|
||
|
||
initialize: function () {
|
||
this.renderPanels();
|
||
this.events();
|
||
}
|
||
};
|
||
|
||
// RENDER CHARTS
|
||
GoAccess.Charts = {
|
||
iter: function (callback) {
|
||
Object.keys(GoAccess.AppCharts).forEach(function (panel) {
|
||
// redraw chart only if it's within the viewport
|
||
if (!GoAccess.Util.isWithinViewPort($('#panel-' + panel)))
|
||
return;
|
||
if (callback && typeof callback === 'function')
|
||
callback.call(this, GoAccess.AppCharts[panel], panel);
|
||
});
|
||
},
|
||
|
||
getMetricKeys: function (panel, key) {
|
||
return GoAccess.getPanelUI(panel)['items'].map(function (a) { return a[key]; });
|
||
},
|
||
|
||
getPanelData: function (panel, data) {
|
||
// Grab ui plot data for the selected panel
|
||
var plot = GoAccess.Util.getProp(GoAccess.AppState, panel + '.plot');
|
||
|
||
// Grab the data for the selected panel
|
||
data = data || this.processChartData(GoAccess.getPanelData(panel).data);
|
||
return plot.chartReverse ? data.reverse() : data;
|
||
},
|
||
|
||
renderChart: function (panel, chart, data) {
|
||
// remove popup
|
||
d3.select('#chart-' + panel + '>.chart-tooltip-wrap')
|
||
.remove();
|
||
// remove svg
|
||
d3.select('#chart-' + panel).select('svg')
|
||
.remove();
|
||
// add chart to the document
|
||
d3.select("#chart-" + panel)
|
||
.datum(data)
|
||
.call(chart)
|
||
.append("div").attr("class", "chart-tooltip-wrap");
|
||
},
|
||
|
||
drawPlot: function (panel, plotUI, data) {
|
||
var chart = this.getChart(panel, plotUI, data);
|
||
if (!chart)
|
||
return;
|
||
|
||
this.renderChart(panel, chart, data);
|
||
GoAccess.AppCharts[panel] = null;
|
||
GoAccess.AppCharts[panel] = chart;
|
||
},
|
||
|
||
setChartType: function (targ) {
|
||
var panel = targ.getAttribute('data-panel');
|
||
var type = targ.getAttribute('data-chart-type');
|
||
|
||
GoAccess.Util.setProp(GoAccess.AppPrefs, panel + '.plot.chartType', type);
|
||
GoAccess.setPrefs();
|
||
|
||
var plotUI = GoAccess.Util.getProp(GoAccess.AppState, panel + '.plot');
|
||
// Extract data for the selected panel and process it
|
||
this.drawPlot(panel, plotUI, this.getPanelData(panel));
|
||
},
|
||
|
||
// Redraw a chart upon selecting a metric.
|
||
redrawChart: function (targ) {
|
||
var plot = targ.getAttribute('data-plot');
|
||
var panel = targ.getAttribute('data-panel');
|
||
var ui = GoAccess.getPanelUI(panel);
|
||
var plotUI = ui.plot;
|
||
|
||
GoAccess.Util.setProp(GoAccess.AppPrefs, panel + '.plot.metric', plot);
|
||
GoAccess.setPrefs();
|
||
|
||
// Iterate over plot user interface definition
|
||
for (var x in plotUI) {
|
||
if (!plotUI.hasOwnProperty(x) || plotUI[x].className != plot)
|
||
continue;
|
||
|
||
GoAccess.Util.setProp(GoAccess.AppState, panel + '.plot', plotUI[x]);
|
||
// Extract data for the selected panel and process it
|
||
this.drawPlot(panel, plotUI[x], this.getPanelData(panel));
|
||
break;
|
||
}
|
||
},
|
||
|
||
// Iterate over the item properties and and extract the count value.
|
||
extractCount: function (item) {
|
||
var o = {};
|
||
for (var prop in item)
|
||
o[prop] = GoAccess.Util.getCount(item[prop]);
|
||
return o;
|
||
},
|
||
|
||
// Extract an array of objects that D3 can consume to process the chart.
|
||
// e.g., o = Object {hits: 37402, visitors: 6949, bytes:
|
||
// 505881789, avgts: 118609, cumts: 4436224010…}
|
||
processChartData: function (data) {
|
||
var out = [];
|
||
for (var i = 0; i < data.length; ++i)
|
||
out.push(this.extractCount(data[i]));
|
||
return out;
|
||
},
|
||
|
||
findUIItem: function (panel, key) {
|
||
var items = GoAccess.getPanelUI(panel).items, o = {};
|
||
for (var i = 0; i < items.length; ++i) {
|
||
if (items[i].key == key)
|
||
return items[i];
|
||
}
|
||
return null;
|
||
},
|
||
|
||
getXKey: function (datum, key) {
|
||
var arr = [];
|
||
if (typeof key === 'string')
|
||
return datum[key];
|
||
for (var prop in key)
|
||
arr.push(datum[key[prop]]);
|
||
return arr.join(' ');
|
||
},
|
||
|
||
getAreaSpline: function (panel, plotUI, data) {
|
||
var dualYaxis = plotUI['d3']['y1'];
|
||
|
||
var chart = AreaChart(dualYaxis)
|
||
.labels({
|
||
y0: plotUI['d3']['y0'].label,
|
||
y1: dualYaxis ? plotUI['d3']['y1'].label : ''
|
||
})
|
||
.x(function (d) {
|
||
if ((((plotUI || {}).d3 || {}).x || {}).key)
|
||
return this.getXKey(d, plotUI['d3']['x']['key']);
|
||
return d.data;;
|
||
}.bind(this))
|
||
.y0(function (d) {
|
||
return +d[plotUI['d3']['y0']['key']];
|
||
})
|
||
.width($("#chart-" + panel).getBoundingClientRect().width)
|
||
.height(175)
|
||
.format({
|
||
x: (this.findUIItem(panel, 'data') || {}).dataType || null,
|
||
y0: ((plotUI.d3 || {}).y0 || {}).format,
|
||
y1: ((plotUI.d3 || {}).y1 || {}).format,
|
||
})
|
||
.opts(plotUI);
|
||
|
||
dualYaxis && chart.y1(function (d) {
|
||
return +d[plotUI['d3']['y1']['key']];
|
||
});
|
||
|
||
return chart;
|
||
},
|
||
|
||
getVBar: function (panel, plotUI, data) {
|
||
var dualYaxis = plotUI['d3']['y1'];
|
||
|
||
var chart = BarChart(dualYaxis)
|
||
.labels({
|
||
y0: plotUI['d3']['y0'].label,
|
||
y1: dualYaxis ? plotUI['d3']['y1'].label : ''
|
||
})
|
||
.x(function (d) {
|
||
if ((((plotUI || {}).d3 || {}).x || {}).key)
|
||
return this.getXKey(d, plotUI['d3']['x']['key']);
|
||
return d.data;;
|
||
}.bind(this))
|
||
.y0(function (d) {
|
||
return +d[plotUI['d3']['y0']['key']];
|
||
})
|
||
.width($("#chart-" + panel).getBoundingClientRect().width)
|
||
.height(175)
|
||
.format({
|
||
x: (this.findUIItem(panel, 'data') || {}).dataType || null,
|
||
y0: ((plotUI.d3 || {}).y0 || {}).format,
|
||
y1: ((plotUI.d3 || {}).y1 || {}).format,
|
||
})
|
||
.opts(plotUI);
|
||
|
||
dualYaxis && chart.y1(function (d) {
|
||
return +d[plotUI['d3']['y1']['key']];
|
||
});
|
||
|
||
return chart;
|
||
},
|
||
|
||
getChartType: function (panel) {
|
||
var ui = GoAccess.getPanelUI(panel);
|
||
if (!ui.plot.length)
|
||
return '';
|
||
|
||
return GoAccess.Util.getProp(GoAccess.getPrefs(), panel + '.plot.chartType') || ui.plot[0].chartType;
|
||
},
|
||
|
||
getPlotUI: function (panel, ui) {
|
||
var metric = GoAccess.Util.getProp(GoAccess.getPrefs(), panel + '.plot.metric');
|
||
if (!metric)
|
||
return ui.plot[0];
|
||
return ui.plot.filter(function (v) {
|
||
return v.className == metric;
|
||
})[0];
|
||
},
|
||
|
||
getChart: function (panel, plotUI, data) {
|
||
var chart = null;
|
||
|
||
// Render given its type
|
||
switch (this.getChartType(panel)) {
|
||
case 'area-spline':
|
||
chart = this.getAreaSpline(panel, plotUI, data);
|
||
break;
|
||
case 'bar':
|
||
chart = this.getVBar(panel, plotUI, data);
|
||
break;
|
||
};
|
||
|
||
return chart;
|
||
},
|
||
|
||
// Render all charts for the applicable panels.
|
||
renderCharts: function (ui) {
|
||
var plotUI = null, chart = null;
|
||
for (var panel in ui) {
|
||
if (!ui.hasOwnProperty(panel))
|
||
continue;
|
||
// Ensure it has a plot definitions
|
||
if (!ui[panel].plot || !ui[panel].plot.length)
|
||
continue;
|
||
|
||
plotUI = this.getPlotUI(panel, ui[panel]);
|
||
// set ui plot data
|
||
GoAccess.Util.setProp(GoAccess.AppState, panel + '.plot', plotUI);
|
||
|
||
// Grab the data for the selected panel
|
||
var data = this.getPanelData(panel);
|
||
if (!(chart = this.getChart(panel, plotUI, data)))
|
||
continue;
|
||
|
||
this.renderChart(panel, chart, data);
|
||
GoAccess.AppCharts[panel] = chart;
|
||
}
|
||
},
|
||
|
||
// Reload the given chart data
|
||
reloadChart: function (chart, panel) {
|
||
var subItems = GoAccess.Tables.getSubItemsData(panel);
|
||
var data = (subItems.length ? subItems : GoAccess.getPanelData(panel).data).slice(0);
|
||
|
||
d3.select("#chart-" + panel)
|
||
.datum(this.processChartData(this.getPanelData(panel, data)))
|
||
.call(chart.width($("#chart-" + panel).offsetWidth));
|
||
},
|
||
|
||
reloadCharts: function () {
|
||
this.iter(function (chart, panel) {
|
||
this.reloadChart(chart, panel);
|
||
}.bind(this));
|
||
GoAccess.AppState.updated = false;
|
||
},
|
||
|
||
// Only redraw charts with current data
|
||
redrawCharts: function () {
|
||
this.iter(function (chart, panel) {
|
||
d3.select("#chart-" + panel).call(chart.width($("#chart-" + panel).offsetWidth));
|
||
});
|
||
},
|
||
|
||
initialize: function () {
|
||
this.renderCharts(GoAccess.getPanelUI());
|
||
|
||
// reload on scroll & redraw on resize
|
||
d3.select(window).on('scroll.charts', debounce(function () {
|
||
this.reloadCharts();
|
||
}, 250, false).bind(this)).on('resize.charts', function () {
|
||
this.redrawCharts();
|
||
}.bind(this));
|
||
}
|
||
};
|
||
|
||
// RENDER TABLES
|
||
GoAccess.Tables = {
|
||
chartData: {}, // holds all panel sub items data that feeds the chart
|
||
|
||
events: function () {
|
||
$$('.panel-next', function (item) {
|
||
item.onclick = function (e) {
|
||
var panel = e.currentTarget.getAttribute('data-panel');
|
||
this.renderTable(panel, this.nextPage(panel))
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('.panel-prev', function (item) {
|
||
item.onclick = function (e) {
|
||
var panel = e.currentTarget.getAttribute('data-panel');
|
||
this.renderTable(panel, this.prevPage(panel))
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('.expandable>td', function (item) {
|
||
item.onclick = function (e) {
|
||
if (!window.getSelection().toString())
|
||
this.toggleRow(e.currentTarget);
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('.row-expandable.clickable', function (item) {
|
||
item.onclick = function (e) {
|
||
this.toggleRow(e.currentTarget);
|
||
}.bind(this);
|
||
}.bind(this));
|
||
|
||
$$('.sortable', function (item) {
|
||
item.onclick = function (e) {
|
||
this.sortColumn(e.currentTarget);
|
||
}.bind(this);
|
||
}.bind(this));
|
||
},
|
||
|
||
toggleColumn: function (targ) {
|
||
var panel = targ.getAttribute('data-panel');
|
||
var metric = targ.getAttribute('data-metric');
|
||
|
||
var columns = (GoAccess.getPrefs(panel) || {}).columns || {};
|
||
if (metric in columns)
|
||
delete columns[metric];
|
||
else
|
||
GoAccess.Util.setProp(columns, metric + '.hide', true);
|
||
|
||
GoAccess.Util.setProp(GoAccess.AppPrefs, panel + '.columns', columns);
|
||
GoAccess.setPrefs();
|
||
|
||
GoAccess.Tables.renderThead(panel, GoAccess.getPanelUI(panel));
|
||
GoAccess.Tables.renderFullTable(panel);
|
||
},
|
||
|
||
sortColumn: function (ele) {
|
||
var field = ele.getAttribute('data-key');
|
||
var order = ele.getAttribute('data-order');
|
||
var panel = ele.parentElement.parentElement.parentElement.getAttribute('data-panel');
|
||
|
||
order = order ? 'asc' == order ? 'desc' : 'asc' : 'asc';
|
||
GoAccess.App.sortData(panel, field, order)
|
||
GoAccess.Util.setProp(GoAccess.AppState, panel + '.sort', {
|
||
'field': field,
|
||
'order': order,
|
||
});
|
||
this.renderThead(panel, GoAccess.getPanelUI(panel));
|
||
this.renderTable(panel, this.getCurPage(panel));
|
||
|
||
GoAccess.Charts.reloadChart(GoAccess.AppCharts[panel], panel);
|
||
},
|
||
|
||
getDataByKey: function (panel, key) {
|
||
var data = GoAccess.getPanelData(panel).data;
|
||
for (var i = 0, n = data.length; i < n; ++i) {
|
||
if (GoAccess.Util.hashCode(data[i].data) == key)
|
||
return data[i];
|
||
}
|
||
return null;
|
||
},
|
||
|
||
getSubItemsData: function (panel) {
|
||
var out = [], items = this.chartData[panel];
|
||
for (var x in items) {
|
||
if (!items.hasOwnProperty(x))
|
||
continue;
|
||
out = out.concat(items[x]);
|
||
}
|
||
return out;
|
||
},
|
||
|
||
addChartData: function (panel, key) {
|
||
var data = this.getDataByKey(panel, key);
|
||
var path = panel + '.' + key;
|
||
|
||
if (!data || !data.items)
|
||
return [];
|
||
GoAccess.Util.setProp(this.chartData, path, data.items);
|
||
|
||
return this.getSubItemsData(panel);
|
||
},
|
||
|
||
removeChartData: function (panel, key) {
|
||
if (GoAccess.Util.getProp(this.chartData, panel + '.' + key))
|
||
delete this.chartData[panel][key];
|
||
|
||
if (!this.chartData[panel] || Object.keys(this.chartData[panel]).length == 0)
|
||
return GoAccess.getPanelData(panel).data;
|
||
|
||
return this.getSubItemsData(panel);
|
||
},
|
||
|
||
isExpanded: function (panel, key) {
|
||
var path = panel + '.expanded.' + key;
|
||
return GoAccess.Util.getProp(GoAccess.AppState, path);
|
||
},
|
||
|
||
toggleExpanded: function (panel, key) {
|
||
var path = panel + '.expanded.' + key, ret = true;
|
||
|
||
if (this.isExpanded(panel, key))
|
||
delete GoAccess.AppState[panel]['expanded'][key];
|
||
else
|
||
GoAccess.Util.setProp(GoAccess.AppState, path, true), ret = false;
|
||
|
||
return ret;
|
||
},
|
||
|
||
// Toggle children rows
|
||
toggleRow: function (ele) {
|
||
var hide = false, data = [];
|
||
var row = ele.parentNode;
|
||
var panel = row.getAttribute('data-panel'), key = row.getAttribute('data-key');
|
||
var plotUI = GoAccess.AppCharts[panel].opts();
|
||
|
||
hide = this.toggleExpanded(panel, key);
|
||
this.renderTable(panel, this.getCurPage(panel));
|
||
if (!plotUI.redrawOnExpand)
|
||
return;
|
||
|
||
if (!hide)
|
||
data = GoAccess.Charts.processChartData(this.addChartData(panel, key));
|
||
else
|
||
data = GoAccess.Charts.processChartData(this.removeChartData(panel, key));
|
||
GoAccess.Charts.drawPlot(panel, plotUI, data);
|
||
},
|
||
|
||
// Get current panel page
|
||
getCurPage: function (panel) {
|
||
return GoAccess.Util.getProp(GoAccess.AppState, panel + '.curPage') || 0;
|
||
},
|
||
|
||
// Page offset.
|
||
// e.g., Return Value: 11, curPage: 2
|
||
pageOffSet: function (panel) {
|
||
return ((this.getCurPage(panel) - 1) * GoAccess.getPrefs().perPage);
|
||
},
|
||
|
||
// Get total number of pages given the number of items on array
|
||
getTotalPages: function (dataItems) {
|
||
return Math.ceil(dataItems.length / GoAccess.getPrefs().perPage);
|
||
},
|
||
|
||
// Get a shallow copy of a portion of the given data array and the
|
||
// current page.
|
||
getPage: function (panel, dataItems, page) {
|
||
var totalPages = this.getTotalPages(dataItems);
|
||
if (page < 1)
|
||
page = 1;
|
||
if (page > totalPages)
|
||
page = totalPages;
|
||
|
||
GoAccess.Util.setProp(GoAccess.AppState, panel + '.curPage', page);
|
||
var start = this.pageOffSet(panel);
|
||
var end = start + GoAccess.getPrefs().perPage;
|
||
|
||
return dataItems.slice(start, end);
|
||
},
|
||
|
||
// Get previous page
|
||
prevPage: function (panel) {
|
||
return this.getCurPage(panel) - 1;
|
||
},
|
||
|
||
// Get next page
|
||
nextPage: function (panel) {
|
||
return this.getCurPage(panel) + 1;
|
||
},
|
||
|
||
getMetaValue: function (ui, value) {
|
||
if ('meta' in ui)
|
||
return value[ui.meta];
|
||
return null;
|
||
},
|
||
|
||
getMetaCell: function (ui, value) {
|
||
var val = this.getMetaValue(ui, value);
|
||
var max = (value || {}).max;
|
||
var min = (value || {}).min;
|
||
|
||
// use metaType if exist else fallback to dataType
|
||
var vtype = ui.metaType || ui.dataType;
|
||
var className = ui.className || '';
|
||
className += ui.dataType != 'string' ? 'text-right' : '';
|
||
return {
|
||
'className': className,
|
||
'max' : max != undefined ? GoAccess.Util.fmtValue(max, vtype) : null,
|
||
'min' : min != undefined ? GoAccess.Util.fmtValue(min, vtype) : null,
|
||
'value' : val != undefined ? GoAccess.Util.fmtValue(val, vtype) : null,
|
||
'title' : ui.meta,
|
||
'label' : ui.metaLabel || null,
|
||
}
|
||
},
|
||
|
||
hideColumn: function (panel, col) {
|
||
var columns = (GoAccess.getPrefs(panel) || {}).columns || {};
|
||
return ((col in columns) && columns[col]['hide']);
|
||
},
|
||
|
||
showTables: function () {
|
||
return ('showTables' in GoAccess.getPrefs()) ? GoAccess.getPrefs().showTables : true;
|
||
},
|
||
|
||
autoHideTables: function () {
|
||
return ('autoHideTables' in GoAccess.getPrefs()) ? GoAccess.getPrefs().autoHideTables : true;
|
||
},
|
||
|
||
hasTables: function (ui) {
|
||
ui['table'] = this.showTables();
|
||
ui['autoHideTables'] = this.autoHideTables();
|
||
},
|
||
|
||
renderMetaRow: function (panel, ui) {
|
||
// find the table to set
|
||
var table = $('.table-' + panel + ' tbody.tbody-meta');
|
||
if (!table)
|
||
return;
|
||
|
||
var cells = [], uiItems = ui.items;
|
||
var data = GoAccess.getPanelData(panel).metadata;
|
||
for (var i = 0; i < uiItems.length; ++i) {
|
||
var item = uiItems[i];
|
||
if (this.hideColumn(panel, item.key))
|
||
continue;
|
||
var value = data[item.key];
|
||
cells.push(this.getMetaCell(item, value))
|
||
}
|
||
|
||
table.innerHTML = GoAccess.AppTpls.Tables.meta.render({
|
||
row: [{
|
||
'hasSubItems': ui.hasSubItems,
|
||
'cells': cells
|
||
}]
|
||
});
|
||
},
|
||
|
||
// Iterate over user interface definition properties
|
||
iterUIItems: function (panel, uiItems, dataItems, callback) {
|
||
var out = [];
|
||
for (var i = 0; i < uiItems.length; ++i) {
|
||
var uiItem = uiItems[i];
|
||
if (this.hideColumn(panel, uiItem.key))
|
||
continue;
|
||
// Data for the current user interface property.
|
||
// e.g., dataItem = Object {count: 13949, percent: 5.63}
|
||
var dataItem = dataItems[uiItem.key];
|
||
// Apply the callback and push return data to output array
|
||
if (callback && typeof callback == 'function') {
|
||
var ret = callback.call(this, panel, uiItem, dataItem);
|
||
if (ret) out.push(ret);
|
||
}
|
||
}
|
||
return out;
|
||
},
|
||
|
||
// Return an object that can be consumed by the table template given a user
|
||
// interface definition and a cell value object.
|
||
// e.g., value = Object {count: 14351, percent: 5.79}
|
||
getObjectCell: function (panel, ui, value) {
|
||
var className = ui.className || '';
|
||
className += ui.dataType != 'string' ? 'text-right' : '';
|
||
return {
|
||
'className': className,
|
||
'percent': GoAccess.Util.getPercent(value),
|
||
'value': GoAccess.Util.fmtValue(GoAccess.Util.getCount(value), ui.dataType)
|
||
};
|
||
},
|
||
|
||
// Given a data item object, set all the row cells and return a
|
||
// table row that the template can consume.
|
||
renderRow: function (panel, callback, ui, dataItem, idx, subItem, parentId, expanded) {
|
||
var shadeParent = ((!subItem && idx % 2 != 0) ? 'shaded' : '');
|
||
var shadeChild = ((parentId % 2 != 0) ? 'shaded' : '');
|
||
return {
|
||
'panel' : panel,
|
||
'idx' : !subItem && (String((idx + 1) + this.pageOffSet(panel))),
|
||
'key' : !subItem ? GoAccess.Util.hashCode(dataItem.data) : '',
|
||
'expanded' : !subItem && expanded,
|
||
'parentId' : subItem ? String(parentId) : '',
|
||
'className' : subItem ? 'child ' + shadeChild : 'parent ' + shadeParent,
|
||
'hasSubItems' : ui.hasSubItems,
|
||
'items' : dataItem.items ? dataItem.items.length : 0,
|
||
'cells' : callback.call(this),
|
||
};
|
||
},
|
||
|
||
renderRows: function (rows, panel, ui, dataItems, subItem, parentId) {
|
||
subItem = subItem || false;
|
||
// no data rows
|
||
if (dataItems.length == 0 && ui.items.length) {
|
||
rows.push({
|
||
cells: [{
|
||
className: 'text-center',
|
||
colspan: ui.items.length + 1,
|
||
value: 'No data on this panel.'
|
||
}]
|
||
});
|
||
}
|
||
|
||
// Iterate over all data items for the given panel and
|
||
// generate a table row per date item.
|
||
var cellcb = null;
|
||
for (var i = 0; i < dataItems.length; ++i) {
|
||
var dataItem = dataItems[i], data = null, expanded = false;
|
||
switch(typeof dataItem) {
|
||
case 'string':
|
||
data = dataItem;
|
||
cellcb = function () {
|
||
return {
|
||
'colspan': ui.items.length,
|
||
'value': data
|
||
}
|
||
};
|
||
break;
|
||
default:
|
||
data = dataItem.data;
|
||
cellcb = this.iterUIItems.bind(this, panel, ui.items, dataItem, this.getObjectCell.bind(this));
|
||
}
|
||
|
||
expanded = this.isExpanded(panel, GoAccess.Util.hashCode(data));
|
||
rows.push(this.renderRow(panel, cellcb, ui, dataItem, i, subItem, parentId, expanded));
|
||
if (dataItem.items && dataItem.items.length && expanded) {
|
||
this.renderRows(rows, panel, ui, dataItem.items, true, i, expanded);
|
||
}
|
||
}
|
||
},
|
||
|
||
// Entry point to render all data rows into the table
|
||
renderDataRows: function (panel, ui, dataItems, page) {
|
||
// find the table to set
|
||
var table = $('.table-' + panel + ' tbody.tbody-data');
|
||
if (!table)
|
||
return;
|
||
|
||
var dataItems = this.getPage(panel, dataItems, page);
|
||
var rows = [];
|
||
this.renderRows(rows, panel, ui, dataItems);
|
||
if (rows.length == 0)
|
||
return;
|
||
|
||
table.innerHTML = GoAccess.AppTpls.Tables.data.render({
|
||
rows: rows
|
||
});
|
||
},
|
||
|
||
togglePagination: function (panel, page, dataItems) {
|
||
GoAccess.Panels.enablePagination(panel);
|
||
// Diable pagination next button if last page is reached
|
||
if (page >= this.getTotalPages(dataItems))
|
||
GoAccess.Panels.disableNext(panel);
|
||
if (page <= 1)
|
||
GoAccess.Panels.disablePrev(panel);
|
||
},
|
||
|
||
renderTable: function (panel, page) {
|
||
var dataItems = GoAccess.getPanelData(panel).data;
|
||
var ui = GoAccess.getPanelUI(panel);
|
||
|
||
this.togglePagination(panel, page, dataItems);
|
||
// Render data rows
|
||
this.renderDataRows(panel, ui, dataItems, page);
|
||
this.events();
|
||
},
|
||
|
||
renderFullTable: function (panel) {
|
||
var ui = GoAccess.getPanelUI(panel), page = 0;
|
||
// panel's data
|
||
var data = GoAccess.getPanelData(panel);
|
||
// render meta data
|
||
if (data.hasOwnProperty('metadata'))
|
||
this.renderMetaRow(panel, ui);
|
||
|
||
// render actual data
|
||
if (data.hasOwnProperty('data')) {
|
||
page = this.getCurPage(panel);
|
||
this.togglePagination(panel, page, data.data);
|
||
this.renderDataRows(panel, ui, data.data, page);
|
||
}
|
||
},
|
||
|
||
// Iterate over all panels and determine which ones should contain
|
||
// a data table.
|
||
renderTables: function (force) {
|
||
var ui = GoAccess.getPanelUI();
|
||
for (var panel in ui) {
|
||
if (GoAccess.Util.isPanelValid(panel) || !this.showTables())
|
||
continue;
|
||
if (force || GoAccess.Util.isWithinViewPort($('#panel-' + panel)))
|
||
this.renderFullTable(panel);
|
||
}
|
||
},
|
||
|
||
// Given a UI panel definition, make a copy of it and assign the sort
|
||
// fields to the template object to render
|
||
sort2Tpl: function (panel, ui) {
|
||
var uiClone = JSON.parse(JSON.stringify(ui)), out = [];
|
||
var sort = GoAccess.Util.getProp(GoAccess.AppState, panel + '.sort');
|
||
|
||
for (var i = 0, len = uiClone.items.length; i < len; ++i) {
|
||
var item = uiClone.items[i];
|
||
if (this.hideColumn(panel, item.key))
|
||
continue;
|
||
|
||
item['sort'] = false;
|
||
if (item.key == sort.field && sort.order) {
|
||
item['sort'] = true;
|
||
item[sort.order.toLowerCase()] = true;
|
||
}
|
||
out.push(item);
|
||
}
|
||
uiClone.items = out;
|
||
|
||
return uiClone;
|
||
},
|
||
|
||
renderThead: function (panel, ui) {
|
||
var $thead = $('.table-' + panel + '>thead'), $colgroup = $('.table-' + panel + '>colgroup');
|
||
if ($thead && $colgroup && this.showTables()) {
|
||
ui = this.sort2Tpl(panel, ui);
|
||
|
||
$thead.innerHTML = GoAccess.AppTpls.Tables.head.render(ui);
|
||
$colgroup.innerHTML = GoAccess.AppTpls.Tables.colgroup.render(ui);
|
||
}
|
||
},
|
||
|
||
reloadTables: function () {
|
||
this.renderTables(false);
|
||
this.events();
|
||
},
|
||
|
||
initialize: function () {
|
||
this.renderTables(true);
|
||
this.events();
|
||
|
||
// redraw on scroll
|
||
d3.select(window).on('scroll.tables', debounce(function () {
|
||
this.reloadTables();
|
||
}, 250, false).bind(this));
|
||
},
|
||
};
|
||
|
||
// Main App
|
||
GoAccess.App = {
|
||
tpl: function (tpl) {
|
||
return Hogan.compile(tpl);
|
||
},
|
||
|
||
setTpls: function () {
|
||
GoAccess.AppTpls = {
|
||
'Nav': {
|
||
'wrap': this.tpl($('#tpl-nav-wrap').innerHTML),
|
||
'menu': this.tpl($('#tpl-nav-menu').innerHTML),
|
||
'opts': this.tpl($('#tpl-nav-opts').innerHTML),
|
||
},
|
||
'Panels': {
|
||
'wrap': this.tpl($('#tpl-panel').innerHTML),
|
||
'opts': this.tpl($('#tpl-panel-opts').innerHTML),
|
||
},
|
||
'General': {
|
||
'wrap': this.tpl($('#tpl-general').innerHTML),
|
||
'items': this.tpl($('#tpl-general-items').innerHTML),
|
||
},
|
||
'Tables': {
|
||
'colgroup': this.tpl($('#tpl-table-colgroup').innerHTML),
|
||
'head': this.tpl($('#tpl-table-thead').innerHTML),
|
||
'meta': this.tpl($('#tpl-table-row-meta').innerHTML),
|
||
'data': this.tpl($('#tpl-table-row').innerHTML),
|
||
},
|
||
}
|
||
},
|
||
|
||
sortField: function (o, field) {
|
||
var f = o[field];
|
||
if (GoAccess.Util.isObject(f) && (f !== null))
|
||
f = o[field].count;
|
||
return f;
|
||
},
|
||
|
||
sortData: function (panel, field, order) {
|
||
// panel's data
|
||
var panelData = GoAccess.getPanelData(panel).data;
|
||
panelData.sort(function (a, b) {
|
||
var a = this.sortField(a, field);
|
||
var b = this.sortField(b, field);
|
||
|
||
if (typeof a === 'string' && typeof b === 'string')
|
||
return 'asc' == order ? a.localeCompare(b) : b.localeCompare(a);
|
||
return 'asc' == order ? a - b : b - a;
|
||
}.bind(this));
|
||
},
|
||
|
||
setInitSort: function () {
|
||
var ui = GoAccess.getPanelUI();
|
||
for (var panel in ui) {
|
||
if (GoAccess.Util.isPanelValid(panel))
|
||
continue;
|
||
GoAccess.Util.setProp(GoAccess.AppState, panel + '.sort', ui[panel].sort);
|
||
}
|
||
},
|
||
|
||
// Verify if we need to sort panels upon data re-entry
|
||
verifySort: function () {
|
||
var ui = GoAccess.getPanelUI();
|
||
for (var panel in ui) {
|
||
if (GoAccess.Util.isPanelValid(panel))
|
||
continue;
|
||
var sort = GoAccess.Util.getProp(GoAccess.AppState, panel + '.sort');
|
||
// do not sort panels if they still hold the same sort properties
|
||
if (JSON.stringify(sort) === JSON.stringify(ui[panel].sort))
|
||
continue;
|
||
this.sortData(panel, sort.field, sort.order);
|
||
}
|
||
},
|
||
|
||
initDom: function () {
|
||
$('nav').classList.remove('hide');
|
||
$('.container').classList.remove('hide');
|
||
$('.spinner').classList.add('hide');
|
||
|
||
if (GoAccess.AppPrefs['layout'] == 'horizontal') {
|
||
$('.container').classList.add('container-fluid');
|
||
$('.container-fluid').classList.remove('container');
|
||
}
|
||
},
|
||
|
||
renderData: function () {
|
||
this.verifySort();
|
||
GoAccess.OverallStats.initialize();
|
||
|
||
// do not rerender tables/charts if data hasn't changed
|
||
if (!GoAccess.AppState.updated)
|
||
return;
|
||
|
||
GoAccess.Charts.reloadCharts();
|
||
GoAccess.Tables.reloadTables();
|
||
},
|
||
|
||
initialize: function () {
|
||
this.setInitSort();
|
||
this.setTpls();
|
||
GoAccess.Nav.initialize();
|
||
this.initDom();
|
||
GoAccess.OverallStats.initialize();
|
||
GoAccess.Panels.initialize();
|
||
GoAccess.Charts.initialize();
|
||
GoAccess.Tables.initialize();
|
||
},
|
||
};
|
||
|
||
// Init app
|
||
window.onload = function () {
|
||
GoAccess.initialize({
|
||
'uiData': window.user_interface,
|
||
'panelData': window.json_data,
|
||
'wsConnection': window.connection || null,
|
||
'prefs': window.html_prefs || {},
|
||
});
|
||
GoAccess.App.initialize();
|
||
};
|
||
</script><script>/**
|
||
* ______ ___
|
||
* / ____/___ / | _____________ __________
|
||
* / / __/ __ \/ /| |/ ___/ ___/ _ \/ ___/ ___/
|
||
* / /_/ / /_/ / ___ / /__/ /__/ __(__ |__ )
|
||
* \____/\____/_/ |_\___/\___/\___/____/____/
|
||
*
|
||
* The MIT License (MIT)
|
||
* Copyright (c) 2009-2017 Gerardo Orellana <hello @ goaccess.io>
|
||
*/
|
||
|
||
'use strict';
|
||
|
||
// This is faster than calculating the exact length of each label.
|
||
// e.g., getComputedTextLength(), slice()...
|
||
function truncate(text, width) {
|
||
text.each(function () {
|
||
var parent = this.parentNode, $d3parent = d3.select(parent);
|
||
var gw = $d3parent.node().getBBox();
|
||
var x = (Math.min(gw.width, width) / 2) * -1;
|
||
// adjust wrapper <svg> width
|
||
if ('svg' == parent.nodeName)
|
||
$d3parent.attr('width', width).attr('x', x);
|
||
// wrap <text> within an svg
|
||
else {
|
||
$d3parent.insert('svg', function () {
|
||
return this;
|
||
}.bind(this))
|
||
.attr('class', 'wrap-text')
|
||
.attr('width', width)
|
||
.attr('x', x)
|
||
.append(function () {
|
||
return this;
|
||
}.bind(this));
|
||
}
|
||
});
|
||
}
|
||
|
||
function AreaChart(dualYaxis) {
|
||
var opts = {};
|
||
var margin = {
|
||
top : 20,
|
||
right : 50,
|
||
bottom : 40,
|
||
left : 50
|
||
},
|
||
height = 170,
|
||
nTicks = 10,
|
||
padding = 10,
|
||
width = 760;
|
||
var labels = { x: 'Unnamed', y0: 'Unnamed', y1: 'Unnamed' };
|
||
var format = { x: null, y0: null, y1: null};
|
||
|
||
var xValue = function (d) {
|
||
return d[0];
|
||
},
|
||
yValue0 = function (d) {
|
||
return d[1];
|
||
},
|
||
yValue1 = function (d) {
|
||
return d[2];
|
||
};
|
||
|
||
var xScale = d3.scale.ordinal();
|
||
var yScale0 = d3.scale.linear().nice();
|
||
var yScale1 = d3.scale.linear().nice();
|
||
|
||
var xAxis = d3.svg.axis()
|
||
.scale(xScale)
|
||
.orient('bottom')
|
||
.tickFormat(function (d) {
|
||
if (format.x)
|
||
return GoAccess.Util.fmtValue(d, format.x);
|
||
return d;
|
||
});
|
||
|
||
var yAxis0 = d3.svg.axis()
|
||
.scale(yScale0)
|
||
.orient('left')
|
||
.tickFormat(function (d) {
|
||
if (format.y0)
|
||
return GoAccess.Util.fmtValue(d, format.y0);
|
||
return d3.format('.2s')(d);
|
||
});
|
||
|
||
var yAxis1 = d3.svg.axis()
|
||
.scale(yScale1)
|
||
.orient('right')
|
||
.tickFormat(function (d) {
|
||
if (format.y1)
|
||
return GoAccess.Util.fmtValue(d, format.y1);
|
||
return d3.format('.2s')(d);
|
||
});
|
||
|
||
var xGrid = d3.svg.axis()
|
||
.scale(xScale)
|
||
.orient('bottom');
|
||
|
||
var yGrid = d3.svg.axis()
|
||
.scale(yScale0)
|
||
.orient('left');
|
||
|
||
var area0 = d3.svg.area()
|
||
.interpolate('cardinal')
|
||
.x(X)
|
||
.y(Y0);
|
||
var area1 = d3.svg.area()
|
||
.interpolate('cardinal')
|
||
.x(X)
|
||
.y(Y1);
|
||
|
||
var line0 = d3.svg.line()
|
||
.interpolate('cardinal')
|
||
.x(X)
|
||
.y(Y0);
|
||
var line1 = d3.svg.line()
|
||
.interpolate('cardinal')
|
||
.x(X)
|
||
.y(Y1);
|
||
|
||
// The x-accessor for the path generator; xScale ∘ xValue.
|
||
function X(d) {
|
||
return xScale(d[0]);
|
||
}
|
||
|
||
// The x-accessor for the path generator; yScale0 yValue0.
|
||
function Y0(d) {
|
||
return yScale0(d[1]);
|
||
}
|
||
|
||
// The x-accessor for the path generator; yScale0 yValue0.
|
||
function Y1(d) {
|
||
return yScale1(d[2]);
|
||
}
|
||
|
||
function innerW() {
|
||
return width - margin.left - margin.right;
|
||
}
|
||
|
||
function innerH() {
|
||
return height - margin.top - margin.bottom;
|
||
}
|
||
|
||
function getXTicks(data) {
|
||
if (data.length < nTicks)
|
||
return xScale.domain();
|
||
|
||
return d3.range(0, data.length, Math.ceil(data.length / nTicks)).map(function (d) {
|
||
return xScale.domain()[d];
|
||
});
|
||
}
|
||
|
||
function getYTicks(scale) {
|
||
var domain = scale.domain();
|
||
return d3.range(domain[0], domain[1], Math.ceil(domain[1] / nTicks));
|
||
}
|
||
|
||
// Convert data to standard representation greedily;
|
||
// this is needed for nondeterministic accessors.
|
||
function mapData(data) {
|
||
var _datum = function (d, i) {
|
||
var datum = [xValue.call(data, d, i), yValue0.call(data, d, i)];
|
||
dualYaxis && datum.push(yValue1.call(data, d, i));
|
||
return datum;
|
||
};
|
||
return data.map(function (d, i) {
|
||
return _datum(d, i);
|
||
});
|
||
}
|
||
|
||
function updateScales(data) {
|
||
// Update the x-scale.
|
||
xScale.domain(data.map(function (d) {
|
||
return d[0];
|
||
}))
|
||
.rangePoints([0, innerW()], 1);
|
||
|
||
// Update the y-scale.
|
||
yScale0.domain([0, d3.max(data, function (d) {
|
||
return d[1];
|
||
})])
|
||
.range([innerH(), 0]);
|
||
|
||
// Update the y-scale.
|
||
dualYaxis && yScale1.domain([0, d3.max(data, function (d) {
|
||
return d[2];
|
||
})])
|
||
.range([innerH(), 0]);
|
||
}
|
||
|
||
function toggleOpacity(ele, op) {
|
||
d3.select(ele.parentNode).selectAll('.' + (ele.getAttribute('data-yaxis') == 'y0' ? 'y1' : 'y0')).attr('style', op);
|
||
}
|
||
|
||
function setLegendLabels(svg) {
|
||
// Legend Color
|
||
var rect = svg.selectAll('rect.legend.y0').data([null]);
|
||
rect.enter().append('rect')
|
||
.attr('class', 'legend y0')
|
||
.attr('data-yaxis', 'y0')
|
||
.on('mousemove', function (d, i) { toggleOpacity(this, 'opacity:0.1'); })
|
||
.on('mouseleave', function (d, i) { toggleOpacity(this, null); })
|
||
.attr('y', (height - 15));
|
||
rect
|
||
.attr('x', (width / 2) - 100);
|
||
|
||
// Legend Labels
|
||
var text = svg.selectAll('text.legend.y0').data([null]);
|
||
text.enter().append('text')
|
||
.attr('class', 'legend y0')
|
||
.attr('data-yaxis', 'y0')
|
||
.on('mousemove', function (d, i) { toggleOpacity(this, 'opacity:0.1'); })
|
||
.on('mouseleave', function (d, i) { toggleOpacity(this, null); })
|
||
.attr('y', (height - 6));
|
||
text
|
||
.attr('x', (width / 2) - 85)
|
||
.text(labels.y0);
|
||
|
||
if (!dualYaxis)
|
||
return;
|
||
|
||
// Legend Labels
|
||
rect = svg.selectAll('rect.legend.y1').data([null]);
|
||
rect.enter().append('rect')
|
||
.attr('class', 'legend y1')
|
||
.attr('data-yaxis', 'y1')
|
||
.on('mousemove', function (d, i) { toggleOpacity(this, 'opacity:0.1'); })
|
||
.on('mouseleave', function (d, i) { toggleOpacity(this, null); })
|
||
.attr('y', (height - 15));
|
||
rect
|
||
.attr('x', (width / 2));
|
||
|
||
// Legend Labels
|
||
text = svg.selectAll('text.legend.y1').data([null]);
|
||
text.enter().append('text')
|
||
.attr('class', 'legend y1')
|
||
.attr('data-yaxis', 'y1')
|
||
.on('mousemove', function (d, i) { toggleOpacity(this, 'opacity:0.1'); })
|
||
.on('mouseleave', function (d, i) { toggleOpacity(this, null); })
|
||
.attr('y', (height - 6));
|
||
text
|
||
.attr('x', (width / 2) + 15)
|
||
.text(labels.y1);
|
||
}
|
||
|
||
function setAxisLabels(svg) {
|
||
// Labels
|
||
svg.selectAll('text.axis-label.y0').data([null])
|
||
.enter().append('text')
|
||
.attr('class', 'axis-label y0')
|
||
.attr('y', 10)
|
||
.attr('x', 50)
|
||
.text(labels.y0);
|
||
|
||
if (!dualYaxis)
|
||
return;
|
||
|
||
// Labels
|
||
var tEnter = svg.selectAll('text.axis-label.y1').data([null]);
|
||
tEnter.enter().append('text')
|
||
.attr('class', 'axis-label y1')
|
||
.attr('y', 10)
|
||
.text(labels.y1);
|
||
dualYaxis && tEnter
|
||
.attr('x', width - 25)
|
||
}
|
||
|
||
function createSkeleton(svg) {
|
||
// Otherwise, create the skeletal chart.
|
||
var gEnter = svg.enter().append('svg').append('g');
|
||
|
||
// Lines
|
||
gEnter.append('g')
|
||
.attr('class', 'line line0 y0');
|
||
dualYaxis && gEnter.append('g')
|
||
.attr('class', 'line line1 y1');
|
||
|
||
// Areas
|
||
gEnter.append('g')
|
||
.attr('class', 'area area0 y0');
|
||
dualYaxis && gEnter.append('g')
|
||
.attr('class', 'area area1 y1');
|
||
|
||
// Points
|
||
gEnter.append('g')
|
||
.attr('class', 'points y0');
|
||
dualYaxis && gEnter.append('g')
|
||
.attr('class', 'points y1');
|
||
|
||
// Grid
|
||
gEnter.append('g')
|
||
.attr('class', 'x grid');
|
||
gEnter.append('g')
|
||
.attr('class', 'y grid');
|
||
|
||
// Axis
|
||
gEnter.append('g')
|
||
.attr('class', 'x axis');
|
||
gEnter.append('g')
|
||
.attr('class', 'y0 axis');
|
||
dualYaxis && gEnter.append('g')
|
||
.attr('class', 'y1 axis');
|
||
|
||
// Rects
|
||
gEnter.append('g')
|
||
.attr('class', 'rects');
|
||
|
||
setAxisLabels(svg);
|
||
setLegendLabels(svg);
|
||
|
||
// Mouseover line
|
||
gEnter.append('line')
|
||
.attr('y2', innerH())
|
||
.attr('y1', 0)
|
||
.attr('class', 'indicator');
|
||
}
|
||
|
||
function pathLen(d) {
|
||
return d.node().getTotalLength();
|
||
}
|
||
|
||
function addLine(g, data, line, cName) {
|
||
// Update the line path.
|
||
var path = g.select('g.' + cName).selectAll('path.' + cName)
|
||
.data([data]);
|
||
// enter
|
||
path
|
||
.enter()
|
||
.append('svg:path')
|
||
.attr('d', line)
|
||
.attr('class', cName)
|
||
.attr('stroke-dasharray', function (d) {
|
||
var pl = pathLen(d3.select(this));
|
||
return pl + ' ' + pl;
|
||
})
|
||
.attr('stroke-dashoffset', function (d) {
|
||
return pathLen(d3.select(this))
|
||
});
|
||
// update
|
||
path
|
||
.attr('d', line)
|
||
.transition()
|
||
.attr('stroke-dasharray', function (d) {
|
||
var pl = pathLen(d3.select(this));
|
||
return pl + ' ' + pl;
|
||
})
|
||
.duration(2000)
|
||
.attr('stroke-dashoffset', 0);
|
||
// remove elements
|
||
path.exit().remove();
|
||
}
|
||
|
||
function addArea(g, data, cb, cName) {
|
||
// Update the area path.
|
||
var area = g.select('g.' + cName).selectAll('path.' + cName)
|
||
.data([data]);
|
||
area
|
||
.enter()
|
||
.append('svg:path')
|
||
.attr('class', cName);
|
||
area
|
||
.attr('d', cb);
|
||
// remove elements
|
||
area.exit().remove();
|
||
}
|
||
|
||
// Update the area path and lines.
|
||
function addAreaLines(g, data) {
|
||
// Update the area path.
|
||
addArea(g, data, area0.y0(yScale0.range()[0]), 'area0');
|
||
// Update the line path.
|
||
addLine(g, data, line0, 'line0');
|
||
// Update the area path.
|
||
addArea(g, data, area1.y1(yScale1.range()[0]), 'area1');
|
||
// Update the line path.
|
||
addLine(g, data, line1, 'line1');
|
||
}
|
||
|
||
// Update chart points
|
||
function addPoints(g, data) {
|
||
var radius = data.length > 100 ? 1 : 2.5;
|
||
|
||
var points = g.select('g.points.y0').selectAll('circle.point')
|
||
.data(data);
|
||
points
|
||
.enter()
|
||
.append('svg:circle')
|
||
.attr('r', radius)
|
||
.attr('class', 'point');
|
||
points
|
||
.attr('cx', function (d) { return xScale(d[0]) })
|
||
.attr('cy', function (d) { return yScale0(d[1]) })
|
||
// remove elements
|
||
points.exit().remove();
|
||
|
||
if (!dualYaxis)
|
||
return;
|
||
|
||
points = g.select('g.points.y1').selectAll('circle.point')
|
||
.data(data);
|
||
points
|
||
.enter()
|
||
.append('svg:circle')
|
||
.attr('r', radius)
|
||
.attr('class', 'point');
|
||
points
|
||
.attr('cx', function (d) { return xScale(d[0]) })
|
||
.attr('cy', function (d) { return yScale1(d[2]) })
|
||
// remove elements
|
||
points.exit().remove();
|
||
}
|
||
|
||
function addAxis(g, data) {
|
||
var xTicks = getXTicks(data);
|
||
var tickDistance = xTicks.length > 1 ? (xScale(xTicks[1]) - xScale(xTicks[0])) : innerW();
|
||
var labelW = tickDistance - padding;
|
||
|
||
// Update the x-axis.
|
||
g.select('.x.axis')
|
||
.attr('transform', 'translate(0,' + yScale0.range()[0] + ')')
|
||
.call(xAxis.tickValues(xTicks))
|
||
.selectAll(".tick text")
|
||
.call(truncate, labelW > 0 ? labelW : innerW());
|
||
|
||
// Update the y0-axis.
|
||
g.select('.y0.axis')
|
||
.call(yAxis0.tickValues(getYTicks(yScale0)) );
|
||
|
||
if (!dualYaxis)
|
||
return;
|
||
|
||
// Update the y1-axis.
|
||
g.select('.y1.axis')
|
||
.attr('transform', 'translate(' + innerW() + ', 0)')
|
||
.call(yAxis1.tickValues(getYTicks(yScale1)));
|
||
}
|
||
|
||
// Update the X-Y grid.
|
||
function addGrid(g, data) {
|
||
g.select('.x.grid')
|
||
.attr('transform', 'translate(0,' + yScale0.range()[0] + ')')
|
||
.call(xGrid
|
||
.tickValues(getXTicks(data))
|
||
.tickSize(-innerH(), 0, 0)
|
||
.tickFormat('')
|
||
);
|
||
|
||
g.select('.y.grid')
|
||
.call(yGrid
|
||
.tickValues(getYTicks(yScale0))
|
||
.tickSize(-innerW(), 0, 0)
|
||
.tickFormat('')
|
||
);
|
||
}
|
||
|
||
function formatTooltip(data, i) {
|
||
var d = data.slice(0);
|
||
|
||
d[0] = (format.x) ? GoAccess.Util.fmtValue(d[0], format.x) : d[0];
|
||
d[1] = (format.y0) ? GoAccess.Util.fmtValue(d[1], format.y0) : d3.format(',')(d[1]);
|
||
dualYaxis && (d[2] = (format.y1) ? GoAccess.Util.fmtValue(d[2], format.y1) : d3.format(',')(d[2]));
|
||
|
||
var template = d3.select('#tpl-chart-tooltip').html();
|
||
return Hogan.compile(template).render({
|
||
'data': d
|
||
});
|
||
}
|
||
|
||
function mouseover(_self, selection, data, idx) {
|
||
var tooltip = selection.select('.chart-tooltip-wrap');
|
||
tooltip.html(formatTooltip(data, idx))
|
||
.style('left', (xScale(data[0])) + 'px')
|
||
.style('top', (d3.mouse(_self)[1] + 10) + 'px')
|
||
.style('display', 'block');
|
||
|
||
selection.select('line.indicator')
|
||
.style('display', 'block')
|
||
.attr('transform', 'translate(' + xScale(data[0]) + ',' + 0 + ')');
|
||
}
|
||
|
||
function mouseout(selection, g) {
|
||
var tooltip = selection.select('.chart-tooltip-wrap');
|
||
tooltip.style('display', 'none');
|
||
|
||
g.select('line.indicator').style('display', 'none');
|
||
}
|
||
|
||
function addRects(selection, g, data) {
|
||
var w = (innerW() / data.length);
|
||
|
||
var rects = g.select('g.rects').selectAll('rect')
|
||
.data(data);
|
||
rects
|
||
.enter()
|
||
.append('svg:rect')
|
||
.attr('height', innerH())
|
||
.attr('class', 'point');
|
||
rects
|
||
.attr('width', d3.functor(w))
|
||
.attr('x', function (d, i) { return (w * i); })
|
||
.attr('y', 0)
|
||
.on('mousemove', function (d, i) {
|
||
mouseover(this, selection, d, i);
|
||
})
|
||
.on('mouseleave', function (d, i) {
|
||
mouseout(selection, g);
|
||
});
|
||
// remove elements
|
||
rects.exit().remove();
|
||
}
|
||
|
||
function chart(selection) {
|
||
selection.each(function (data) {
|
||
// normalize data
|
||
data = mapData(data);
|
||
// updates X-Y scales
|
||
updateScales(data);
|
||
|
||
// Select the svg element, if it exists.
|
||
var svg = d3.select(this).selectAll('svg').data([data]);
|
||
createSkeleton(svg);
|
||
|
||
// Update the outer dimensions.
|
||
svg.attr({
|
||
'width': width,
|
||
'height': height
|
||
});
|
||
|
||
// Update the inner dimensions.
|
||
var g = svg.select('g')
|
||
.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
|
||
|
||
// Add grid
|
||
addGrid(g, data);
|
||
// Add chart lines and areas
|
||
addAreaLines(g, data);
|
||
// Add chart points
|
||
addPoints(g, data);
|
||
// Add axis
|
||
addAxis(g, data);
|
||
// Add rects
|
||
addRects(selection, g, data);
|
||
});
|
||
}
|
||
|
||
chart.opts = function (_) {
|
||
if (!arguments.length) return opts;
|
||
opts = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.format = function (_) {
|
||
if (!arguments.length) return format;
|
||
format = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.labels = function (_) {
|
||
if (!arguments.length) return labels;
|
||
labels = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.margin = function (_) {
|
||
if (!arguments.length) return margin;
|
||
margin = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.width = function (_) {
|
||
if (!arguments.length) return width;
|
||
width = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.height = function (_) {
|
||
if (!arguments.length) return height;
|
||
height = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.x = function (_) {
|
||
if (!arguments.length) return xValue;
|
||
xValue = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.y0 = function (_) {
|
||
if (!arguments.length) return yValue0;
|
||
yValue0 = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.y1 = function (_) {
|
||
if (!arguments.length) return yValue1;
|
||
yValue1 = _;
|
||
return chart;
|
||
};
|
||
|
||
return chart;
|
||
}
|
||
|
||
function BarChart(dualYaxis) {
|
||
var opts = {};
|
||
var margin = {
|
||
top : 20,
|
||
right : 50,
|
||
bottom : 40,
|
||
left : 50
|
||
},
|
||
height = 170,
|
||
nTicks = 10,
|
||
padding = 10,
|
||
width = 760;
|
||
var labels = { x: 'Unnamed', y0: 'Unnamed', y1: 'Unnamed' };
|
||
var format = { x: null, y0: null, y1: null};
|
||
|
||
var xValue = function (d) {
|
||
return d[0];
|
||
},
|
||
yValue0 = function (d) {
|
||
return d[1];
|
||
},
|
||
yValue1 = function (d) {
|
||
return d[2];
|
||
};
|
||
|
||
var xScale = d3.scale.ordinal();
|
||
var yScale0 = d3.scale.linear().nice();
|
||
var yScale1 = d3.scale.linear().nice();
|
||
|
||
var xAxis = d3.svg.axis()
|
||
.scale(xScale)
|
||
.orient('bottom')
|
||
.tickFormat(function (d) {
|
||
if (format.x)
|
||
return GoAccess.Util.fmtValue(d, format.x);
|
||
return d;
|
||
});
|
||
|
||
var yAxis0 = d3.svg.axis()
|
||
.scale(yScale0)
|
||
.orient('left')
|
||
.tickFormat(function (d) {
|
||
if (format.y1)
|
||
return GoAccess.Util.fmtValue(d, format.y1);
|
||
return d3.format('.2s')(d);
|
||
});
|
||
|
||
var yAxis1 = d3.svg.axis()
|
||
.scale(yScale1)
|
||
.orient('right')
|
||
.tickFormat(function (d) {
|
||
if (format.y1)
|
||
return GoAccess.Util.fmtValue(d, format.y1);
|
||
return d3.format('.2s')(d);
|
||
});
|
||
|
||
var xGrid = d3.svg.axis()
|
||
.scale(xScale)
|
||
.orient('bottom');
|
||
|
||
var yGrid = d3.svg.axis()
|
||
.scale(yScale0)
|
||
.orient('left');
|
||
|
||
function innerW() {
|
||
return width - margin.left - margin.right;
|
||
}
|
||
|
||
function innerH() {
|
||
return height - margin.top - margin.bottom;
|
||
}
|
||
|
||
function getXTicks(data) {
|
||
if (data.length < nTicks)
|
||
return xScale.domain();
|
||
|
||
return d3.range(0, data.length, Math.ceil(data.length / nTicks)).map(function (d) {
|
||
return xScale.domain()[d];
|
||
});
|
||
}
|
||
|
||
function getYTicks(scale) {
|
||
var domain = scale.domain();
|
||
return d3.range(domain[0], domain[1], Math.ceil(domain[1] / nTicks));
|
||
}
|
||
|
||
// Convert data to standard representation greedily;
|
||
// this is needed for nondeterministic accessors.
|
||
function mapData(data) {
|
||
var _datum = function (d, i) {
|
||
var datum = [xValue.call(data, d, i), yValue0.call(data, d, i)];
|
||
dualYaxis && datum.push(yValue1.call(data, d, i));
|
||
return datum;
|
||
};
|
||
return data.map(function (d, i) {
|
||
return _datum(d, i);
|
||
});
|
||
}
|
||
|
||
function updateScales(data) {
|
||
// Update the x-scale.
|
||
xScale.domain(data.map(function (d) {
|
||
return d[0];
|
||
}))
|
||
.rangeBands([0, innerW()], .1);
|
||
|
||
// Update the y-scale.
|
||
yScale0.domain([0, d3.max(data, function (d) {
|
||
return d[1];
|
||
})])
|
||
.range([innerH(), 0]);
|
||
|
||
// Update the y-scale.
|
||
dualYaxis && yScale1.domain([0, d3.max(data, function (d) {
|
||
return d[2];
|
||
})])
|
||
.range([innerH(), 0]);
|
||
}
|
||
|
||
function toggleOpacity(ele, op) {
|
||
d3.select(ele.parentNode).selectAll('.' + (ele.getAttribute('data-yaxis') == 'y0' ? 'y1' : 'y0')).attr('style', op);
|
||
}
|
||
|
||
function setLegendLabels(svg) {
|
||
// Legend Color
|
||
var rect = svg.selectAll('rect.legend.y0').data([null]);
|
||
rect.enter().append('rect')
|
||
.attr('class', 'legend y0')
|
||
.attr('data-yaxis', 'y0')
|
||
.on('mousemove', function (d, i) { toggleOpacity(this, 'opacity:0.1'); })
|
||
.on('mouseleave', function (d, i) { toggleOpacity(this, null); })
|
||
.attr('y', (height - 15));
|
||
rect
|
||
.attr('x', (width / 2) - 100);
|
||
|
||
// Legend Labels
|
||
var text = svg.selectAll('text.legend.y0').data([null]);
|
||
text.enter().append('text')
|
||
.attr('class', 'legend y0')
|
||
.attr('data-yaxis', 'y0')
|
||
.on('mousemove', function (d, i) { toggleOpacity(this, 'opacity:0.1'); })
|
||
.on('mouseleave', function (d, i) { toggleOpacity(this, null); })
|
||
.attr('y', (height - 6));
|
||
text
|
||
.attr('x', (width / 2) - 85)
|
||
.text(labels.y0);
|
||
|
||
if (!dualYaxis)
|
||
return;
|
||
|
||
// Legend Labels
|
||
rect = svg.selectAll('rect.legend.y1').data([null]);
|
||
rect.enter().append('rect')
|
||
.attr('class', 'legend y1')
|
||
.attr('data-yaxis', 'y1')
|
||
.on('mousemove', function (d, i) { toggleOpacity(this, 'opacity:0.1'); })
|
||
.on('mouseleave', function (d, i) { toggleOpacity(this, null); })
|
||
.attr('y', (height - 15));
|
||
rect
|
||
.attr('x', (width / 2));
|
||
|
||
// Legend Labels
|
||
text = svg.selectAll('text.legend.y1').data([null]);
|
||
text.enter().append('text')
|
||
.attr('class', 'legend y1')
|
||
.attr('data-yaxis', 'y1')
|
||
.on('mousemove', function (d, i) { toggleOpacity(this, 'opacity:0.1'); })
|
||
.on('mouseleave', function (d, i) { toggleOpacity(this, null); })
|
||
.attr('y', (height - 6));
|
||
text
|
||
.attr('x', (width / 2) + 15)
|
||
.text(labels.y1);
|
||
}
|
||
|
||
function setAxisLabels(svg) {
|
||
// Labels
|
||
svg.selectAll('text.axis-label.y0').data([null])
|
||
.enter().append('text')
|
||
.attr('class', 'axis-label y0')
|
||
.attr('y', 10)
|
||
.attr('x', 50)
|
||
.text(labels.y0);
|
||
|
||
if (!dualYaxis)
|
||
return;
|
||
|
||
// Labels
|
||
var tEnter = svg.selectAll('text.axis-label.y1').data([null]);
|
||
tEnter.enter().append('text')
|
||
.attr('class', 'axis-label y1')
|
||
.attr('y', 10)
|
||
.text(labels.y1);
|
||
dualYaxis && tEnter
|
||
.attr('x', width - 25)
|
||
}
|
||
|
||
function createSkeleton(svg) {
|
||
// Otherwise, create the skeletal chart.
|
||
var gEnter = svg.enter().append('svg').append('g');
|
||
|
||
// Grid
|
||
gEnter.append('g')
|
||
.attr('class', 'x grid');
|
||
gEnter.append('g')
|
||
.attr('class', 'y grid');
|
||
|
||
// Axis
|
||
gEnter.append('g')
|
||
.attr('class', 'x axis');
|
||
gEnter.append('g')
|
||
.attr('class', 'y0 axis');
|
||
dualYaxis && gEnter.append('g')
|
||
.attr('class', 'y1 axis');
|
||
|
||
// Bars
|
||
gEnter.append('g')
|
||
.attr('class', 'bars y0');
|
||
dualYaxis && gEnter.append('g')
|
||
.attr('class', 'bars y1');
|
||
|
||
// Rects
|
||
gEnter.append('g')
|
||
.attr('class', 'rects');
|
||
|
||
setAxisLabels(svg);
|
||
setLegendLabels(svg);
|
||
|
||
// Mouseover line
|
||
gEnter.append('line')
|
||
.attr('y2', innerH())
|
||
.attr('y1', 0)
|
||
.attr('class', 'indicator');
|
||
}
|
||
|
||
// Update the area path and lines.
|
||
function addBars(g, data) {
|
||
var bars = g.select('g.bars.y0').selectAll('rect.bar')
|
||
.data(data);
|
||
// enter
|
||
bars
|
||
.enter()
|
||
.append('svg:rect')
|
||
.attr('class', 'bar')
|
||
.attr('height', 0)
|
||
.attr('width', function (d, i) { return xScale.rangeBand() / 2; })
|
||
.attr('x', function (d, i) { return xScale(d[0]); })
|
||
.attr('y', function (d, i) { return innerH(); });
|
||
// update
|
||
bars
|
||
.attr('width', xScale.rangeBand() / 2)
|
||
.attr('x', function (d) { return xScale(d[0]) })
|
||
.transition()
|
||
.delay(function (d, i) { return i / data.length * 1000; })
|
||
.duration(500)
|
||
.attr('height', function (d, i) { return innerH() - yScale0(d[1]); })
|
||
.attr('y', function (d, i) { return yScale0(d[1]); });
|
||
// remove elements
|
||
bars.exit().remove();
|
||
|
||
if (!dualYaxis)
|
||
return;
|
||
|
||
var bars = g.select('g.bars.y1').selectAll('rect.bar')
|
||
.data(data);
|
||
// enter
|
||
bars
|
||
.enter()
|
||
.append('svg:rect')
|
||
.attr('class', 'bar')
|
||
.attr('height', 0)
|
||
.attr('width', function (d, i) { return xScale.rangeBand() / 2; })
|
||
.attr('x', function (d) { return (xScale(d[0]) + xScale.rangeBand() / 2) })
|
||
.attr('y', function (d, i) { return innerH(); });
|
||
// update
|
||
bars
|
||
.attr('width', xScale.rangeBand() / 2)
|
||
.attr('x', function (d) { return (xScale(d[0]) + xScale.rangeBand() / 2) })
|
||
.transition()
|
||
.delay(function (d, i) { return i / data.length * 1000; })
|
||
.duration(500)
|
||
.attr('height', function (d, i) { return innerH() - yScale1(d[2]); })
|
||
.attr('y', function (d, i) { return yScale1(d[2]); });
|
||
// remove elements
|
||
bars.exit().remove();
|
||
}
|
||
|
||
function addAxis(g, data) {
|
||
var xTicks = getXTicks(data);
|
||
var tickDistance = xTicks.length > 1 ? (xScale(xTicks[1]) - xScale(xTicks[0])) : innerW();
|
||
var labelW = tickDistance - padding;
|
||
|
||
// Update the x-axis.
|
||
g.select('.x.axis')
|
||
.attr('transform', 'translate(0,' + yScale0.range()[0] + ')')
|
||
.call(xAxis.tickValues(xTicks))
|
||
.selectAll(".tick text")
|
||
.call(truncate, labelW > 0 ? labelW : innerW());
|
||
|
||
// Update the y0-axis.
|
||
g.select('.y0.axis')
|
||
.call(yAxis0.tickValues(getYTicks(yScale0)));
|
||
|
||
if (!dualYaxis)
|
||
return;
|
||
|
||
// Update the y1-axis.
|
||
g.select('.y1.axis')
|
||
.attr('transform', 'translate(' + innerW() + ', 0)')
|
||
.call(yAxis1.tickValues(getYTicks(yScale1)));
|
||
}
|
||
|
||
// Update the X-Y grid.
|
||
function addGrid(g, data) {
|
||
g.select('.x.grid')
|
||
.attr('transform', 'translate(0,' + yScale0.range()[0] + ')')
|
||
.call(xGrid
|
||
.tickValues(getXTicks(data))
|
||
.tickSize(-innerH(), 0, 0)
|
||
.tickFormat('')
|
||
);
|
||
|
||
g.select('.y.grid')
|
||
.call(yGrid
|
||
.tickValues(getYTicks(yScale0))
|
||
.tickSize(-innerW(), 0, 0)
|
||
.tickFormat('')
|
||
);
|
||
}
|
||
|
||
function formatTooltip(data, i) {
|
||
var d = data.slice(0);
|
||
|
||
d[0] = (format.x) ? GoAccess.Util.fmtValue(d[0], format.x) : d[0];
|
||
d[1] = (format.y0) ? GoAccess.Util.fmtValue(d[1], format.y0) : d3.format(',')(d[1]);
|
||
dualYaxis && (d[2] = (format.y1) ? GoAccess.Util.fmtValue(d[2], format.y1) : d3.format(',')(d[2]));
|
||
|
||
var template = d3.select('#tpl-chart-tooltip').html();
|
||
return Hogan.compile(template).render({
|
||
'data': d
|
||
});
|
||
}
|
||
|
||
function mouseover(_self, selection, data, idx) {
|
||
var left = xScale(data[0]) + (xScale.rangeBand() / 2);
|
||
var tooltip = selection.select('.chart-tooltip-wrap');
|
||
tooltip.html(formatTooltip(data, idx))
|
||
.style('left', left + 'px')
|
||
.style('top', (d3.mouse(_self)[1] + 10) + 'px')
|
||
.style('display', 'block');
|
||
|
||
selection.select('line.indicator')
|
||
.style('display', 'block')
|
||
.attr('transform', 'translate(' + left + ',' + 0 + ')');
|
||
}
|
||
|
||
function mouseout(selection, g) {
|
||
var tooltip = selection.select('.chart-tooltip-wrap');
|
||
tooltip.style('display', 'none');
|
||
|
||
g.select('line.indicator').style('display', 'none');
|
||
}
|
||
|
||
function addRects(selection, g, data) {
|
||
var w = (innerW() / data.length);
|
||
|
||
var rects = g.select('g.rects').selectAll('rect')
|
||
.data(data);
|
||
rects
|
||
.enter()
|
||
.append('svg:rect')
|
||
.attr('height', innerH())
|
||
.attr('class', 'point');
|
||
rects
|
||
.attr('width', d3.functor(w))
|
||
.attr('x', function (d, i) { return (w * i); })
|
||
.attr('y', 0)
|
||
.on('mousemove', function (d, i) {
|
||
mouseover(this, selection, d, i);
|
||
})
|
||
.on('mouseleave', function (d, i) {
|
||
mouseout(selection, g);
|
||
});
|
||
// remove elements
|
||
rects.exit().remove();
|
||
}
|
||
|
||
function chart(selection) {
|
||
selection.each(function (data) {
|
||
// normalize data
|
||
data = mapData(data);
|
||
// updates X-Y scales
|
||
updateScales(data);
|
||
|
||
// Select the svg element, if it exists.
|
||
var svg = d3.select(this).selectAll('svg').data([data]);
|
||
createSkeleton(svg);
|
||
|
||
// Update the outer dimensions.
|
||
svg.attr({
|
||
'width': width,
|
||
'height': height
|
||
});
|
||
|
||
// Update the inner dimensions.
|
||
var g = svg.select('g')
|
||
.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
|
||
|
||
// Add grid
|
||
addGrid(g, data);
|
||
// Add axis
|
||
addAxis(g, data);
|
||
// Add chart lines and areas
|
||
addBars(g, data);
|
||
// Add rects
|
||
addRects(selection, g, data);
|
||
});
|
||
}
|
||
|
||
chart.opts = function (_) {
|
||
if (!arguments.length) return opts;
|
||
opts = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.format = function (_) {
|
||
if (!arguments.length) return format;
|
||
format = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.labels = function (_) {
|
||
if (!arguments.length) return labels;
|
||
labels = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.width = function (_) {
|
||
if (!arguments.length) return width;
|
||
width = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.height = function (_) {
|
||
if (!arguments.length) return height;
|
||
height = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.x = function (_) {
|
||
if (!arguments.length) return xValue;
|
||
xValue = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.y0 = function (_) {
|
||
if (!arguments.length) return yValue0;
|
||
yValue0 = _;
|
||
return chart;
|
||
};
|
||
|
||
chart.y1 = function (_) {
|
||
if (!arguments.length) return yValue1;
|
||
yValue1 = _;
|
||
return chart;
|
||
};
|
||
|
||
return chart;
|
||
}
|
||
</script></body></html> |